【发布时间】:2016-03-04 12:25:45
【问题描述】:
我希望计算我的 cuda 代码的两个不同部分的执行时间。为此,我尝试使用 CudaEvent_t 启动、停止。 我的问题是,我可以使用相同的两个事件“开始”和“停止”来计算其他部分的执行时间吗?
例如:
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
// SECTION 1
cudaEventRecord(start, 0);
cudaMemcpy(..., ..., ..., cudaMemcpyHostToDevice);
cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);
cudaEventElapsedTime(&executionTime, start, stop);
printf("SECTION 1 executionTime: %f", executionTime);
// SECTION 1
// SECTION 2
cudaEventRecord(start, 0); // Reusing start event
cudaMemcpy(..., ..., ..., cudaMemcpyDeviceToHost);
cudaEventRecord(stop, 0); // Reusing stop event
cudaEventSynchronize(stop);
cudaEventElapsedTime(&executionTime, start, stop);
printf("SECTION 2 executionTime: %f", executionTime);
// SECTION 2
这段代码能否准确估计第 1 节和第 2 节的执行时间因为我正在尝试恢复 cudaEvent_t 启动,也可以为第 2 节停止?还是我需要为第二部分创建两个额外的事件 start1 和 stop1?
【问题讨论】:
标签: c cuda parallel-processing gpu gpgpu