小编jun*_*007的帖子

为什么我的 CUDA 内核执行时间会随着连续启动而增加?

我正在使用 CUDA 制作应用程序原型。我一直在针对 CPU 进行基准测试,并注意到一些可变的运行时间。我决定从命令行循环运行我的应用程序,这样我就可以收集一些更好的统计数据。我运行该应用程序 50 次并记录结果。我非常惊讶地发现内核运行时间随着启动次数的增加而增加。

GPU 内核时间随运行次数增加

这是一个片段,您可以看到正在计时的代码部分:

int nblocks = (int)ceil((float)n / (float)NUM_THREADS);

gpuErrchk(cudaEventRecord(start, 0));
gpuperfkernel << <nblocks, NUM_THREADS >> >(dmetadata, ddatax, ddatay);
gpuErrchk(cudaPeekAtLastError());
gpuErrchk(cudaDeviceSynchronize());
gpuErrchk(cudaEventRecord(stop, 0));
gpuErrchk(cudaEventSynchronize(stop));

gpuErrchk(cudaEventElapsedTime(&milliseconds, start, stop));
printf("GPU kernel took %f milliseconds.\n", milliseconds);
gpuelapsed += milliseconds;
Run Code Online (Sandbox Code Playgroud)

我经常使用 CUDA,但以前从未见过这种行为。想知道是否有人注意到这一点?我的平台是Windows 10、CUDA 7.5、MSI笔记本、GeForce 970m。

因为我使用的是笔记本电脑,所以我认为这可能是与电源相关的设置或类似的设置,但我已将所有内容设置为高性能并禁用了屏幕保护程序。

performance benchmarking cuda

4
推荐指数
1
解决办法
862
查看次数

标签 统计

benchmarking ×1

cuda ×1

performance ×1