0. 前言
2022-11-25 20:05:01。笔记写得比较早,大概是21年用 gpgpusim 那段时间写的,补一下前言。
在使用 gpgpusim 的时候,切换 gcc, CUDA 版本是非常常见的场景。由于这些操作涉及到有系统文件夹的修改,涉及到 sudo 权限,所以最好在 Docker 环境下配置 gpgpusim 开发环境。
1. CUDA 版本切换
切换CUDA9.0和CUDA10.0
保证多个CUDA版本共存的前提是NVIDIA的驱动都能够支持你所安装的CUDA版本,所以驱动的版本尽可能高,越新的驱动支持的CUDA版本越多,博主的430能够支持9.0和10.0。
在先前安装的CUDA的过程中,大家一般都会选择生成cuda-x.0文件夹的软链接/usr/local/cuda,这个文件夹是实际安装的cuda-x.0文件夹的链接,不包含实际文件,是方便系统设置环境变量直接调用cuda的,安装多个版本的CUDA,然后利用软链接就可以实现版本切换。
- 理解这个软链接,用到了很多次
1.1 Step
1.1.1 更换软链接
不过之前环境变量用的 cuda11.1 的地址而非软链接,现在替换成软链接
sudo rm -rf /usr/local/cuda #删除之前生成的软链接
sudo ln -s /home/huweim/cuda/toolkit/4.2/cuda /usr/local/cuda #生成新的软链接
sudo ln -s /usr/local/cuda-11.1 /usr/local/cuda #使用11.1版本
1.1.2 Check 环境变量的地址
export CUDA_INSTALL_PATH=/usr/local/cuda/
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$CUDA_INSTALL_PATH/bin:$MPI_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_INSTALL_PATH/lib64 #这个不用改
export NVIDIA_COMPUTE_SDK_LOCATION=~/cuda/sdk/4.2
1.1.3 查看版本信息
上述步骤全部没问题就可以弹出版本信息了,source ~/.bashrc
或者重启终端
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2012 NVIDIA Corporation
Built on Thu_Apr__5_00:24:31_PDT_2012
Cuda compilation tools, release 4.2, V0.2.1221
1.1.4. Bug
1.1.4.1 sh: 1: nvopencc: Permission denied
解决方法
sudo chmod -R 777 /usr/local/cuda
2. gcc 版本切换
切换gcc, g++ 9 -> 5
Reference
linux上可以gcc多版本共存,可以通过修改软链接的方式选择自己要用的gcc版本,该方法简单方便,可以随时依据自己的需求将gcc降级或升级,解决不同的软件要求不同的环境的问题。
apt-get安装gcc、g++,默认下载最新版本的,此时ubuntu里的gcc和g++版本均为9。
1. sudo apt-get install gcc
2. sudo apt-get install g++
3. gcc -v //查看的版本为9.0.0
4. g++ -v //查看的版本为9.0.0
2.1 apt-get 方法重新安装
2.1.1 软件源
通过 apt-get 方法安装的话,不一定每个版本的 gcc 都有,因此需要找到合适的源。
打开 sources.list
sudo gedit /etc/apt/sources.list
Add
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
Update
sudo apt-get update
2.1.2 安装gcc5, g++5
apt-get 安装gcc、g++ 5版本。
sudo apt-get install g++-5 gcc-5
sudo apt-get -f install #if need
2021-07-09 10:40:42 gcc5版本又出现了一些问题,找教程安装了 gcc4.8 版本,这个文章里面说最低 4.7 版本,那就先用 4.8 版本试试 gpgpu-sim 能不能 work
sudo apt-get install gcc-4.8
sudo apt-get install g++-4.8
2.1.3 查看
ls /usr/bin/gcc*
ls /usr/bin/g++*
2.1.4 设置优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 90
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 80
增加
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 95
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 95
成功配置上了 gcc 4.8
由于gpgpusim必须使用gcc4.7及以前的版本,而修改自己的电脑系统可能带来不方便,因此使用docker来运行程序,docker在运行程序时,性能损失大概在10%以内,但也比vbox快多了。
好吧,必须使用 gcc4.7 以前的版本
删除
删除update-alternatives对某一个版本的管理使用命令
$ update-alternatives --remove gcc /usr/bin/gcc-4.8
2.1.5 选择gcc/g++版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
输入编号选择gcc/g++版本
⚠️ gcc/g++版本须保持一致
2.1.6 Check 版本
gcc -v
g++ -v
2.2 conda 中改变 gcc 版本
直接在 conda install gcc_linux-64=7.5.0 之后,系统中的 gcc 版本仍然没有改变,需要设置软链接。
conda create -n ngp
conda install gcc_linux-64=7.5.0
ln -s ~/anaconda3/envs/ngp_1/libexec/gcc/x86_64-conda-linux-gnu/7.5.0/gcc ~/anaconda3/envs/ngp_1/bin/gcc
conda deactivate
conda activate ngp_1