# 注意:安装好gem5-gpu后再配置全系统环境

# 下载全系统模拟需要的工具,详见http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode,将Linux image放在binaries目录,disk image放在disks目录
# 跳过此步,因为下面俩个链接提供的Full System Files旧,会出现kernel too old、NR_CPUS limit reached 错误信息:
http://www.m5sim.org/dist/current/x86/x86-system.tar.bz2
# Config files :
http://www.m5sim.org/dist/current/x86/config-x86.tar.bz2 # 较新的Linux kernel image和disk(parsec):
http://www.cs.utexas.edu/~parsec_m5/x86_64-vmlinux-2.6.28.4-smp
http://www.cs.utexas.edu/~parsec_m5/x86root-parsec.img.bz2

# 目录结构为:
# -x86-system
#   -binaries
#   -configs
#   -disks
# 修改gem-gpu/gem5/configs/common/SysPath.py,修改存放disk和image的目录:
path = [ '/dist/m5/system', '~/x86-system' ] # 修改gem5-gpu/gem5/configs/common/Benchmarks.py,X86对应的代码:
return env.get('LINUX_IMAGE', disk('x86root-parsec.img')) # 修改gem5-gpu/gem5/configs/common/FSConfig.py中的makeLinuxX86System方法
self.kernel = binary('x86_64-vmlinux-2.6.28.4-smp') # 下载linux-bigswap2.img ,放在x86-system/disks中
http://www.m5sim.org/dist/current/m5_system_2.0b3.tar.bz2 # 修改gem5/src/arch/X86/cpuid.cc,解决kernel bug、kernel panic问题,将后面的两个参数改成 0xe7dbfbff, 0x00000209);
# kernel BUG at arch/x86/kernel/xsave.c:!
# Kernel panic - not syncing: Attempted to kill the idle task!
# Ref:https://groups.google.com/d/msg/gem5-gpu-dev/2ATuMoTPRTE/JJihLqzPCwAJ
result = CpuidResult(0x00020f51, 0x00000805,0xe7dbfbff, 0x04000209);

# 注释gem5-gpu/gem5-gpu/configs/fs_fusion.py中的m5.disableAllListeners(),启动监听端口 # 此项改动可选
# 修改gem5/src/mem/packet_queue.cc,解决Packet queue %s has grown beyond packets
if (transmitList.size() > )
# 编译gem5-gpu,如果仅修改了Python脚本,则无需重新编译;重新编译时,有时会出现build目录下缺少文件,将build目录下的文件删除后再编译!
# WORKDIR gem5-gpu/gem5
cd gem5
scons -j 3 build/X86_VI_hammer_GPU/gem5.opt --default=X86 EXTRAS=../gem5-gpu/src:../gpgpu-sim/ PROTOCOL=VI_hammer GPGPU_SIM=True # 此步可选,编辑gem5-gpu/configs/fs_fusion.py,注释m5.disableAllListeners(),在Instantiate system前设置CPU核心数,设4
options.num_cpus = # 运行模拟器,未指定 workload,启动虚拟Linux后,进入bash shell
build/X86_VI_hammer_GPU/gem5.opt ../gem5-gpu/configs/fs_fusion.py # 打开另一个终端, 连接至虚拟终端,在终端中执行bash命令、运行benchmark。详见http://gem5.org/Running_gem5#Full_System_.28FS.29_Mode
telnet localhost

# 若要启动全系统模式完成后立即执行特定workload,需要启动gem5时使用“--script”选项
# 设rcS脚本为 backprop.rcS,内容为:
cd /rodinia/backprop
/sbin/m5 resetstats
./backprop_fusion [options?]
/sbin/m5 exit
# 要执行backprop_fusion,需要将可执行文件复制到disk中,路径如rcS文件中的一样
# 挂载镜像到/mnt目录,offset=起点 X sectorSize
sudo mount -o loop,offset=32256 x86root-parsec.img /mnt
# 复制benchmark到镜像中,并卸载镜像
sudo cp -r rodinia/backprop /mnt
sudo umount /mnt # 运行backprop.rcS
build/X86_VI_hammer_GPU/gem5.opt gem5-gpu_home/gem5-gpu/configs/fs_fusion.py --script=/path/to/your/rcS_File/backprop.rcS

# ——____———完———————————___—————__————————====———完_______________------______________=___________________--_完___-----




# 小插曲。
#运行某些程序时会出现DEADLOCK,可以修改deadlock_threshold,需要注意的是gem5-gpu/configs/gpu_protocol目录和gpgpu-sim/gpgpu-sim/gpu-sim.cc
# 查看磁盘镜像信息;
fdisk -lu x86root-parsec.img
# ls /mnt可以查看到镜像中的文件
# df -h查看磁盘镜像的可用容量,如果不够放benchmark,则需要扩充容量
http://zebinj.blog.163.com/blog/static/206290199201412114912137
http://www.somethingsomewhere.net/resize2fs-bad-magic-number-in-super-block

# rcS cd命令无法进入benchmark所在目录。可能需要将benchmark复制到镜像后,再改变镜像中目录的权限(a+wr),即可进入。

