gpt4 book ai didi

opencl - OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?

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

我的第一个问题是如何获取 Nvidia GPU 上 OpenCL 内核代码的寄存器使用信息,因为 nvcc 编译器为 CUDA 内核代码使用 nvcc --ptxas-options=-v 标志提供相同的信息。

在导出 GPU_DUMP_DEVICE_KERNEL=3 后,我还从运行程序时生成的 .isa 文件 中获得了有关适用于 OpenCL 内核的 AMD GPU 的相同信息。我也在 Nvidia GPU 上尝试过同样的事情,但它没有获得 .isa 文件。我的第二个问题是为什么 Nvidia GPU 不生成 .isa 文件

经过谷歌搜索后,我发现在 Nvidia GPU 上获取 OpenCL 内核的寄存器和共享内存使用信息的方法是在 clBuildProgram() 函数调用中使用 cl-nv-verbose 字符串标志。然后读取编译后的内核代码的“二进制”信息。 我的第三个问题是在 Nvidia GPU 上获取寄存器使用信息的正确方法吗?其他获得相同效果的方法是什么?

//构建程序...

clBuildProgram(program, 1, &device_id, "-cl-nv-verbose", NULL, NULL);

构建程序后,我在 clGetProgramInfo() 函数中使用了两个常量CL_PROGRAM_BINARY_SIZES 和 CL_PROGRAM_BINARIES 来获取已编译内核代码的二进制文件。

//打印编译后的内核代码的二进制文件...

cl_uint program_num_devices, ret;
size_t t;
ret = clGetProgramInfo(program, CL_PROGRAM_NUM_DEVICES, sizeof(cl_uint), &program_num_devices, NULL);
if(program_num_devices == 0) {
printf("No valid device was found \n");
return ;
}
size_t binary_sizes[program_num_devices];
char **binaries = (char **) malloc(program_num_devices * sizeof(char* ));
//first call to get size of ISA binary file...
ret = clGetProgramInfo(program, CL_PROGRAM_BINARY_SIZES, program_num_devices * sizeof(size_t), &binary_sizes, NULL);
for(t = 0; t < program_num_devices; t++) {
binaries[t] = (char *) malloc((binary_sizes[t] + 1) * sizeof(char));
}
//second call to get ISA info....
ret = clGetProgramInfo(program, CL_PROGRAM_BINARIES, program_num_devices * sizeof(size_t), binaries, NULL);
for(t = 0; t < program_num_devices; t++) {
binaries[t][binary_sizes[t]] = '\0';
printf("Binary ISA Info%s : %lu \n", binaries[t], binary_sizes[t]);
}
printf("ProgramNumDevices:: %u\n", program_num_devices);
for(t = 0; t < program_num_devices; t++) {
free(binaries[t]);
}

这是打印我编译的 OpenCl 内核代码的“二进制文件”。但它不显示寄存器和共享内存使用的信息。为什么?

请分享一些有用的信息。

提前致谢!!!!

最佳答案

从快速搜索来看,使用 -cl-nv-verbose 构建程序后,您可以使用 clGetProgramBuildInfo(...,CL_PROGRAM_BUILD_LOG,.. .).

关于opencl - OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126020/

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