首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu18.04下无法将cuda示例与clang++-9链接

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

Stack Overflow用户
提问于 2020-01-20 16:03:50
回答 2查看 1.4K关注 0票数 3

我正在尝试遵循https://llvm.org/docs/CompileCudaWithLLVM.html#invoking-clang中的示例,我使用了Ubuntu18.04.3LTS,clangVersion9.0.0-2,我拥有的设备是(来自deviceQuery输出的片段):

代码语言:javascript
复制
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

我执行了命令:

代码语言:javascript
复制
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

产出如下:

代码语言:javascript
复制
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就在它应该在的地方:

代码语言:javascript
复制
~>ls /usr/local/cuda-10.2/nvvm/libdevice/
libdevice.10.bc

我做错什么了?

添加了2020年11月:在@ArtemB注释之后,我尝试使用clang++-10运行它,这会引发一个警告,但是编译和运行都很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-24 00:28:28

直到最近,clang对数据自动化系统的版本还相当挑剔。我最近稍微放松了一些,所以clang-10比较宽松,并且将尝试使用一个新的CUDA版本,其功能与最新支持的CUDA版本(目前为10.1)相同。它还将发出警告。它确实与CUDA-11.0合作,足以编译Tensorflow。

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

票数 2
EN

Stack Overflow用户

发布于 2020-01-21 12:39:42

简短的回答:我的驱动程序支持的cuda版本(10.2)对我的clang (9.0.0)来说太流行了。

下面是我的机器上nvidia-smi输出的顶部:

代码语言:javascript
复制
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.33.01    Driver Version: 440.33.01    CUDA Version: 10.2     |

所以我的司机确实支持库达-10.2。但是,这个版本似乎不受clang9.0.0的支持。实际上,当使用额外的标志-nocudalib运行上面的命令时,会得到以下响应(只显示最后一行):

代码语言:javascript
复制
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运行时包装器)时,可以在第48-53行中看到以下内容:

代码语言:javascript
复制
#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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59826961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档