# 令我费解的是:将全新的镜像放入disk目录,rcS中的ls命令居然有chai-cuda-u-sim目录removing ptxinfo 很慢~~~?

# 运行chai-cuda-u-sim,serial8250: too much work for irq4

# Ref:https://groups.google.com/d/msg/gem5-gpu-dev/CSEH38SXKh8/_EGIaDw8COwJ

Pass the command line parameter --access-host-pagetable (or something like that).

gem5-gpu全系统模式的更多相关文章

  1. Gem5全系统模式下运行SPLASH-2 Benchmarks使用alpha ISA

    Steps to run the SPLASH-2 Benchmarks on M5 in full system mode using the alpha ISA. This Guide is ai ...

  2. guider – 全系统Linux性能分析器

    Guider是一个免费且开源的,功能强大的全系统性能分析工具,主要以Python for Linux 操作系统编写. 它旨在衡量系统资源使用量并跟踪系统行为,从而使其可以有效分析系统性能问题或进行性能 ...

  3. 从数据仓库双集群系统模式探讨,看GaussDB(DWS)的容灾设计

    摘要:本文主要是探讨OLAP关系型数据库框架的数据仓库平台如何设计双集群系统,即增强系统高可用的保障水准,然后讨论一下GaussDB(DWS)的容灾应该如何设计. 当前社会.企业运行当中,大数据分析. ...

  4. 一点公益商城开发系统模式Ring Buffer+

    一个队列如果只生产不消费肯定不行的,那么如何及时消费Ring Buffer的数据呢?简单的方案就是当Ring Buffer"写满"的时候一次性将数据"消费"掉. ...

  5. 内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式.

    内核知识第12讲,SSDT表.以用户模式到系统模式的两种方式. 一丶IDT解析. 我们知道.IDT表中存放着各种中断信息.比如当我们调用int 3的时候,则会调用IDT表中的第三项来进行调用. 而函数 ...

  6. [LeetCode] Design Search Autocomplete System 设计搜索自动补全系统

    Design a search autocomplete system for a search engine. Users may input a sentence (at least one wo ...

  7. 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)

    一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...

  8. Hadoop全分布式模式安装

    一.准备 1.准备至少三台linux服务器,并安装JDK 关闭防火墙如下 systemctl stop firewalld.service systemctl disable firewalld.se ...

  9. TOP全异步模式

    Top全异步方式调用技术方案 背景:目前top通过servlet3.0技术结合异步管道化框架做到半异步调用,半异步调用采用异步线程同步调用后端的方式来做api call @飞不起的奥特曼 的部分文档) ...

随机推荐

  1. 基于金山快盘的Git服务器、快盘+ Git GUI 实现代码版本管理

        Git,这货堪称神器,用了它就再也不想用其他VCS了,就像上了高速就不想再走国道一样. Git的强大之处在于,你可以在局域网内的任何一个共享路径下创建仓库,而不需要运行任何服务.所有的操作都是 ...

  2. JS实现复制信息到剪贴板

    copy 当用户通过浏览器UI启动复制操作并响应允许的document.execCommand('copy')调用时触发copy事件. copy事件可作用于任何可被选中或可编辑的元素,如body.di ...

  3. 三、java基础-方法含义_重载_递归

    1.java中方法: 方法的含义: 就是一个代码片段,可以完后某个特定的功能,可以重复利用: 定义方法的语法: [方法的修饰符列表]   方法的返回值类型   方法名{    java语句; } 注意 ...

  4. 导弹拦截p1020(LIS问题)

    题目描述(题目链接:https://www.luogu.org/problem/P1020) 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够 ...

  5. Zero 初识Sciter

    在浏览有关Sciter技术前,您需要花点时间浏览以下内容. 您是否需要花时间学习Sciter? 如果您的工作或您想从事的工作与桌面应用开发无关,那么您不需要学习Sciter. 如果您不认同HTML\C ...

  6. @vue-cli的安装及vue项目创建

    1.安装 Node.js & Vue CLI @vue/cli3,是vue-进行搭建的脚手架项目,它本质上是一个全局安装的 npm 包,通过安装它,可以为终端提供 vue 命令,进行vue项目 ...

  7. CSS-lineheight

    .test div{width:300px;margin:15px 0;border:1px solid #000;}.test p{margin:0;font-size:30px;}.fixed d ...

  8. ffmpeg 学习:002-代码架构

    前言 使用 ffmpeg 库时,最好先理解好ffmpeg的代码结构图. 下面这张图表明了FFmpeg在解码一个视频的时候的函数调用流程,为了保证结构清晰,其中仅列出了最关键的函数,剔除了其它不是特别重 ...

  9. Mongoose多表查询

    文章来自 两个表关联查询aggregate 多个表关联查询aggregate populate多表关联查询 多表查询的两个方式 一个是aggregate聚合 一个是populate Schema的外表 ...

  10. Tcp 3次握手 4次挥手

    Tcp 3次握手 4次挥手 标签(空格分隔): Java基础 报文介绍: SYN(synchronous建立联机) ACK(acknowledgement 确认) FIN(finish结束) PSH( ...