如何从.cu - 文件获取NVVM IR(LLVM IR)以及如何将NVVM IR编译为二进制文件?

时间:2015-12-09 10:10:37

标签: cuda llvm nvidia llvm-ir ptx

我有一个CUDA C / C ++程序用于CUDA 7.5。众所周知:libNVVM库 - 一个优化的编译器库,可以从NVVM IR生成PTX。

我可以使用:nvcc -ptx <file>.cu -o <file>.ptx

来获取PTX

但是如何从<file>.cu获得NVVM IR(LLVM IR)?

如何为目标架构编译NVVM IR(LLVM IR)或Optimized IR?

我是否需要此第三方库或程序,例如:libcuda.lang,...?

enter image description here

enter image description here

  

NVVM编译器(基于LLVM)生成PTX代码   NVVM IR。

     

NVVM IR和NVVM编译器主要与源无关   正在使用的语言。 NVVM编译器的PTX codegen部分需要   因为DCI的不同而知道源语言   (驱动程序/编译器接口)。

     

从技术上讲,NVVM IR是LLVM IR,带有一套规则,   限制和约定,以及一组受支持的内在因素   功能。 NVVM IR中指定的程序始终是合法的LLVM   程序。合法的LLVM程序可能不是合法的NVVM程序。

1 个答案:

答案 0 :(得分:3)

答案非常简短,你不能这样做。 NVIDIA的解析器是专有的封闭源代码,并且它们没有以可以按照您要求的方式使用IR代码生成器。

那就是说,你不是第一个对此感到疑惑的人,你可能会找到一些有用的,但完全非官方和不受支持的信息here