【问题标题】:How to measure cudaMalloc execution time如何测量 cudaMalloc 执行时间
【发布时间】:2020-03-07 17:33:51
【问题描述】:

如何使用 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);

【问题讨论】:

    标签: c++ cuda profiling


    【解决方案1】:

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

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

    最后,cudaMalloc 的执行时间是高度可变的,所以不要期望一致的结果。

    【讨论】:

    • 使用 chrono 和 cudaDeviceSynchronize() 我得到了正确的时间,谢谢。但我宁愿使用 cuda 事件。是的,结果不一致,没关系。 Nsight Compute 和 chrono 的时间是正确的,但我无法使用 cuda 事件获得正确的时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2021-08-08
    • 2011-02-16
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多