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!