I am trying to compile some OpenMP code with target offloading, targeting an Nvidia Tesla M10.
I’m using LLVM 5.0.1 (from llvm-toolset-7) and CUDA 8.0. The machine is running CentOS 7.5.
The exact command used is:
clang++ -c -std=c++11 -fopenmp -fopenmp-targets=nvptx-nvidia-cuda --cuda-gpu-arch=sm_50 -v test.cpp
Regardless of my actions, I get the following output and error:
clang version 5.0.1 (tags/RELEASE_501/final)
Thread model: posix
Found candidate GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.2
Found candidate GCC installation: /usr/lib/gcc/x86_64-redhat-linux/4.8.5
Selected GCC installation: /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda, version 8.0
clang-5.0: error: cannot find libdevice for . Provide path to different CUDA installation via --cuda-path, or pass -nocudalib to build without linking with libdevice.
This error is particularly perplexing—it’s as though it doesn’t actually detect the ‘—cuda-gpu-arch’ option given.
Note that I have been able to build CUDA code (from the CUDA samples), so this isn’t an issue of not being able to find the CUDA installation.
Nor is the problem the code itself—I can even tell it to ‘compile’ an empty file and it will still error.
Am I doing something wrong on my end?