ash
ash

Reputation: 1200

Compiling CUDA with clang

I am new to LLVM. I heard that clang supports CUDA. How do I compile CUDA using clang? Do I have to make some config changes or include any specific header files? I couldn't find any information on this on the web. Is it possible at all?

Right now when I try to compile a dummy cuda program with clang as

clang -I /usr/local/cuda/include filename.cu 

I get the following error

 unknown type name '__global__'

 __global__ void nothing(int *A)

any help is appreciated! btw i am running it in a mac.

Upvotes: 5

Views: 10399

Answers (2)

Roger Dahl
Roger Dahl

Reputation: 15734

2016-05-01 Update: clang now supports CUDA. See @rivanvx' answer.

The CUDA compiler is based on LLVM. Clang, though also based on LLVM, does not support CUDA.

Upvotes: 3

Vedran Miletić
Vedran Miletić

Reputation: 131

Thanks to contributions from Google and others, Clang now supports building CUDA. Command line parameters are slightly different from nvcc, though. According to the official documentation, assuming your file is named axpy.cu, the basic usage is:

$ clang++ axpy.cu -o axpy --cuda-gpu-arch=<GPU arch>  \
    -L<CUDA install path>/<lib64 or lib>              \
    -lcudart_static -ldl -lrt -pthread

Note that using Clang for compiling CUDA still requires that you have the proprietary CUDA runtime from the NVIDIA CUDA toolkit installed.

Upvotes: 12

Related Questions