Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将cuda示例链接到clang++-Ubuntu18.04下的9_Cuda_Ubuntu 18.04_Clang++ - Fatal编程技术网

无法将cuda示例链接到clang++-Ubuntu18.04下的9

无法将cuda示例链接到clang++-Ubuntu18.04下的9,cuda,ubuntu-18.04,clang++,Cuda,Ubuntu 18.04,Clang++,我正在努力学习这个例子 我使用Ubuntu18.04.3 LTS,9.0.0-2版本 我拥有的设备是(deviceQuery输出的片段): 我运行命令: 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.

我正在努力学习这个例子 我使用Ubuntu18.04.3 LTS,9.0.0-2版本 我拥有的设备是(deviceQuery输出的片段):

我运行命令:

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
我做错了什么

于2020年11月添加:
在@ArtemB comment之后,我尝试使用clang++-10运行它,它会发出警告,但编译和运行都很好。

简短回答:我的驱动程序支持的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
运行上述命令时,会得到以下响应(仅显示最后几行):

包含在以下文件中:1:
/usr/lib/llvm-9/lib/clang/9.0.0/include/\uu clang\u cuda\u runtime\u wrapper.h:52:2:错误:“不支持的cuda版本!”
#错误“不支持CUDA版本!”
^
axpy.cu:23:7:错误:使用未声明的标识符cudaConfigureCall
axpy(a,设备x,设备y);
^
为sm_61编译时生成2个错误。
检查有问题的文件(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
#包括“cuda.h”
#如果!已定义(CUDA_版本)
#错误“cuda.h未定义cuda_版本”
#elif CUDA|U版本<7000|CUDA|U版本>10010
#错误“不支持CUDA版本!”
#恩迪夫

直到最近,clang对CUDA版本还是相当挑剔的。我最近放松了一点,所以clang-10更为宽松,将尝试以与最新支持的CUDA版本(目前为10.1)相同的功能使用较新的CUDA版本。它还将发出警告。它与CUDA-11.0的配合非常好,足以编译Tensorflow


CUDA-11.1(我相信windows上的11.0更新1)已经从发行版中删除了version.txt文件,这将再次破坏CUDA编译和当前发布的clang版本。这应该在clang-11.0.1发布时修复(与CUDA的版本匹配纯属巧合)。

您真的确定只安装了一台libdevice吗?clang的详细输出显示了什么?+talonmies,a)有两个CUDA,但我指出了10.2。我对问题进行了编辑,以包含显式指向10.2的命令(使用cuda路径)、详细参数和输出(当然是同一个问题)。谢天谢地,直到最近clang对CUDA版本相当挑剔。我最近放松了一点,所以clang-10更为宽松,并将尝试以与最新支持的CUDA版本相同的功能使用较新的CUDA版本。它还将发出警告。它与CUDA-11配合得很好,足以编译Tensorflow。@ArtemB:谢谢。我试试看again@ArtemB,如果你把它作为答案写下来,我会把“接受”从我的答案移到你的答案上——我试过了,它成功地添加了一个关于最新发展的答案。
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.
#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