最近做实验要搭建GPGPU-Sim环境,无奈这个软件太过小众,官网教程也不明确,百度只查到大光叔叔在2015年发的比较完整的安装方法(大光安装方法),但安装的Ubuntu版本太过老旧,还是server版本,太不友好了。
遂谷歌之,找了几个比较方法,折腾了大半天,最后终于在Ubuntu 18.04中安装成功,事实证明Ubuntu版本不重要,主要是cuda和gcc、g++版本要安装正确。现将完整步骤分享如下:
GPGPU-Sim(http://gpgpu-sim.org/ ) 用来评估GPU运行一个应用所需要的时钟周期数。当前GPGPU-Sim支持四种架构:GTX480、QuadroFX5600、QuadroFX5800和TeslaC2050。
一、下载安装NVIDIA CUDA 4.0
1.下载ubuntu linux 10.10 cuda toolkit和GPU Computing SDK code samples
Https://developer.nvidia.com/cuda-toolkit-40
GPGPU-Sim只支持到cuda 4
2.安装CUDA toolkit
chmod +x cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
sudo ./cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
默认安装在/usr/local/cuda,不用管他,直接enter。
3.增加CUDA toolkit到~/.bashrc中,添加环境变量
.bashrc在根目录下,是隐藏文件,按control+H可看到
echo 'export PATH=$PATH:/usr/local/cuda/bin' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib:/usr/local/cuda/lib64' >> ~/.bashrc
source ~/.bashrc
可用vim查看:
sudo vim ~/.bashrc
可看到底部两行已加入路径。
4.安装GPU Computing SDK code samples
chmod +x gpucomputingsdk_4.0.17_linux.run
sudo ./gpucomputingsdk_4.0.17_linux.run
默认安装在~/NVIDIA_GPU_Computing_SDK路径中,不用管他。
5.安装gcc-4.4和g+±4.4(CUDA 4.0只支持gcc版本到4.4)
sudo apt-get install gcc-4.4 g++-4.4
由于Ubuntu 18.04自带7.4.0版本gcc,所以无法安装
可通过以下方法修改:
sudo vim /etc/apt/sources.list
底部增加两行代码,按I插入:
deb http://dk.archive.ubuntu.com/ubuntu/ trusty main universe
deb http://dk.archive.ubuntu.com/ubuntu/ trusty-updates main universe
添加好后,按esc,然后按**:wq**,保存退出。
更新apt源:
sudo apt-get update
再重新安装gcc-4.4和g++ -4.4就可以了
sudo apt-get install gcc-4.4 g++-4.4
6.改变系统中的gcc/g++为gcc-4.4/g+±4.4
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 150
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 150
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100
用update-alternatives选择4.4版本:
sudo update-alternatives --config gcc
二、下载和安装GPGPU-Sim
1.从GitHub下载GPGPU-Sim
sudo apt-get install git
git clone https://github.com/gpgpu-sim/gpgpu-sim_distribution.git
2.安装依赖
sudo apt-get install build-essential xutils-dev bison zlib1g-dev flex libglu1-mesa-dev
sudo apt-get install doxygen graphviz
sudo apt-get install python-pmw python-ply python-numpy libpng12-dev python-matplotlib
sudo apt-get install libxi-dev libxmu-dev freeglut3-dev
3.添加CUDA_INSTALL_PATH到~/.bashrc中
echo 'export CUDA_INSTALL_PATH=/usr/local/cuda' >> ~/.bashrc
source ~/.bashrc
4.编译GPGPU_Sim
source setup_environment
make
make docs
make结束会出现错误
移除cuobjdump.l:109-111行:
sudo vim cuobjdump.l
再make就不会出现错误了
make
5.运行GPGPU_Sim
我们先看看gcc、g++、cuda版本
gcc -v
g++ -v
nvcc --version
cuda程序示例:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
__global__ void kernel(void) {
}
int main() {
kernel << <1, 1 >> > ();
printf("Hello world!\n");
return 0;
}
保存为hello.cu格式。
终端运行:
nvcc hello.cu -o hello.out
生成一个hello.out文件
./hello.out
但还不能运行GPGPU_Sim,要将GTX480文件夹下的三个文件都复制到程序中。但我发现在其他的文件夹中不能激活GPGPU_Sim环境,有可能是没有加到环境变量中的原因。所以我将刚才生成的hello.out文件复制到gugpu-sim_distribution文件夹下,并将/configs/GTX480中的三个文件复制出来。
在此路径中运行:
source setup_environment
./hello.out
会发现出现一大堆信息,最后可以看到运行时间,速率等信息,以及最后的输出。至此,GPGPU_Sim安装运行完毕。
三、运行ispass-2009 benchmarks
1.编译运行GPU Computing SDK code samples
进入到/home/superlinc/NVIDIA_GPU_Computing_SDK/C中,直接make。
但会出现错误。
按网上教程步骤:
- 打开./C/common/common.mk,将 ( R E N D E R C H E C K G L L I B ) 放 在 (RENDERCHECKGLLIB)放在 (RENDERCHECKGLLIB)放在{OPENGLLIB}前面
LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) $(CUDPPLIB) ${LIB} -ldl -rdynamic
LIB += -lcuda $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) $(CUDPPLIB) ${LIB}
LIB += $(RENDERCHECKGLLIB) ${OPENGLLIB} $(PARAMGLLIB) $(CUDPPLIB) ${LIB}
- 类似地,编辑./CUDALibraries/common/common.mk
- cd ~/NVIDIA_GPU_Computing_SDK
- 编辑Makefile。把CUDALibraries、OpenCL注释掉
- make
- 所有的文件在~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/里。
按照上面的教程,我make还是会出先同样的问题。
2.下载ispass-2009 benchmarks
cd /home/gpgpu-sim_distribution
git clone https://github.com/gpgpu-sim/ispass2009-benchmarks.git
cd ispass2009-benchmarks/
3.打开Makefile.ispass-2009,顶部加上环境变量
注意:不是bashrc,是Makefile.ispass-2009中加环境变量!!!
export CUDA_INSTALL_PATH=/usr/local/cuda
PATH=${CUDA_INSTALL_PATH}/bin:$PATH:/usr/bin:/bin
NVIDIA_COMPUTE_SDK_LOCATION=/home/superlinc/NVIDIA_GPU_Computing_SDK
4.编译
make -f Makefile.ispass-2009
会有很多编译不了,注释掉
#$(SETENV) make noinline=$(noinline) -C AES
#$(SETENV) make noinline=$(noinline) -C DG/3rdParty/ParMetis-3.1
#$(SETENV) make noinline=$(noinline) -C DG
#$(SETENV) make noinline=$(noinline) -C WP
可以编译通过了
make -f Makefile.ispass-2009
生成的二进制文件在…/bin/release/中。
5.激活环境,链接GPU配置文件
cd /home/gpgpu-sim_distribution
source setup_environment
cd ispass2009-benchmarks/
./setup_config.sh GTX480
6.运行基准测试,比如NN
cd NN/
sh README.GPGPU-Sim
会有错误,gpuwattch_gtx480.xml找不到,不用管他。
至此,所有安装完毕。