一 wsl安装
1 windows搜索框搜索,启动或关闭windows功能,点击找到,适用于linux的windosw子系统,然后按照提示要求进行重启即可
2 windows搜索框搜索,store,进入微软官方商城,然后搜索ubuntu,此处我选择下列版本进行安装
下载太慢了,且下载失败
2.1 方法2
2.1.1 win+X,管理员身份打开 PowerShell 工具,输入下列命令启用WSL
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2.1.2 启用“虚拟机平台”,还是在管理员身份打开 PowerShell 工具里面输入
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
2.1.3 查看可以安装的子系统发布版本(可能需要vpn)
wsl.exe --list --online
选取自己想安装的子系统,
2.1.4 安装ubuntu子系统(可能需要vpn,第一次安装失败,多试几次就好了)
wsl.exe --install -d Ubuntu-22.04
尝试更新,依旧报错,最顶端是一个网页解决这个问题的尝试,需要安装该链接,但是好像也没有用
2.3 方法3
微软官方安装教程,英文的,使用vpn翻译成中文就非常的好使了,
网址:https://learn.microsoft.com/en-us/windows/wsl/install-on-server
第1步:win+x快捷键打开 管理员Powershell,执行下列语句
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
第2步:还是在Powershell,执行下列语句
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
第3步:
wsl --set-default-version 2
第4步:
微软官方商城我电脑无法下载,非常慢还失败,进入网址,找到下面,选择自己需要的版本进行离线安装,我这边下载的文件的文件名是 Ubuntu2204-221101.AppxBundle
第5步:需要进入下载文件所在的文件位置,然后执行 Add-AppxPackage Ubuntu2204-221101.AppxBundle
回车进行安装
但是我输入wsl -l
显示没有安装成功
所以我又进行了如下操作,还是在下载文件所在的文件位置
Rename-Item Ubuntu2204-221101.AppxBundle Ubuntu.zip
Expand-Archive Ubuntu.zip Ubuntu
然后再次执行
Add-AppxPackage Ubuntu2204-221101.AppxBundle
PowerShell将 Linux 发行版路径添加到 Windows 环境 PATH,回到管理员的powshell 默认的C盘根目录,执行下面语句
$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";C:\Users\Administrator\Ubuntu", "User")
然后输入ubuntu.exe
开始为新的 Linux 发行版创建用户帐户和密码。
第6步:如何判断自己的wsl是否安装成功,还是在管理员的powshell 终端执行下面命令
wsl --list --verbose
网上的显示结果如下
我的显示结果如下,没有显示版本是因为我把安装文件重命名了
第7步:安装Windows 终端
离线终端下载链接
下载完毕后直接双击运行就可以
界面如下:
第8步:Windows 终端个性化设置
https://zhuanlan.zhihu.com/p/568837345
下拉按钮,打开JSON配置文件
找到profiles
"profiles":
{
"defaults": {},
"list":
[
{
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
"hidden": false,
"name": "Windows PowerShell",
"backgroundImage": "F:\\bg.jpg", // 背景图片路径
"useAcrylic": true, // 是否使用 亚克力效果
"acrylicOpacity": 0.1 // 亚克力效果 透明度
},
效果图
二 mcGPU安装
gittub网站 https://github.com/DIDSR/MCGPU?tab=readme-ov-file
1 安装cuda
step1 cmd里面查看使用 nvidia-smi
查看自己电脑支持的cuda的最高版本
step2
在这里插入代码片[cuda下载官网链接](https://developer.nvidia.com/cuda-11-6-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local)
然后会出现官方给的安装流程,比如:这是cuda11.6版本
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 update
sudo apt-get -y install cud
在windows powershell里面执行第1句的时候,回车虽然没有报错,但是在C/USER/Administrator也就是默认下载目录里面去看,是不到下载的东西的,修改成下列语句下载成功。wgpt是linux环境下的安装命令
curl -o cuda-wsl-ubuntu.pin https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
在windows powershell里面执行第二句的时候报错
我先自己层层创建了一个文件目录,C:\Users\Administrator\etc\apt\preferences.d\cuda-repository-pin-600,直接用完整目录,查了网上说好像/是linux系统下的用法,在windows下面应该用\
mv cuda-wsl-ubuntu.pin C:\Users\Administrator\etc\apt\preferences.d\cuda-repository-pin-600
执行第二句的时候报错
curl -o cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb 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
——————————————————————————————————————————
上述每条指令都报错,且需要从linux命令修改为windows命令。现打开已经安装好wsl的 powershell窗口,执行下面命令切换到linux系统里面
wsl -d Ubuntu
目录从
现在再执行上面的所有安装cuda的语句都不再报错
最后一句执行显示uable …,不知道啥情况,先不管他
安装结束之后执行nvcc -V
,会提示没有nvcc可执行
根据这个教程,现在我应该能看到user/local的一个文件,或者教程使用pwd命令能看到当前在local文件里面,但是我这边还是什么都看不到所以我又根据教程重新安装cuda12.0
这是cuda12.0版本
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/12.0.1/local_installers/cuda-repo-wsl-ubuntu-12-0-local_12.0.1-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-0-local_12.0.1-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-0-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda
这次执行最后一条命令没有再出问题
然后pwd回车看到的还是下面这个路径,
在C盘的user/Asministrate里面是找不到cuda安装的文件的,使用ls -l /usr/local | grep cuda
查看安装的cuda版本
使用cd /usr/local/cuda-12.0
进入自己的cuda包,然后ls打印能看到bin文件
按照这个教程,用cd lib64进入该目录
,然后vim ~/.bashrc
,按i
进入编辑模式,将
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.0/lib64
这两个语句复制到最后,摁ESC退出编辑模式,:wq
保存并退出,然后执行 source ~/.bashrc
最后执行nvcc -V
就打印了显示cuda版本了
2 安装cudnn
教程链接
https://www.ethanzhang.xyz/2023/04/24/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0Win11+GTX4070Ti%E7%8E%AF%E5%A2%83%E4%B8%8BWSL2%20Ubuntu+Pytorch2%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B/
cudnn官网,点开之后根据自己需求点开,就可以看到,下载第二个
将文件保存到windows环境,然后直接复制到wsl2 ubuntu的home目录下,和在windows环境中复制粘贴一样操作【文件浏览器左侧有Linux】
在wsl的ternimal中进入到home目录(鼠标右键单击,选择在终端打开)。先要使用wsl -d Ubuntu
进入ubuntu环境,然后解压下载的文件,
mkdir -p cudnn
tar -xvf cudnn-linux-x86_64-8.8.1.3_cuda12-archive.tar.xz
然后执行下列语句,是根据home和usr的层级关系对教程里面的复制方法进行了一定的修改,我的复制路径,执行下面语句需要退回到最home的上一级目录才行,也就是退到目录包含home和usr的那一及再执行
sudo cp -r home/*****我的用户名***/cudnn/cudnn-linux-x86_64-8.8.1.3_cuda12-archive/lib/libcudnn* /usr/local/cuda-12.0/lib64/
sudo cp -r home/我的用户名/cudnn/cudnn-linux-x86_64-8.8.1.3_cuda12-archive/include/cudnn*.h /usr/local/cuda-12.0/include/
继续执行下列语句
#为更改读取权限:
sudo chmod a+r /usr/local/cuda-12.0/lib64/libcu*
sudo chmod a+r /usr/local/cuda-12.0/include/cud*
执行cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
,cudnn安装成功显示结果
三 mcGPU安装
https://github.com/DIDSR/MCGPU?tab=readme-ov-file
总的来说就是需要将MCGPU-master放在linux的home目录之后,成功运行下面两个语句,就相当于程序成功运行
第一个语句的调试
将文件解压同样放到wsl的linux的根目录下
1 使用wsl -d Ubuntu
语句进入ubuntu环境,然后进入MCGPU-master所在目录,然后 直接运行下面语句
nvcc -DUSING_CUDA -DUSING_MPI MC-GPU_v1.3.cu -o MC-GPU_v1.3.x -O3 -use_fast_math -L/usr/lib/ -I. -I/usr/local/cuda/include -I/usr/local/cuda/samples/common/inc -I/usr/local/cuda/samples/shared/inc/ -I/usr/include/openmpi -lmpi -lz --ptxas-options=-v -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_30,code=sm_30
报错显示,如下,查阅资料提示说版本太旧,修改成70就没有问题了
nvcc -DUSING_CUDA -DUSING_MPI MC-GPU_v1.3.cu -o MC-GPU_v1.3.x -O3 -use_fast_math -L/usr/lib/ -I. -I/usr/local/cuda/include -I/usr/local/cuda/samples/common/inc -I/usr/local/cuda/samples/shared/inc/ -I/usr/include/openmpi -lmpi -lz --ptxas-options=-v -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_70,code=sm_70
2 然后又再次报错,缺少<helper_functions.h>
,且使用find /usr/local/cuda/samples/ -name "helper_functions.h"
或者退到别的目录进行查找(因为find的查找范围是当前目录以及他的子目录)也没有找到这个函数,网上说可以随意下载一个,我在网上下载了一个,直接放到了MCGPU-master文件夹下,该错误解决
3 继续报错找不到 <exception.h>
,先使用语句 find /usr/include -name "exception.h"
在当前目录进行查找,显示存在,同样直接将其拷贝到MCGPU-master文件夹下,该错误解决
4 报错找不到helper_image.h
在整个linux系统里面查找文件
find / -type f -name "helper_image.h"
5 前述找不到的头文件,去gittub上下载 cuda samples官方案例
案例链接,打开之后随意选择一个cuda samples进行下载
解压之后在里面的common文件里面基本上都能找到对应的头文件,或者直接在下载的文件里进行搜索即可。偶尔那么几个找不到,就vpn或者gittub上搜索可以找到,但是不一定是对的,需要尝试
6 #include "openmpi/ompi/mpi/cxx/mpicxx.h"
找不到
安装openMpi
sudo apt-get update
sudo apt-get install libopenmpi-dev
最后观察下列指令nvcc -DUSING_CUDA -DUSING_MPI MC-GPU_v1.3.cu -o MC-GPU_v1.3.x -O3 -use_fast_math -L/usr/lib/ -I. -I/usr/local/cuda/include -I/usr/local/cuda/samples/common/inc -I/usr/local/cuda/samples/shared/inc/ -I/usr/include/openmpi -lmpi -lz --ptxas-options=-v -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_70,code=sm_70
。
发现-I/usr/include/openmpi
openmpi路径在usr include文件夹下,去该文件夹下寻找并没有发现该文件,就根据自己使用mkdir 文件名创建一个目录 usr/include/openmpi/ompi/mpi/cxx/
,然后使用sudo
命令将从gittiub上下载下来的mpicxx.h文件放到所创建的目录里面去,报错如下,也就是显示mpicxx.h,怀疑是从网上下下来的.h文件有误,又去ubuntu的根目录里面继续搜索mpicxx.h文件,这次找到了自带的文件,将该文件替换掉从网上下载下来的文件之后,该错误解决
之后重复运行nvcc开头的语句,在同一个路径报错不同的头文件有问题,同样的去ubuntu的根目录里面继续搜索复制到对应文件夹即可
下列报错,./exception.h(36): error: identifier "MPI_Error_class" is undefined
是因为没有mpi.h头文件导致的,从有复制了一下改文件到/usr/include/文件。但是后面再次执行的时候又报错,最后是从网上重新下载了一个版本的exception.h才成功运行,但是存在一些警告,暂时忽略。到目前位置,nvcc打头的语句不再报错
第二个语句的调试
mpirun -n 4 ./MC-GPU_v1.3.x MC-GPU_v1.3.in
1 显示我没输入文件
将输入文件按照错误提示重命名一下,该错误解决
2 又提示输入光谱文件有问题
是因为光谱文件有问题,一开始输入的光谱内容是这样的,第一列是能量,单位是kev,第二列是没有归一化的光子数。
以下是正确的光谱输入方法
3 材料的设置
好像输入材料的长度要和光谱长度保持一致,比如输入94kv的光谱。。。。这个坑我不是很理解,后续填
4 体模设置
。。。。这个坑,后续填
最后代码可以直接用visual studio code打开,将其当作编译器
编译器的终端就可以直接运行mcGPU,同在linux里面打开的终端是一样的功能。
使用 cd home/我的用户名/MCGPU-master
在visual studio code下方的终端里面进入改文件夹,执行./MC-GPU_v1.3.x MC-GPU_v1.3.in
就是运行