snipersim Manual

这篇文章的目的就是详细描述采样大型应用的整个过程,找到具有代表性的区域来进行模拟,对他们做检查点,并且通过使用多样的性能模型来模拟运行这些检查点。要读懂这篇文章需要的只是就是对pin动态二进制插桩的了解。


模拟输出

在运行sniper之后,输出会创建在运行的当前目录下。

主要生成的文件是sim.out文件。它是由sniper/tools/gen simout.py命令生成的,包含模拟的基本信息,包括运行时间,指令数目,以及模拟的周期数【周期数只有在整个运行过程在一个核心频率的情况下才是有意义的】。除了看sim.out文件,还可以使用sniper/tools/sniper lib.py:get results()函数来解析和处理结果。sim.stat文件记录粗略的计数器信息,这些信息是有不同的sniper部件生成的。另外,sniper/tools/dumpstats.py也会生成对所有计数器的信息。


在运行integrated benchmarks的期间,ROI支持没有打开,整个应用都会在模拟器中执行而不只是执行ROI。

关于ROI

当模拟并行应用时,我们通常不关心benchmark的initialization 和cleanup阶段。当应用被用SimRoiBegin() and SimRoiEnd() markers标记的时候,sniper可以只在ROI区域打开性能模型。默认情况下,sniper假设应用没有这样的marker并执行整个应用。--roi选项来运行run-sniper会改变这个行为,并且在开始时运行在cache-only模式【用来warm up cache的初始化阶段,--no-cache-warming选项用来使用fast-forward模式】直到应用执行到SimRoiBegin(),并且在SimRoiEnd()执行完之后将模式切换到fast-forward模式。integrated benchmark已经包含了ROI marker。实际上,当使用benchmarks内部的run-sniper时,已经隐含使用了--roi选项【要完整执行整个benchnark就使用 benchmarks/run-sniper --no roi的方法,这样就可以完整执行整个应用】

对执行模式的更详细的控制可以通过使用--roi-script参数。这个方式会使用fast-forward方法启动程序,并且忽略应用中的任何SimRoiBegin()/SimRoiEnd() markers。相反,一个pyrhon 脚本可以确定何时打开performance模型。【这个脚本由一些回调函数出发,例如HOOK_ROI_BEGIN/END或者HOOK_MAGIC_MARKER】。举个例子,For an example, see the fft-marker test application which uses a combination of SimMarker()s in the application and the iter2.py script to use the rst iteration of the FFT algorithm to warm up caches, execute only the second iteration in detail, and fast-forward through the remainder of the application.

要注意的是所有的magic指令,包括ROI markers,目前只在单应用模式中支持,在使用trace文件模式和多个多线程应用模式中不支持。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值