не удалось связать пример cuda с clang ++ - 9 под Ubuntu 18.04 - PullRequest
3 голосов
/ 20 января 2020

Я пытаюсь следовать примеру в https://llvm.org/docs/CompileCudaWithLLVM.html#invoking -clang Я использую Ubuntu 18.04.3 LTS, версия clang 9.0.0-2 У меня есть устройство (фрагмент из вывода deviceQuery) :

Detected 1 CUDA Capable device(s)

Device 0: "Quadro P520"
  CUDA Driver Version / Runtime Version          10.2 / 10.2
  CUDA Capability Major/Minor version number:    6.1

Я выполнил команду:

clang++-9 --verbose --cuda-path=/usr/local/cuda-10.2 axpy.cu -o axpy --cuda-gpu-arch=sm_61 -L/usr/local/cuda-10.2 -lcudart_static -ldl -lrt -pthread

И вывод:

clang version 9.0.0-2~ubuntu18.04.1 (tags/RELEASE_900/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found CUDA installation: /usr/local/cuda-10.2, version unknown
clang: error: cannot find libdevice for sm_61. Provide path to different CUDA installation via --cuda-path, or pass -nocudalib to build without linking with libdevice.

Насколько я могу судить, libdevice именно там, где она должно быть:

~>ls /usr/local/cuda-10.2/nvvm/libdevice/
libdevice.10.bc

Что я делаю не так?

1 Ответ

2 голосов
/ 21 января 2020

Краткий ответ: Версия cuda, которую поддерживает мой драйвер (10.2), слишком актуальна для моего clang (9.0.0).

Вот вершина вывода nvidia-smi на моей машине:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |

Так что мой драйвер действительно поддерживает cuda-10.2. Однако, похоже, эта версия не поддерживается , поддерживаемой clang 9.0.0. Действительно, при выполнении вышеупомянутой команды с дополнительным флагом -nocudalib, вы получите следующий ответ (только с указанием последних строк):

In file included from <built-in>:1:
/usr/lib/llvm-9/lib/clang/9.0.0/include/__clang_cuda_runtime_wrapper.h:52:2: error: "Unsupported CUDA version!"
#error "Unsupported CUDA version!"
 ^
axpy.cu:23:7: error: use of undeclared identifier cudaConfigureCall
  axpy<<<1, kDataLen>>>(a, device_x, device_y);
      ^
2 errors generated when compiling for sm_61.

При проверке файла-нарушителя (оболочка времени выполнения clang cuda), один в строках 48-53 видит следующее:

#include "cuda.h"
#if !defined(CUDA_VERSION)
#error "cuda.h did not define CUDA_VERSION"
#elif CUDA_VERSION < 7000 || CUDA_VERSION > 10010
#error "Unsupported CUDA version!"
#endif
...