gpt4 book ai didi

assembly - OpenCL 在线编译:从 cl::program 或 cl::kernel 获取程序集

转载 作者:行者123 更新时间:2023-12-04 18:56:28 31 4
gpt4 key购买 nike

我正在使用 OpenCL 运行内核基准测试。我知道我可以使用 OpenCL 供应商提供的各种工具(即 ioc64poclcc)离线编译内核。问题是我得到的性能结果我无法用这些工具的程序集、OpenCL 运行时开销或类似的东西来解释。

我想看到由我的基准程序编译和执行的在线编译内核的程序集。 有什么方法可以做到这一点?

我的方法是从 cl::program 的某个地方获取这个程序集。或 cl::kernel对象,但我还没有找到任何方法来做到这一点。我感谢您的建议或解决方案。

最佳答案

对于英特尔显卡,您可以使用 clGetKernelInfo(...,CL_KERNEL_BINARY_PROGRAM_INTEL,...)直接获取内核ISA位。要反汇编这些位,您可以获取最新的 GEN ISA 反汇编程序并按照 here 中的说明构建它。 .具体参见 Building an Intel GPU ISA Disassembler 部分.我已经有一段时间没有使用它了,但是 Intel OpenCL SDK 曾经做得更好(不是 GUI 人员)。和 this是一篇关于如何使用该工具检查组件的好文章。

对于 NVidia,clGetProgramInfo(...CL_PROGRAM_BINARIES...) 返回的“二进制”实际上返回ptx。这可能就足够了,但是如果您想要执行确切的着色器程序集,那么您实际上可以将 ptx 输入 ptxas然后拆机cuobjdump--dump-sass选项以获得最低级别的程序集。请注意,我们只能猜测 NVidia 驱动程序使用与 ptxas 相同的算法。 ,但这似乎是合乎逻辑的。

AMD 可能有类似的工具,但我对它们不太熟悉。

关于assembly - OpenCL 在线编译:从 cl::program 或 cl::kernel 获取程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51519918/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com