对于 NVIDIA 平台,有一个选项甚至可以在没有 SDK 的情况下以编程方式工作。 (也许 AMD 卡也有类似的东西?)
您可以在调用clBuildProgram 时将"-cl-nv-verbose" 指定为“构建选项”。这将生成一些日志信息,稍后可以通过构建日志获取这些信息。
clBuildProgram(program, 0, NULL, "-cl-nv-verbose", NULL, NULL);
clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, ...);
(对不起,我不确定这方面的 Python 语法)。
结果应该是一个包含所需信息的字符串。对于一个简单的向量加法,这显示了
ptxas : info : 0 bytes gmem
ptxas : info : Compiling entry function 'sampleKernel' for 'sm_21'
ptxas : info : Function properties for sampleKernel
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas : info : Used 4 registers, 44 bytes cmem[0], 4 bytes cmem[16]
您也可以使用"-cl-nv-maxrregcount=..." 选项来指定最大寄存器计数,但是当然,所有这些都是特定于设备和平台的,因此应谨慎使用。