如何将CUDA编译为llvm IR?

时间:2012-02-02 17:38:56

标签: compiler-construction cuda llvm clang

我已经尝试了三天将CUDA内核编译成llvm IR而我无法做到。我已经更改了langoptions.cpp并在构造函数中添加了CUDA=1;,但是clang仍然给出了cuda语法的错误消息(如_synchthreads()调用)。 我做了以下事情:

  1. 下载了llvm(包括clang)修改过的langoptions.cpp(CUDA = 1; 在构造函数中),并安装它。
  2. 安装了CUDA工具包4.1和CUDA SDK。
  3. 使用clang编译了一个CUDA示例:

    clang -I${CUDA_HOME}/include -I${CUDA_SDK_INC}
    ~/workspace/cuda_example/mis_kernel.cu -S -emit-llvm -o
    ~/workspace/cuda_example/a.ll
    
  4. 正如我所说它不起作用。

1 个答案:

答案 0 :(得分:3)

公共LLVM主干中的

clang –x=CUDA是在NVIDIA之外进行的实验;你应该联系llvm-dev别名。

NVCC不支持发射LLVM IR。