张小白手把手教你写CUDA的HelloWorld

在Windows下的CUDA程序运行起来需要装Visual Studio一堆东西。但是Windows 11有个WSL还是蛮好用的。我们用这个方法来试试运行CUDA代码吧!
在Windows 11下搜索 Microsoft Store:

在Store中搜索ubuntu 20.04:

点击获取:

耐心等待下载完毕:

下载完毕后:

点击打开:

输入用户名:zhanghui
输入两次密码:z******i
就进入了ubuntu 20.04的环境。
使用nvidia-smi可以看到Nvidia的显卡信息:

打开nvcc直接报错:

我们可以按照提示按照nvidia的cuda toolkit。

但是他不一定听你的话。
那我们还是去nvidia官网去下载CUDA toolkit吧!
打开:

下面会显示具体的下载和安装命令,照此执行:

chmod +x *.run

sudo ./cuda_11.7.0_515.43.04_linux.run

告诉你gcc校验版本出错。
那就安装gcc吧:
sudo apt install gcc

报错了:

这个时候应该先做下sudo apt-get update:

再安装就可以了:


gcc --version

再来试一遍安装cuda toolkit:
sudo ./cuda_11.7.0_515.43.04_linux.run

会弹出以下界面:

输入accept,继续:

当然这个时候张小白发现一个问题,就是wsl所在的C盘空间所剩不多了。

那就使用迁移大法,把刚才安装的wsl ubuntu 20.04移到其他硬盘吧:(E盘还有500G空间)

使用管理员打开 PowerShell:

下载move-wsl工具:
git clone https://github.com/pxlrbt/move-wsl.git

停止wsl运行:
wsl --shutdown

确认ubuntu的窗口已被关闭。
cd move-wsl

执行:.\move-wsl.ps1

按提示完成 wsl源的选择,并输入目的目录 e:\wsl2,耐心等待后会发现移动成功。
此时看一下C盘和E盘的剩余空间情况:


文件也移过来了:

那我们重新打开wsl的ubuntu 20.04

居然是root用户。
切换到zhanghui用户,重新执行cuda toolkit安装:
sudo ./cuda_11.7.0_515.43.04_linux.run

输入accept后:

点击install:

按照上面的提示修改 .bashrc,增加下面两个环境变量:
export PATH=$PATH:/usr/local/cuda-11.7/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64

source ~/.bashrc使其生效:

检查nvcc是否正常安装:
nvcc -V

编辑一个helloworld.cu的CUDA代码:

#include <stdio.h>
__global__ void hello_from_gpu()
{
printf("Hello World from the GPU!\n");
}
int main(void)
{
hello_from_gpu<<<1, 1>>>();
cudaDeviceSynchronize();
return 0;
}
保存后编译
nvcc -o helloworld helloworld.cu

看来还是要装g++
sudo apt-get install g++

重新编译:
nvcc -o helloworld helloworld.cu

编译是通过了,但是没有结果。。。LOL。。。
那么,是不是CUDA 11.7的版本太新了,跟驱动不匹配呢?
我们换下载 CUDA 11.4的版本试试:
打开 CUDA Toolkit 11.4 Update 4 Downloads
按如下方式选择:



chmod +x *.run

sudo sh cuda_11.4.4_470.82.01_linux.run


accept后会提示:

继续会提示:

因为刚才已经装过CUDA 11.7了。

装完了。到/usr/local下看看:

可见,/usr/local/cuda的软链接指向了 /usr/local/cuda-11.4,而原来指向的是 /usr/local/cuda-11.7.
这样我们将 .bashrc简单地调整为指向 /usr/local/cuda,这样不管是哪个版本都会指向应该指向的实际目录:

source ~/.bashrc使其生效
nvcc -V看看版本:

nvidia-smi看看版本:

然后再重新编译:
rm helloworld
nvcc -o helloworld helloworld.cu
并执行:
./helloworld

终于完成了WSL的ubuntu 20.04上第一个CUDA的hello world程序。
(全文完,谢谢阅读)
- 点赞
- 收藏
- 关注作者
评论(0)