gpt4 book ai didi

cuda - CUDA 事件会为 cudaMalloc 和 cudaMemcpy 执行计时吗?

转载 作者:行者123 更新时间:2023-12-02 02:19:34 28 4
gpt4 key购买 nike

我正在使用以下代码来计时调用 cudaMalloc()。我很好奇:CUDA 事件只为我们的内核计时,还是它们也为“内置内核”计时。换句话说,下面的计时方法 cudaMalloc() 有效吗?

cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start, 0);
for(int t =0 ; t < 100 ; t++){
float* test;
cudaMalloc((void**)&test, 3000000 * sizeof(float));
cudaFree(test);
}
cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);
float elapsedTime;
cudaEventElapsedTime(&elapsedTime , start, stop);
printf("time elapsed on the GPU: %f ms", elapsedTime/100);

最佳答案

cu(da)EventRecord() 只是向 GPU 提交命令,告诉 GPU 在 GPU 处理命令时写入时间戳。时间戳只是一个板载高分辨率计数器。因此,CUDA 事件在用作计时 GPU 事件的异步机制时最有用,例如特定内核运行所需的时间。 CUDA 内存管理主要发生在 CPU 上,因此 CUDA 事件对于计时 CUDA 分配和自由操作来说并不理想。

简而言之:您最好使用基于 CPU 的计时,例如 gettimeofday()。

关于cuda - CUDA 事件会为 cudaMalloc 和 cudaMemcpy 执行计时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8951371/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com