在docker里跑gpgpusim

1. Introduction

gpgpusim在虚拟机里跑起来非常慢,而自己配机器的环境又可能会出现这样那样的问题。本文给出了一种使用gpgpusim提供的vbox虚拟机进行编译,在host的docker环境下运行的方法。

2. 使用gpgpusim官方vbox虚拟机

gpgpusim官方提供了vbox虚拟机文件的下载,大概7G多,

http://ece.ubc.ca/~taylerh/files/gpgpu-sim/gpgpu-sim.vm.tar.gz

直接从vbox里打开就行。里面的系统是ubuntu 14.04。

3. 编译

编译成功gpgpusim以后,实际上主要是生成了一个libcudart.so

4. 拷贝必须的文件

后面用docker的时候,我们会将文件夹挂载到docker里,在外部修改,在docker里运行。

  1. 建一个文件夹sim,可以建在你想放的地方,比如/home/find/e/gpgpusim/
  2. 在该目录下建立libsim,将vbox虚拟机里编译好的/home/gpgpu-sim/gpgpu-sim_distribution/lib/gcc-4.6.4/cuda-4020/release/libcudart.so及其软链接拷贝过来,直接拷贝so文件到/home/find/e/gpgpusim/libsim/文件夹下即可。
  3. 新建目录/home/find/e/gpgpusim/cuda/,将vbox虚拟机里/home/gpgpu-sim/cuda/toolkit/4.2/cuda/bin文件夹拷贝到这里,即/home/find/e/gpgpusim/cuda/里只有一个bin文件夹。(或者将vbox虚拟机里整个cuda文件夹拷贝过来也行)

5. 使用docker

由于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

6. 设置环境变量

修改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++

7. 运行

以vectoradd为例,在host的gpgpusim文件夹下建立test文件夹,并拷贝vectoradd.cu文件以及gpgpusim提供的配置文件(在/home/gpgpu-sim/gpgpu-sim_distribution/configs/GTX480/文件夹下有三个文件)到test文件夹:

nvcc -o vectoradd ./vectoradd.cu 
./vectoradd

即可发现可以正常运行,并有大量输出。

Reference

GPGPU-Sim 之 提高运行benchmark的速度(转载整理)

GPGPU-SIM github

GPGPU-Sim(番外)-如何加快GPGPU-Sim的运行速度

文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
http://www.findhao.net/easycoding/2404

你可能喜欢:

Find

新浪微博(FindHaoX86)QQ群:不安分的Coder(375670127)不安分的Coder 微信公众号(findhao-net)

发表评论

电子邮件地址不会被公开。 必填项已用*标注