在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里运行。
建一个文件夹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相关推荐
- MySQL 到底能不能放到 Docker 里跑?
https://weibo.com/ttarticle/p/show?id=2309404296528549285581 前言 前几月经常看到有 MySQL 到底能不能放到 Docker 里跑的各种讨 ...
- 你在 Docker 中跑 MySQL?恭喜你,可以下岗了!
欢迎关注方志朋的博客,回复"666"获面试宝典 容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker ...
- mysql自动从另外表取数_你在 Docker 中跑 MySQL?恭喜你,好下岗了!
容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也 ...
- docker 解决php 502,Docker里两个php容器一个正常访问,一个出现502 Bad Gateway nginx/1.17.8。...
问题描述 Docker里两个php容器一个镜像是phpfpm5.6,运行的程序是emlog,正常访问.一个镜像是phpfpm7.3,运行的程序是wordpress,运行的出现502 Bad Gatew ...
- 远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP
ASP(没有.NET) 即 Active Server Pages (动态服务器页面)是一项由微软公司在1996年推出的技术,能够在IIS中运行动态网站.也许许多90后及千禧一代程序员并没有听说过它, ...
- 在Docker里使用(支持镜像继承的)supervisor管理进程(转)
这篇文章是受 dockboard 之托帮忙翻译的与 docker 有关的技术文章.译自 Using Supervisor with Docker to manage processes (suppor ...
- [转帖]Docker里运行Docker docker in docker(dind)
Docker里运行Docker docker in docker(dind) http://www.wantchalk.com/c/devops/docker/2017/05/24/docker-in ...
- 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 就安装好了, ...
- 如何访问docker内php,主机怎么访问docker里的程序
主机怎么访问docker里的程序 需求: 1:本机访问docker中的应用 2:其他机器访问docker中的应用 3:dockerB中访问dockerA中的应用 已知环境:主机IP:192.168.2 ...
最新文章
- 2020年最全最简单KMP算法讲解
- oracle 系统检查点,检查点(Checkpoint)优化及故障排除指南
- web开发人员必备的提高开发水平的20个参考手册
- CSS3导入字体后用另外一种索引去加载字体里面的字符的问题。
- BZOJ 3173: [Tjoi2013]最长上升子序列 [splay DP]
- 软件科技创新创业基地暑期集训有感
- 2017前端开发手册三-前端职位描述
- android系统 vender添加自定义的预编译的应用程序
- 推荐35个非常有创意的404错误页面
- 流密码(一)同步流密码、自同步流密码以及线性反馈移位寄存器
- 2.数据类型--数值类型
- Java函数的基本知识
- BIOS设置 硬盘热插拔功能
- 服务器内存16g显示8g可用,电脑安装内存16g可用8g怎么办
- 拓嘉辰丰:拼多多店铺装修有哪几个部分
- 【案例教程】GEE遥感云大数据在林业中的应用
- operator=、operator[]、operator()操作符重载
- Lumerical Python API学习(七)——可视化几何
- linux系统下vi编辑文本时显示行号
- 计算机无法代替的工作有哪些,人工智能代替不了哪些行业?一起来看看!
热门文章
- 02.微软官方启动U盘装机教程
- 领导 - 如何培养您的团队的信心
- 用EditPlus配置MASM汇编
- 关闭windows server 2012 IE增强的安全配置
- moviepy 视频剪辑,拼接,合成
- 使用ffmpeg在视频中心添加透明水印
- VDI 虚拟桌面基础架构(VDI,Virtual Desktop Infrastructure)
- Win10自带的中文输入法在Sublime Text中不跟随光标的解决方案
- 扫盲-----addEventlistener()方法,事件监听(一)
- 解决Thymeleaf报Property or field ‘replyIdContent‘ cannot be found on null的错问题