环境
- 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.list1
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