张小白手把手教你写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)