忠告
首先敬告各位,Opensuse leap对于Nvidia的驱动支持安装很不方便并且比较老旧,我个人还是建议切换到Debian系来做开发,会方便的多,企业使用Debian/Ubuntu,个人用户可以用LinuxMint。
安装显卡驱动
- 添加Nvidia的软件源:sudo zypper addrepo --refresh 'https://download.nvidia.com/opensuse/leap/$releasever' NVIDIA
- 安装驱动,因为P104是一张非常老的卡了, G06的驱动无法使用,我们安装nvidiaG05
- 检索判断是否存在可用软件包:zypper se x11-video-nvidiaG0* nvidia-video-G05*
- 安装驱动包:zypper install nvidia-video-G06
- 判断安装是否成功: nvidia-smi会列出显卡信息。
- 安装Cuda:请注意此老版本驱动只能适配Cuda11版本,所以下载Cuda11.8.历史版本链接
- wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-opensuse15-11-8-local-11.8.0_520.61.05-1.x86_64.rpm
- sudo rpm -i cuda-repo-opensuse15-11-8-local-11.8.0_520.61.05-1.x86_64.rpm
- sudo zypper refresh
- sudo zypper install -y cuda
复制代码- sudo vim ~/.bashrc
- #加入以下的参数到文件末尾
- export CUDA_HOME=/usr/local/cuda-12.8:$CUDA_HOME
- export PATH=/usr/local/cuda-12.8/bin:$PATH
- export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH
- #退出文件执行以下命令
- source ~/.bashrc
- #重启一个新的控制台窗口
- nvcc -V
复制代码- #include <stdio.h>
- void __global__ gpu_print(){
- const int bid = blockIdx.x;
- const int tid = threadIdx.x;
- const int id = threadIdx.x + blockIdx.x*blockDim.x;
- printf("%s, block %d, thread %d, idx %d\n", "Hello world GPU",bid,tid,id);
- }
- int main(){
- gpu_print<<<2,2>>>();
- cudaDeviceSynchronize();
- }
复制代码 执行编译: nvcc test.cu -o test,测试结果:./test
可能遇到的问题
使用的老显卡可能会在nvcc编译报错架构太老后续会不支持的字样,如果想长期消除,可以在.bashrc文件中加入一行- alias nvcc='nvcc -Wno-deprecated-gpu-targets'
复制代码 注:系统请不要轻易升级内核,否则会导致cuda和nvidia驱动出现问题,如果不小心升级了,可以使用以下命令进行解决:- sudo apt install dkms
- sudo dkms install -m nvidia -v <驱动版本例如 525.147.05>
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |