环境
- ubuntu18.04
- cuda11
- gcc5.5
流程
安装依赖, 安装gcc5
GPGPU-sim所需的依赖如下
GPGPU-Sim dependencies:
1 | sudo apt-get install build-essential xutils-dev bison zlib1g-dev flex libglu1-mesa-dev |
GPGPU-Sim documentation dependencies:
1 | sudo apt-get install doxygen graphviz |
AerialVision dependencies:
1 | sudo apt-get install python-pmw python-ply python-numpy libpng12-dev python-matplotlib |
CUDA SDK dependencies:
1 | sudo apt-get install libxi-dev libxmu-dev libglut3-dev |
安装gcc, 这里使用gcc-5和g++-5, 高版本可能会在执行时seg fault
1 | sudo apt install gcc-5 g++-5 |
修改系统gcc版本, 添加到可用项, 最后的100表示优先级(越大优先级越高)适用于自动模式
1 | sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100 |
选择版本
1 | sudo update-alternatives --config gcc |
此时gcc和g++的默认版本应该是5: gcc -v
高版本ubuntu装gcc5
- 加软件源
vim /etc/apt/sources.list
1
2deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe - 包管理器更新数据
sudo apt update
- 安装
sudo apt install gcc-5 g++-5
- 根据上述步骤调整主次
安装CUDA和驱动
下载CUDA安装包
1 | wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run |
执行安装, 记得参数指定安装驱动和其他工具
1 | chmod +x cuda_11.1.0_455.23.05_linux.run |
键入accept
后, 仅选择安装Toolkit
即可。之后cuda会安装到/usr/local/cuda
。不同版本cuda的安装路径不同, 可以使用sudo find / -name "nvcc"
命令查找一下。
安装GPGPU-sim
下载GPGPU-sim源代码
1 | git clone https://github.com/gpgpu-sim/gpgpu-sim_distribution |
配置环境, 让gpgpu找到cuda, 可以在gpgpu-sim_distribution/setup_environment
文件的开头添加
1 | # setup_environment |
执行安装
1 | source setup_environment |
测试程序
创建目录
1 | mkdir test |
编辑测试程序test.cu
: 对0..31
逐个加1, 输出1..32
1 | // test.cu |
拷贝gpgpu-sim配置文件到当前工程, 配置顾名思义是某些型号显卡的模拟
1 | cd test |
编译运行
1 | nvcc --cudart shared -o test test.cu |
这里指定cudart
库是动态链接的, 有因为sourcet setup_environment
配置了动态链接的方法, 使用ldd工具看到编译后的二进制使用的是gpgpu-sim提供的动态库:
1 | libcudart.so.11.0 => /home/ub/gpgpu-sim_distribution/lib/gcc-5.5.0/cuda-11010/release/libcudart.so.11.0 (0x00007f7d44ae4000) |
TODO:
之后运行测试程序前记得要source setup_environment
, 它会配置动态链接的一些设置
坑
- gcc-5.4编译不行❌
- gcc-9编译不行❌, 编译出来seg fault
- gcc-5.5编译行✅
其他
- 目前gpgpu-sim 4.0没有支持
cudaMallocManaged