如何测量 cudaMalloc 执行时间

How to measure cudaMalloc execution time

如何使用cuda事件测量cudaMalloc的执行时间? 我能够使用事件测量内核时间和 cudaMemcpy 时间,但它不适用于 cudaMalloc。使用下面的代码我得到执行时间 3.104e-06 秒(这是错误的)。使用 Nvidia Nsight Compute,我得到 0.109 秒。

cudaEventRecord(startCuda);
cudaMalloc(&devMatrix, allocSize);
cudaEventRecord(stopCuda);
cudaEventSynchronize(stopCuda);
cudaEventElapsedTime(&timeCudaMalloc, startCuda, stopCuda);

尝试使用 std::chrono::high_resolution_clock 来测量与 cpu 时钟相同的东西:http://www.cplusplus.com/reference/chrono/high_resolution_clock/now/

此外,我不熟悉 Nvidia Nsight Compute,但它会不会增加调试代码的开销?

最后,cudaMalloc 的执行时间变化很大,所以不要期待一致的结果。