CUDA compilation "No available targets are compatible with this triple." problem

Hi,

I have trouble compiling CUDA code with Clang. The following is a command I tried:

clang++ axpy.cu -o axpy --cuda-gpu-arch=sm_35 --cuda-path=/usr/local/cuda

The error message is

error: unable to create target: ‘No available targets are compatible with this triple.’

The info of the LLVM I’m using is as follows:

lang++ --version

clang version 6.0.0 (http://llvm.org/git/clang.git 16a0981eccf1bfcc9ba928747aa825e8948791cd) (http://llvm.org/git/llvm.git 052dd78cb30f77a05dc8bb06b851402c4b6c6587)

Target: x86_64-unknown-linux-gnu

Thread model: posix

InstalledDir: /home/xshen5/llvm/bin

Registered Targets:

x86 - 32-bit X86: Pentium-Pro and above

x86-64 - 64-bit X86: EM64T and AMD64

Any help I could get? Thanks!

-Xin

I’m assuming you are following guide at https://llvm.org/docs/CompileCudaWithLLVM.html#compiling-cuda-code

Have you tried -L and -l flags?

Kevin

Yes, I followed the guide. The same error showed up:

clang++ axpy.cu -o axpy --cuda-gpu-arch=sm_35 -L/usr/local/cuda/lib64 -I/usr/local/cuda/include -lcudart_static -ldl -lrt -pthread

error: unable to create target: ‘No available targets are compatible with this triple.’

If I am not mistaken, clang will compile CUDA code to PTX (which is then fed to ptxas), so I would assume you need to have the NVPTX target enabled, which does not seem to be the case for you.

Pierre

That was indeed the reason for the issue. The document of LLVM says that the default setting is all targets, which seems not true. I rebuilt LLVM with

cmake ~/clang-llvm/llvm -DCMAKE_BUILD_TYPE=Release -G Ninja -DLLVM_TARGETS_TO_BUILD=“X86;NVPTX”

The problem was then gone.
Thanks!