Cuda 如何从.cu文件中获取NVVM IR(LLVM IR)以及如何将NVVM IR编译为二进制文件?
我有一个用于CUDA7.5的CUDAC/C++程序。正如我们所知:libnvm库-一个优化编译器库,它从NVVMIR生成PTX 我可以使用:Cuda 如何从.cu文件中获取NVVM IR(LLVM IR)以及如何将NVVM IR编译为二进制文件?,cuda,llvm,nvidia,llvm-ir,ptx,Cuda,Llvm,Nvidia,Llvm Ir,Ptx,我有一个用于CUDA7.5的CUDAC/C++程序。正如我们所知:libnvm库-一个优化编译器库,它从NVVMIR生成PTX 我可以使用:nvcc-PTX.cu-o.PTX 但是如何从.cu获取NVVM IR(LLVM IR) 如何为目标体系结构编译NVVM IR(LLVM IR)或优化IR 我是否需要第三方库或程序,如:libcuda.lang 更多信息请访问: NVVM编译器(基于LLVM)从 NVVM IR NVVM IR和NVVM编译器大多不知道源代码 正在使用的语
nvcc-PTX.cu-o.PTX
但是如何从.cu
获取NVVM IR(LLVM IR)
如何为目标体系结构编译NVVM IR(LLVM IR)或优化IR
我是否需要第三方库或程序,如:libcuda.lang
- 更多信息请访问:
简单的回答是你不能这样做。NVIDIA的解析器是专有的和封闭源代码的,他们没有以一种可以像您所问的那样使用的方式公开IR代码生成器
也就是说,您不是第一个对此感到疑惑的人,您可能会找到一些有用但完全非官方且不受支持的信息。嗨,Alex,您能用clang++/LLVM for CUDA代码获取LLVM IR吗?我也很好奇:
clang++-S-emit llvm-o axpy-I/samples/common/inc-L/axpy.cu-lcudart\u static-lcuda-ldl-lrt-pthread
!非常感谢。也就是说,nvcc是编译器驱动程序,是专有的封闭源代码。但nvopencc是.cu解析器,基于open64,是在GPL下发布的,不是吗?@Alex:nvopencc不是基于LVMM的解析器/编译器,它是CUDA最初附带的第一代、不推荐使用的基于open64的编译器。它还直接发射PTX。当前基于LVVM的解析器是专有的、封闭源代码的,隐藏在libnvm中,没有允许访问发出的LVMM IR代码的外部API或文档。感谢您的澄清。但是如果我们可以使用clang+llvm编译没有nvcc的.cu文件:clang++-o axpy-I/samples/common/inc-L/axpy.cu-lcudart_static-lcuda-ldl-lrt-pthread
,那么我们可以通过使用“clang++-S-emit llvm-o axpy-I/samples/common/inc-L/axpy.cu-lcudart_static-lcuda-lrt-pthread”得到llvm-ir吗?你看过我给你的链接了吗?是的,CLAN+++可以编译简单的CUDA代码,但是开源CLAN解析器不能像英伟达解析器可以执行的优化那样做任何事情。所以你可以得到某种形式的IR,但它有多好,或者编译成PTX有多好,这是我没有经验的。