Ubuntu18.04 CUDA常见问题汇总

Ubuntu18.04 CUDA常见问题汇总

最近在Ubuntu下使用CUDA进行加速,遇到一些常见问题以及解决方案,在这里汇总一下,笔者也是最近接触CUDA编程,不对之处望谅解。

1.NVIDIA驱动失效

主要针对之前已经安装驱动,但是现在驱动失效的问题,报错如下:

// 命令行输入 nvidia-smi
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver

解决方案:
第一步:nvcc -V,检查驱动和cuda

// 输出如下,证明驱动存在:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85

第二步:ls /usr/src | grep nvidia 查看已安装驱动版本信息

// 输出如下,得到驱动版本信息:
nvidia-470.103.01

第三步:依次输入以下命令

sudo apt-get install dkms
sudo dkms install -m nvidia -v 450.57

第四步:再次输入 nvidia-smi,查看GPU状态,
Ubuntu18.04 CUDA常见问题汇总_第1张图片
第五步,如果还是没用,可以尝试一下回退Ubuntu内核版本,但是之前试过,发现也没有用。可以尝试重启电脑,再试一下。

2.CUDA和C++联合编译CMakeLists.txt编写

CUDA和C++联合编译的CMakeLists.txt文件有很多种编译方式,但是主要思想都是一致的,就是将CUDA代码与最终的可执行文件链接。
第一步:找到CUDA包,并链接CUDA库

find_package(CUDA REQUIRED)
include_directories(${CUDA_INCLUDE_DIRS})
link_directories(${CUDA_LIBRARIES})

第二步:设置nvcc

// comput_70,code=sm_70; 后面数字和你的GPU有关,选择合适的数字
set(CUDA_NVCC_FLAGS -gencode arch=compute_70,code=sm_70;-G;-g)

第三步:CUDA文件 add_library

cuda_add_library(gpu src/CUDA_file.cu)

第四步:链接到可执行文件

add_executable(test test.cc)
target_link_libraries(test gpu)

这样就可以通过 test.cc 文件调用 CUDA_file.cu 函数。但是还有一个问题,如果不是可执行文件来调用 CUDA_file.cu 文件,而是其他文件,就找不到 CUDA_file.cu 的函数。这时候需要类或者命名空间帮助找到相应的函数,做法就是在 CUDA_file.cu 的函数前面加上需要调用的文件的类名。

未完待续…

你可能感兴趣的:(ubuntu,linux,c++)