1

可以使用 nvprof 访问/读取 CUDA exec 的银行冲突计数器:

nvprof --events shared_st_bank_conflict,shared_ld_bank_conflict my_cuda_exe

但是,它不适用于使用 OpenCL 而不是 CUDA 代码的代码。

  • 有没有办法nvprof从 OpenCL 环境中提取这些计数器,可能直接从 ptx 中提取?
  • 或者,有什么方法可以将使用clGetProgramInfowith的 nvidia OpenCL 编译器生成的 PTX 程序集转换CL_PROGRAM_BINARIES为 CUDA 内核并使用它运行它cuModuleLoadDataEx,从而能够使用nvprof
  • 是否有任何模拟 CPU 后端允许设置诸如银行大小等参数?

附加选项:

  • 使用 opencl 到 cuda 代码的转换器,包括 CUDA 中缺少的功能,如 vloadn/vstoren、float16 和其他各种访问器。#define仅适用于简单内核。有没有提供它的工具?
4

1 回答 1

1

有没有办法从 OpenCL 环境中提取 nvprof 之外的这些计数器,可能直接从 ptx 中提取?

不,CUDA 中也没有,OpenGL、DirectX 或 Vulkan 中的计算着色器也没有。

或者,有什么方法可以将使用 clGetProgramInfo 和
CL_PROGRAM_BINARIES 从 nvidia OpenCL 编译器生成的 PTX 程序集转换为 CUDA 内核并使用
cuModuleLoadDataEx 运行它,从而能够使用 nvprof?

不可以。OpenCL PTX 和 CUDA PTX 不一样,不能互换使用

是否有任何模拟 CPU 后端允许设置诸如银行大小等参数?

不是我知道的。

于 2020-10-25T00:35:17.437 回答