如何将CUDA编译为LLVM IR?

4

我已经尝试了三天将CUDA内核编译成LLVM IR,但是一直无法成功。我已经修改了langoptions.cpp并在构造函数中添加了CUDA=1;,但是clang仍然给我报错,提示CUDA语法错误(例如_synchthreads()调用)。我已经做了以下几点:

  1. downloaded llvm (including clang) modified langoptions.cpp (CUDA=1; in the constructor), and installed it.
  2. installed CUDA toolkit 4.1 and CUDA SDK.
  3. compiled a CUDA example using clang using:

    clang -I${CUDA_HOME}/include -I${CUDA_SDK_INC}
    ~/workspace/cuda_example/mis_kernel.cu -S -emit-llvm -o
    ~/workspace/cuda_example/a.ll
    

正如我所说,它不起作用。

1个回答

3
在公共的LLVM代码库中,clang –x=CUDA 是一些在NVIDIA之外进行的实验性东西;如有问题,请联系llvm-dev邮件列表。
NVCC不支持生成LLVM IR。

嗨Harri,LLVM的trunk目前具有nvptx目标(我假设这是Justin Holewinski发布的一个;http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-April/049215.html),因此我认为现在可以使用clang构建CUDA?还是需要在clang前端上进行更多工作? - lurscher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接