【问题标题】:cuda to llvm bitcode conversioncuda 到 llvm 位码转换
【发布时间】:2015-11-14 13:39:14
【问题描述】:

我想将 CUDA 代码转换为 llvm 位代码,以便对其进行检测。我试过 gpuocelot,它将 ptx 编译成 CPU 可执行代码。尽管如此,我无法从中获取 llvm 位码,因此无法对其进行检测。有一些活动试图让 llvm 支持 CUDA。任何人都可以提供一个强大的解决方案来将 CUDA 转换为可行的 llvm 位码吗?谢谢。

【问题讨论】:

  • gpuocelot 似乎是使用 LLVM 实现的,因此中间步骤应该是将 ptx 解析为 LLVM IR。你为得到它做了什么尝试,它是如何失败的?
  • @Oak:gpuocelot 从 nvcc 的 .o 开始,输出一个 .out 文件执行。我不知道如何获取用于 llvm 检测的位码 .bc 文件。有什么建议吗?
  • 由于 gpucelot 是开源的,您可以获取它的源代码,修改它以在解析 LLVM IR 后转储它,然后在您的输入上运行它。例如,每个 LLVM 元素都有一个 dump() 方法,它将 IR(以文本格式,但很容易转换为位码)转储到标准输出,我相信还有更精致的方法。

标签: cuda llvm gpu


【解决方案1】:

NVIDIA 的 nvcc 实际上是使用 LLVM IR 作为其步骤之一。他们可能已经改变了一点——我还没有看到细节。他们在下面进行了解释:

https://developer.nvidia.com/cuda-llvm-compiler

【讨论】:

    【解决方案2】:

    您现在应该可以使用 Clang 将 CUDA(混合模式)编译为 LLVM IR。检查this page。请注意,此支持仍处于试验阶段。随时向 LLVM 社区报告错误。

    【讨论】:

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