gpgpusim在虚拟机里跑起来非常慢,而自己配机器的环境又可能会出现这样那样的问题。本文给出了一种使用gpgpusim提供的vbox虚拟机进行编译,在host的docker环境下运行的方法。
gpgpusim官方提供了vbox虚拟机文件的下载,大概7G多,
http://ece.ubc.ca/~taylerh/files/gpgpu-sim/gpgpu-sim.vm.tar.gz
直接从vbox里打开就行。里面的系统是ubuntu 14.04。
编译成功gpgpusim以后,实际上主要是生成了一个libcudart.so。
后面用docker的时候,我们会将文件夹挂载到docker里,在外部修改,在docker里运行。
建一个文件夹sim,可以建在你想放的地方,比如/home/find/e/gpgpusim/
。
在该目录下建立libsim,将vbox虚拟机里编译好的/home/gpgpu-sim/gpgpu-sim_distribution/lib/gcc-4.6.4/cuda-4020/release/libcudart.so
及其软链接拷贝过来,直接拷贝so文件到/home/find/e/gpgpusim/libsim/
文件夹下即可。
新建目录/home/find/e/gpgpusim/cuda/
,将vbox虚拟机里/home/gpgpu-sim/cuda/toolkit/4.2/cuda/bin
文件夹拷贝到这里,即/home/find/e/gpgpusim/cuda/
里只有一个bin文件夹。(或者将vbox虚拟机里整个cuda文件夹拷贝过来也行)
由于gpgpusim必须使用gcc4.7及以前的版本,而修改自己的电脑系统可能带来不方便,因此使用docker来运行程序,docker在运行程序时,性能损失大概在10%以内,但也比vbox快多了。
直接docker pull ubuntu:14.04从docker hub pull ubuntu
提供的官方的14.04版本系统,参考 Docker学习笔记目录以前的文章,运行以下命令可以将外部的文件夹挂载到docker里去:
docker run --name gpgpusim -it -v /home/find/e/gpgpusim:/root/sim/ ubuntu:14.04 /bin/bash
进入docker里的ubuntu14.04以后,设置为中科大的源,update系统,安装如下包:
apt install -y gcc gcc-4.6 g++ g++-4.6 build-essential vim
修改docker里~/.bashrc文件,添加如下内容:
export CUDA_INSTALL_PATH=/root/sim/cuda/
export LD_LIBRARY_PATH=/root/sim/libsim/
export PATH=$PATH:/root/sim/cuda/bin/
到/usr/bin/里将默认gcc和g++的软链接挂到4.6版本上:
cd /usr/bin
rm gcc g++
ln -s ./gcc-4.6 ./gcc
ln -s ./g++-4.6 ./g++
以vectoradd为例,在host的gpgpusim文件夹下建立test文件夹,并拷贝vectoradd.cu文件以及gpgpusim提供的配置文件(在/home/gpgpu-sim/gpgpu-sim_distribution/configs/GTX480/
文件夹下有三个文件)到test文件夹:
nvcc -o vectoradd ./vectoradd.cu
./vectoradd
即可发现可以正常运行,并有大量输出。
转载自:FindHao的Blog:https://www.findhao.net/easycoding/2404