gpt4 book ai didi

cuda - 如何测量 CUDA 中内核启动的开销

转载 作者:行者123 更新时间:2023-12-03 07:22:44 25 4
gpt4 key购买 nike

我想测量 CUDA 中内核启动的开销。

据我了解,有多种参数会影响此开销。我对以下内容感兴趣:

  • 创建的线程数
  • 正在复制的数据大小

我这样做主要是为了衡量使用 CUDA 6.0 中引入的托管内存的优势。我将用我开发的代码和评论来更新这个问题。谢谢!

最佳答案

N. Wilt 编写的《CUDA 手册》一书的第 6.1.1 节介绍了如何测量 CUDA 中内核启动的开销。基本思想是启动一个空内核。这是示例代码片段

#include <stdio.h>

__global__ void EmptyKernel() { }

int main() {

const int N = 100000;

float time, cumulative_time = 0.f;
cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);

for (int i=0; i<N; i++) {

cudaEventRecord(start, 0);
EmptyKernel<<<1,1>>>();
cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);
cudaEventElapsedTime(&time, start, stop);
cumulative_time = cumulative_time + time;

}

printf("Kernel launch overhead time: %3.5f ms \n", cumulative_time / N);
return 0;
}

在我的笔记本电脑 GeForce GT540M 卡上,内核启动开销为 0.00245ms .

如果想从启动的线程数来查看本次的依赖关系,那么只需更改内核启动配置 <<<*,*>>> 。看来时间并没有随着启动的线程数量而显着变化,这与书中的说法一致,即大部分时间都花在驱动程序上

关于cuda - 如何测量 CUDA 中内核启动的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375432/

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