当前位置: 首页 > news >正文

Linux(WSL)安装CUDA

选择CUDA版本

nvidia-smi

在这里插入图片描述

选择的CUDA版本要比 CUDA version 的版本更低

ps. 本机之前已经把CUDA驱动器在windows端安装完成:

在这里插入图片描述


安装 CUDA

参考:Windows10/11 WSL2 安装nvidia-cuda驱动

进入CUDA各版本官方下载地址:https://developer.nvidia.com/cuda-toolkit-archive 选择合适的版本

在这里插入图片描述
Installation Instructions:

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-6-local/7fa2af80.pub
sudo apt-get updatesudo apt-get -y install cuda

安装相关依赖库:

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

配置CUDA的环境变量:

sudo vim ~/.bashrc 

.bashrc文件末尾添加:

export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

更新文件:

source ~/.bashrc

检测

在这里插入图片描述

配置完成,成功运行 nvcc --version,即可使用nvcc编译器

在这里插入图片描述
nvidia-smi 驱动正常

测试代码:

#include <iostream>
#include <math.h>
#include <cuda_runtime.h>
using namespace std;
int main() {
    int count = 0;
 	cudaGetDeviceCount(&count);
	cout <<"当前计算机包含GPU数为"<< count << endl;
    cudaError_t err = cudaGetDeviceCount(&count);
    if (err != cudaSuccess) 
	    printf("%s\n", cudaGetErrorString(err));
    cudaDeviceProp prop;
    cudaGetDeviceProperties(&prop, 0);
    printf("Device Number: %d\n", 0);
    cout << "当前设备名字为" << prop.name << endl;
	cout << "GPU全局内存总量为" << prop.totalGlobalMem << endl;
	cout << "单个线程块中包含的线程数最多为" << prop.maxThreadsPerBlock << endl;
}

// from https://blog.csdn.net/chongbin007/article/details/123973475

运行结果:

在这里插入图片描述

安装完成!!


DEBUG

之前安装的时候没有选择 WSL-Ubuntu,导致出现了一系列的bug

在这里插入图片描述( 所以WSL的话最好不要选择这个)

ERROR: nvidia-smi not found

在这里插入图片描述
NVIDIA-SMI报错:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver

有可能是ubuntu的内核版本升级后造成的问题

解决方法:

sudo apt-get install dkms
ls -l /usr/src/

可以看到有一个nvidia的文件,如果没有这需要自己去安装驱动
方法:Ubuntu下安装NVIDIA驱动的三种方法

在这里插入图片描述

sudo dkms install -m nvidia -v 470.141.03

此时我的报错如下:

在这里插入图片描述
应该是本机WSL的Linux内核的问题

尝试 install 所需的内核:

在这里插入图片描述
在这里插入图片描述原因:安装内核headers,在ubuntu里只需要执行:sudo apt-get install linux-headers-$(uname -r),但是在WSL里,这样子是不行的,因为WSL安装的是微软特供版,需要用对应版本的headers,apt-get安装不到

方法:WSL升级到最新版本Linux内核headers的方法

再次 sudo dkms install -m nvidia -v 470.141.03

在这里插入图片描述
成功!

Debug过程中的总结:

  • 根据自己所需来选择CUDA都安装,选择 WSL-Ubuntu 可以解决不少bug
  • WSL要升级版本到WSL2
  • Windows系统版本是很大的坑!
  • nvidia-smi not found的原因还有可能是gcc/g++的版本问题
  • 升级更新WSL的Linux内核,要在Windows将内核源码下载,再 cp 到wsl里面的home目录

参考资料

安装CUDA:

Windows10/11 WSL2 安装nvidia-cuda驱动 (important)

ubuntu的linux下下载CUDA

Linux显卡驱动命令

CUDA各版本官方下载地址:https://developer.nvidia.com/cuda-toolkit-archive

ERROR: nvidia-smi not found:

解决NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. Make sure 的报错(亲测有效)

nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver 原因及避坑解决方案

显卡驱动报错:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.

NVIDIA-SMI报错:NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver.问题解决

Ubuntu下安装CUDA驱动器:

初次使用Ubuntu18.04遇到的问题——笔记5 (Ubuntu 18.04 下安装安装NVIDIA显卡驱动+CUDA-10.1+cudnn-7)

Ubuntu下安装NVIDIA驱动的三种方法

WSL升级Linux内核:

WSL升级到最新版本Linux内核headers的方法

WSL 2 的安装过程(以及介绍)

相关文章:

  • Oracle VM VirtualBox Ubuntu设置共享文件夹
  • 【机器学习】DBSCAN聚类算法的理论/实现与调参
  • 32、Java——迷你图书管理器(对象+JDBC)
  • pycharm联合Anaconda
  • 不知道视频怎么转音频?手把手教你视频转音频
  • 【C++笔试强训】第十五天
  • 应用软件漏洞排名
  • 基于YOLOV7的桥梁基建裂缝检测
  • BH1750 传感器实战教学 —— 驱动移植篇
  • 考研数学——张宇八套卷
  • ARM 汇编基础
  • CyberSploit:1
  • 【云原生 | 从零开始学istio】五、istio灰度发布以及核心资源
  • 数据结构篇-树与森林
  • fastdfs添加storage节点
  • canvas 五子棋游戏
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Facebook AccountKit 接入的坑点
  • Flex布局到底解决了什么问题
  • Java Agent 学习笔记
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Service Worker
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • VuePress 静态网站生成
  • 程序员该如何有效的找工作?
  • 大快搜索数据爬虫技术实例安装教学篇
  • 记一次和乔布斯合作最难忘的经历
  • 解决iview多表头动态更改列元素发生的错误
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 聊一聊前端的监控
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 栈实现走出迷宫(C++)
  • FaaS 的简单实践
  • 阿里云移动端播放器高级功能介绍
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • #1014 : Trie树
  • (11)MSP430F5529 定时器B
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (六)激光线扫描-三维重建
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (七)理解angular中的module和injector,即依赖注入
  • (转)母版页和相对路径
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework .NET Core与 .NET 的区别
  • .NET NPOI导出Excel详解
  • .net 提取注释生成API文档 帮助文档
  • .net中应用SQL缓存(实例使用)
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • [ Algorithm ] N次方算法 N Square 动态规划解决