【问题标题】:Getting detailed information about compiled OpenCL kernel on NVidia获取有关 NVidia 上已编译 OpenCL 内核的详细信息
【发布时间】:2018-06-14 08:14:25
【问题描述】:

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

  • 矢量化是否成功,工作项是如何分组到 warp 中的?

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

  • 私有内存变量是否被映射到多处理器中的寄存器,或者它们是否被放入本地/全局内存? (有些架构的每个工作组的私有内存比本地内存多)

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

【问题讨论】:

    标签: opencl gpu nvidia gpgpu ptx


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-23
        • 2019-03-08
        • 1970-01-01
        相关资源
        最近更新 更多