最近迷上了CUDA加速计算,但我又是一个不太喜欢用“钞”能力来解决问题的人(其实就是我穷买不起GPU云服务器罢了/(ㄒoㄒ)/~~)。
正所谓人不不作死枉少年,既然买不起,那就自己动手搭建一个环境吧。
索性真的感谢微软,他们使用WSL协议允许用户在Windows系统下模拟Linux环境并进行开发。
准备
首先你需要明确你当前的电脑系统环境需要使用Windows10或者以上的操作系统,这里我使用的是Windows11,其操作和Windows10一样。
打开Microsoft Store,搜索Ubuntu
这里我使用的是Ubuntu18.04LTS,并且已经将其转移到我的E盘学习盘下安装。至于如何提取安装包可以自行搜索如何找到Microsoft Store的安装文件路径,这里不赘述了。如果你的C盘空间还足够,也可以忽略安装转移这一步。
找到如下两个文件,并把它转移到你想要的盘符即可完成WSL安装的转移。
转移好后,双击ubuntu1804.exe文件后,会生成一个ext4格式的虚拟磁盘文件,因为Linux普遍都是接受ext格式的文件系统,因此生成一个ext4的虚拟磁盘也不足为怪。
需要说明!
在开始安装你的WSL系统时,你需要先确保几点:
在Windows功能中打开WSL子系统功能
在BIOS中开启虚拟化技术,依据自己处理器的平台去开启相应的技术
在Windows上安装CUDA™驱动,访问CUDA官网下载:CUDA Toolkit 11.5 Downloads | NVIDIA Developer
具体安装方式可自行搜索,这里不赘述了。
完成上述和Linux系统的配置之后,即可开始Python环境的配置。
因为它是构建在Windows上的子系统,因此我们的目的更多的是节省系统空间,所以我们使用
miniconda来安装Python环境。
访问miniconda下载网站来获取镜像:Miniconda — Conda documentation
这里我们下载Linux x86-64的安装脚本。
下载好后,即可开始安装。这里我是用Visual Studio Code来对WSL环境进行运维及编辑
输入如下命令来执行安装程序
sudo bash Anaconda3-2021.05-Linux-x86_64.sh
一路回车就好
输入yes以接受conda的协议
修改root/.bashrc环境变量配置文件
sudo vi ~/.bashrc
将conda安装路径添加到PATH中,这里我使用的是anaconda,因此在你安装时应修改为你的miniconda安装的路径
# <<< conda initialize <<<
export PATH=/home/elin/anaconda3/:$PATH
配置好后在Shell输入conda -V来验证miniconda是否成功
(base) elin@DESKTOP-H74RKIM:~/conda$ conda -V
conda 4.10.1
准备好conda之后,可以开始配置我们的GPU环境了
我们这里使用RAPIDS集成环境,集成众多GPU加速库,如:
cuDF -GPU加速的数据处理库,基于PandasAPI
cuPy -GPU加速的矩阵数学库,基于NumpyAPI
cuML -GPU加速的机器学习库,基于Scikit-LearnAPI
访问RAPIDS官网来获取RAPIDS安装方式:https://rapids.ai/start.html
依据你的需要和CUDA驱动版本和Python版本来复制安装命令,可以通过点击COPY COMMAND按钮来复制命令。
值得一提的是,这里RAPIDS的安装命令是conda create而不是conda install,这也就意味着这个指令将会生成一个名为 rapids-21.10的GPU开发env环境。
所以在使用时,可以输入conda activate rapids-21.10环境,因笔者没有及时更新RAPIDS因此,笔者的使用环境是21.08
(base) elin@DESKTOP-H74RKIM:~/conda$ conda activate rapids-21.08
启用后,我创建了一个Notebook文件来检验我们的RAPIDS环境是否启用成功。
可以看到vscode识别到了我们的rapids环境了。
写一段代码保个底:
CUDA_STATS = None
try:
import cudf
CUDA_STATS = True
print(f"Now your system is Ready for CUDA Acclerate :{CUDA_STATS}")
except Exception as Error:
CUDA_STATS = False
print(f"Now your system is Ready for CUDA Acclerate :{CUDA_STATS}")
可以看到我们的CUDA加速已经生效了。
总结
因为CUDA在HPC的生态垄断,导致各种GPU的加速库都只支持NVIDIA CUDA GPU,当然这并不是意味着AMD没有自己的HPC生态。
基于AMD ROCm的高性能计算设备也在逐步的发展。这是更多的开发者更愿意使用CUDA API来进行开发。
好了,又水了一篇文章,真好。
我是Deahost,下期见!