gpt4 book ai didi

cuda - 使用 Mathematica CUDADot 时提高 GPU 的利用率?

转载 作者:行者123 更新时间:2023-12-02 03:50:13 25 4
gpt4 key购买 nike

我最近开始将 Mathematica 的 CUDALink 与 GT430 结合使用,并且正在使用 CUDADot 将 150000x1038 矩阵 (encs) 乘以 1038x1 矩阵(探针)。 encs 和 probe 都注册到内存管理器:

mmEncs = CUDAMemoryLoad[encs];
mmProbe = CUDAMemoryLoad[probe];

我认为这些的点积会使 GT430 达到最大值,因此我使用以下方法进行了测试:

For[i = 0, i < 10, i++,
CUDADot[mmEncs, mmProbe];
]

在它运行时,我使用 MSI 的“Afterburner”实用程序来监控 GPU 使用情况。以下屏幕截图显示了结果:

enter image description here

每个 CUDADot 操作都有一个明显的峰值,总的来说,我想说这张图片表明我使用的 GPU 容量不到 1/4。两个问题:

问题 1:为什么峰值最大为 50%?看起来很低。

问题 2:为什么峰值之间有如此显着的不活动期?

提前感谢您的任何提示!我不知道 w.r.t. Q1 但也许 Q2 是因为主机和设备之间的意外内存传输?

自原始发布后的附加信息:CUDAInformation[] 报告“Core Count -> 64”,但 NVIDIA Control Panel 报告“CUDA Cores: 96”。如果 CUDALink 在错误假设其具有 64 个内核的情况下运行,是否有可能未充分利用 GT430?

最佳答案

我将通过指出我不知道“MSI Afterburner”真正测量的是什么,或者它以什么频率对它测量的数量进行采样来作为这个答案的序言,我相信你也不知道。这意味着我们不知道屏幕截图中 x 轴或 y 轴的单位是什么。这使得几乎不可能对性能进行任何量化。

1.为什么峰值最大为 50%?看起来很低。

如果您不知道它真正测量的是什么,我不相信您可以说它“看起来很低”。例如,如果它测量指令吞吐量,则可能是 Mathematica 点内核在您的设备上限制了内存带宽。这意味着代码的吞吐量瓶颈将是内存带宽,而不是 SM 指令吞吐量。如果要绘制内存吞吐量,您会看到 100%。我希望 gemv 操作受内存带宽限制,所以这个结果可能并不令人惊讶。

2.为什么峰值之间有如此重要的不活动期?

CUDA API 具有设备和主机端延迟。在 WDDM 平台(因此 Windows Vist、7、8 以及从它们派生的任何服务器版本)上,此主机端延迟相当高,CUDA 驱动程序执行批处理操作以帮助分摊延迟。这种批处理会导致 GPU 操作出现“间隙”或“暂停”。我想这就是你在这里看到的。 NVIDIA 在 Windows 平台上为 Telsa 卡提供专用计算驱动程序 (TCC) 以克服这些限制。

评估此操作性能的更好方法是自己对循环计时,计算每次调用的平均时间,计算操作计数(点积具有已知的下限,您可以从矩阵和向量),并计算一个 FLOP/s 值。您可以将其与 GPU 的规范进行比较,以了解它的性能好坏。

关于cuda - 使用 Mathematica CUDADot 时提高 GPU 的利用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com