为什么我的 CUDA 内核执行时间会随着连续启动而增加?
Why does my CUDA kernel execution time increase with successive launches?
我正在使用 CUDA 制作应用程序原型。我一直在根据 CPU 对其进行基准测试,并注意到一些变量 运行 次。我决定从命令行 运行 我的应用程序循环,这样我就可以收集一些更好的统计数据。我运行应用了50次并记录了结果。我很惊讶地看到经过的内核时间随着启动次数的增加而增加。
这是一个片段,因此您可以看到正在计时的代码部分:
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;
我经常使用 CUDA,但以前从未见过这种行为。想知道是否有人注意到这一点?我的平台是Windows10,CUDA 7.5,微星笔记本,GeForce 970m。
因为我使用的是笔记本电脑,我认为这可能是与电源相关的设置或类似设置,但我已将所有设置设置为高性能并禁用了屏幕保护程序。
GeForce 970m 具有加速时钟。 运行 在 运行 之后,您的 GPU 温度升高,很可能当温度升高时,提升不太可能达到最高水平。
您可以使用 nvidia-smi
监控 GPU 温度。还有一个监控API。如果您想验证这一点,您的提升设置在某种程度上也应该可以在 nvidia-smi
中配置。
要通过 nvidia-smi
禁用自动提升,请使用此命令:
sudo nvidia-smi --auto-boost-default=DISABLED
我正在使用 CUDA 制作应用程序原型。我一直在根据 CPU 对其进行基准测试,并注意到一些变量 运行 次。我决定从命令行 运行 我的应用程序循环,这样我就可以收集一些更好的统计数据。我运行应用了50次并记录了结果。我很惊讶地看到经过的内核时间随着启动次数的增加而增加。
这是一个片段,因此您可以看到正在计时的代码部分:
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;
我经常使用 CUDA,但以前从未见过这种行为。想知道是否有人注意到这一点?我的平台是Windows10,CUDA 7.5,微星笔记本,GeForce 970m。
因为我使用的是笔记本电脑,我认为这可能是与电源相关的设置或类似设置,但我已将所有设置设置为高性能并禁用了屏幕保护程序。
GeForce 970m 具有加速时钟。 运行 在 运行 之后,您的 GPU 温度升高,很可能当温度升高时,提升不太可能达到最高水平。
您可以使用 nvidia-smi
监控 GPU 温度。还有一个监控API。如果您想验证这一点,您的提升设置在某种程度上也应该可以在 nvidia-smi
中配置。
要通过 nvidia-smi
禁用自动提升,请使用此命令:
sudo nvidia-smi --auto-boost-default=DISABLED