序言
GPGPU-Simer都应该体验过Sim在虚拟机中奇慢无比的速度,一个在真实环境下几ms就跑完的benchmark,在Sim下通常需要几十分钟到几小时。跑一次实验benchmark多了基本就得一天,比较浪费时间。
等待总是无聊的,本篇博客将给出我自己总结的几种加快Sim运行速度的解决方案。
方案一:堆硬件
ssd,加内存,上好CPU,使劲堆,有钱任性
方案二:减少Sim输出
输出信息打印出来是很耗时间的,Sim本身的很多输出是并没有太大的作用,可以将无用的输出注释掉
方案三:在真实机子上装Sim
Sim是一个比较小众的仿真器,编译用的还是gcc 4.5.1, cuda 4.2,Ubuntu 10.04. 所以才选用虚拟机作为运行平台。官方给的虚拟机镜像是Ubuntu 12.04,所以在真实电脑较新的Ubuntu系统上装Sim是理论上可行的(虽然我没试过)。但是缺点很明显,需要折腾,手动编译gcc就够受的,还要解决各种依赖和软件版本问题。最大的缺点就是,一旦崩溃,有时只能重装。我觉得除非是linux大神,否则不建议这么弄。
方案四:虚拟机编译,正常电脑运行
这是实验室博士发现的一个方法。也是本博客重点说明的一个方案。
首先要明白Sim的模拟机制,我在这篇博客里进行了简单介绍。总结为一句话:GPGPU-Sim编译生成的库文件是模拟cuda程序运行的关键。
基于这个原理,我来介绍一下该方案的细节。
环境 : GPGPU-Sim3.2.2,Ubuntu 14.04,CPU i7,12G 内存
- 在Ubuntu下,新建一个文件夹-Sim
- 在Sim下新建lib_default文件夹,先在虚拟机中编译Sim,将Sim生成的
libcudart.so
和libOpenCL.so
相关的lib文件全都拷到Sim文件夹下。 - 将虚拟机中cuda安装目录下的bin文件夹拷到sim文件下。其实bin中的东西我们只需要一部分,省事一块考进来。
- 新建一个
setvar.sh
文件,内容如下
export CUDA_INSTALL_PATH=~/sim
export LD_LIBRARY_PATH=./lib_default
然后执行 source setvar.sh
,这里请区分source setvar.sh
和./setvar.sh
的效果。
将benchmark拷贝到sim文件夹下,就可以用sim模拟执行了。
此方案实现了在真实机子上用Sim模拟benchmark运行而不用装gcc4.5.1和cuda4.x。并且非常灵活,我们可以将修改的GPGPU-Sim生成的libs放在不同的文件夹下,然后写sh跑就可以了。
打个广告,欢迎光临我的淘宝苹果店-加菲猫和光叔的苹果店,里面有宇宙无敌超级好吃的栖霞大苹果
转载请注明出处!