我有一个简单的 cuda 内核(添加两个大小为 N 的向量),非常类似于请访问此处的 cuda 博客。我只改变了几件事,例如对各种样本进行测量。因此,让它运行 1000 次,然后将测量结果写入 txt。如果我现在绘制将矢量传输到设备的测量结果,我会得到以下结果:
现在,如果我们看一下以垂直误差线绘制的标准差,那么应该很清楚,出于某种原因,数据移动波动会随大小而变化,因为误差线在对数对数图中是恒定的。当仅绘制标准差时,可以验证这一点
如果我从CUDA博客,然后我每运行 10 次左右也会得到带宽波动。这是从哪里来的?我在两个不同的 GPU(V100 和 RTX2080)上观察到了相同的行为。很抱歉给您带来图像方面的不便,但我没有足够的声誉点。
答案1
作为一个nvidia dev 论坛用户建议我尝试使用固定内存代替非固定内存,效果非常好。波动几乎完全消失了。