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里运行。

建一个文件夹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文件夹拷贝过来也行)

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

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

转载自:FindHao的Blog:https://www.findhao.net/easycoding/2404

在docker里跑gpgpusim相关推荐

  1. MySQL 到底能不能放到 Docker 里跑?

    https://weibo.com/ttarticle/p/show?id=2309404296528549285581 前言 前几月经常看到有 MySQL 到底能不能放到 Docker 里跑的各种讨 ...

  2. 你在 Docker 中跑 MySQL?恭喜你,可以下岗了!

    欢迎关注方志朋的博客,回复"666"获面试宝典 容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker ...

  3. mysql自动从另外表取数_你在 Docker 中跑 MySQL?恭喜你,好下岗了!

    容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也 ...

  4. docker 解决php 502,Docker里两个php容器一个正常访问,一个出现502 Bad Gateway nginx/1.17.8。...

    问题描述 Docker里两个php容器一个镜像是phpfpm5.6,运行的程序是emlog,正常访问.一个镜像是phpfpm7.3,运行的程序是wordpress,运行的出现502 Bad Gatew ...

  5. 远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP

    ASP(没有.NET) 即 Active Server Pages (动态服务器页面)是一项由微软公司在1996年推出的技术,能够在IIS中运行动态网站.也许许多90后及千禧一代程序员并没有听说过它, ...

  6. 在Docker里使用(支持镜像继承的)supervisor管理进程(转)

    这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...

  7. [转帖]Docker里运行Docker docker in docker(dind)

    Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in ...

  8. ubuntu安装谷歌浏览器 typora+出现编码错误‘ascii‘ codec can‘t encode character ‘\u6b66‘+docker里安装tensorrt报错

    一.首先下载谷歌浏览器 https://www.google.cn/chrome/ sudo dpkg -i google-chrome-stable_current_amd64.deb 就安装好了, ...

  9. 如何访问docker内php,主机怎么访问docker里的程序

    主机怎么访问docker里的程序 需求: 1:本机访问docker中的应用 2:其他机器访问docker中的应用 3:dockerB中访问dockerA中的应用 已知环境:主机IP:192.168.2 ...

最新文章

  1. 2020年最全最简单KMP算法讲解
  2. oracle 系统检查点,检查点(Checkpoint)优化及故障排除指南
  3. web开发人员必备的提高开发水平的20个参考手册
  4. CSS3导入字体后用另外一种索引去加载字体里面的字符的问题。
  5. BZOJ 3173: [Tjoi2013]最长上升子序列 [splay DP]
  6. 软件科技创新创业基地暑期集训有感
  7. 2017前端开发手册三-前端职位描述
  8. android系统 vender添加自定义的预编译的应用程序
  9. 推荐35个非常有创意的404错误页面
  10. 流密码(一)同步流密码、自同步流密码以及线性反馈移位寄存器
  11. 2.数据类型--数值类型
  12. Java函数的基本知识
  13. BIOS设置 硬盘热插拔功能
  14. 服务器内存16g显示8g可用,电脑安装内存16g可用8g怎么办
  15. 拓嘉辰丰:拼多多店铺装修有哪几个部分
  16. 【案例教程】GEE遥感云大数据在林业中的应用
  17. operator=、operator[]、operator()操作符重载
  18. Lumerical Python API学习(七)——可视化几何
  19. linux系统下vi编辑文本时显示行号
  20. 计算机无法代替的工作有哪些,人工智能代替不了哪些行业?一起来看看!

热门文章

  1. 02.微软官方启动U盘装机教程
  2. 领导 - 如何培养您的团队的信心
  3. 用EditPlus配置MASM汇编
  4. 关闭windows server 2012 IE增强的安全配置
  5. moviepy 视频剪辑,拼接,合成
  6. 使用ffmpeg在视频中心添加透明水印
  7. VDI 虚拟桌面基础架构(VDI,Virtual Desktop Infrastructure)
  8. Win10自带的中文输入法在Sublime Text中不跟随光标的解决方案
  9. 扫盲-----addEventlistener()方法,事件监听(一)
  10. 解决Thymeleaf报Property or field ‘replyIdContent‘ cannot be found on null的错问题