获取有关NVidia上已编译的OpenCL内核的详细信息

时间:2018-01-04 15:01:23

标签: opencl gpu nvidia gpgpu ptx

有没有办法获得有关如何在NVidia平台(或其他平台)上编译OpenCL内核的详细信息。可以放入内核的外部工具或测试。具体做法是:

  • 矢量化是否成功,工作项如何分组为经线?

  • 如果工作组内的工作项进入不同的分支,编译器是否对其进行优化以使它们仍然并行执行?

  • 私有内存变量是否映射到多处理器中的寄存器,还是放入本地/全局内存? (某些体系结构每个工作组的私有内存多于本地内存)

可以在PTX装配输出中看到此信息,还是更高级别?

2 个答案:

答案 0 :(得分:1)

这是所有编译器级元数据;其中一些可通过通用OpenCL API获得,但您请求的太低级别。可能通过一些Nvidia OpenCL扩展可用,我不熟悉那些。可能你最好的选择是找到一些工具在PTX级别工作并将其提供给OpenCL程序二进制文件。

答案 1 :(得分:0)

你总是可以只生成 PTX 程序集并查看它:

program.build("-cl-fast-relaxed-math");
cout << program.getInfo<CL_PROGRAM_BINARIES>()[0] << endl;

在 PTX 中,您可以准确地看到编译器如何翻译 OpenCL 代码。查找 PTX 文档 here