clang - OpenCL 内核的 LLVM IR 到 PTX 到二进制
问题描述
我正在使用 clang 为 Nvidia OpenCL 和 Cuda 内核生成 LLVM IR,我想随后对其进行检测,为 OpenCL 执行以下操作:
clang -c -x cl -S -emit-llvm -cl-std=CL2.0 kernel.cl -o kernel.ll
以及这里为 Cuda描述的内容。
我正在寻找的是一种从仪器 IR 到实际二进制文件的方法。对于 Cuda,我知道我可以使用 NVPTX 后端生成 PTX 和 JIT 编译,如此处所述(或者可能使用 ptxas?)。我想知道 OpenCL 案例是否也可能发生类似的事情,如果是这样,也许是一个最小的例子。提前致谢。
解决方案
原则上,您可以使用clGetProgramInfo()
withCL_PROGRAM_BINARY_SIZES
和为加载和编译的 OpenCL 内核提取二进制文件CL_PROGRAM_BINARIES
。
据我所知,这将生成完全由实现定义的格式的二进制文件。因此,如果您不走运,无论如何您都可以取回 IR 代码。但是,如果运气好的话,它可能会在您的平台上包含 PTX 机器代码。
推荐阅读
- python - 使用 Python 抓取谷歌搜索结果的标题和网址
- html - HTML 电子邮件中的响应框
- dolphindb - parallelLevel 在回放功能中不生效
- xsd - 有没有办法处理/忽略biztalk中收到的xml文件中的内联xsd?
- javascript - D3 力图中的线性运动
- python - Display PyQt5 widget from background process
- java - 如何将意图传递回 MainActivity
- java - HttpServlet 特殊字符问题
- android - TensorFlow Lite: How to change model output to list of image coordinates?
- open-liberty - How to setup an EJB timerDataSource in Open Liberty