BBV:实验基本块向量生成工具

要使用此工具,必须--tool=exp-bbv在Valgrind命令行上指定 。

12.1。概观

基本块是具有一个入口点和一个出口点的代码的线性部分。甲基本块矢量(BBV)是程序执行过程中输入的所有的基本块的列表,以及每个基本块多少次运行的计数。

BBV是一种生成用于SimPoint 分析工具的基本块向量的 工具。SimPoint方法可以通过仅运行程序的一小部分,然后从这个小部分推断出整体行为,从而加速架构模拟。大多数程序表现出基于阶段的行为,这意味着在执行期间的不同时间,程序将遇到时间间隔,其代码的行为类似于之前的间隔。如果您可以检测到这些间隔并将它们组合在一起,则可以通过仅模拟最小数量的间隔,然后缩放结果来获得总体程序行为的近似值。

在计算机体系结构研究中,在循环精确模拟器上运行基准测试可能会导致1000倍的减速,从而需要数周,数周甚至更长的时间才能运行完整的基准。通过使用SimPoint可以显着降低,通常为90-95%,同时仍然保持合理的准确性。

T. Sherwood,E.Perelman,H. Hamerly和B. Calder在“自动表征大规模程序行为”的文章中可以找到SimPoint如何工作的更完整的介绍。

12.2。使用基本块向量创建SimPoints

要快速创建一个基本的块向量文件,您将像这样调用Valgrind:

valgrind --tool = exp-bbv / bin / ls

在这种情况下,我们正在运行/bin/ls,但这可以是任何程序。默认情况下,bb.out.PID将创建一个调用的文件 ,其中PID被正在运行的进程的进程ID替换。该文件包含基本的块向量。对于长时间运行的程序,此文件可能相当大,因此使用gzip或其他压缩程序进行压缩可能是明智之举。

要创建实际的SimPoint结果,您将需要可从SimPoint网页获得的SimPoint实用程序 。假设您下载了SimPoint 3.2并对其进行了编译,请使用以下命令创建SimPoint结果:

./SimPoint.3.2/bin/simpoint -inputVectorsGzipped \
    -loadFVFile bb.out.1234.gz \
    -k 5 -saveSimpoints results.simpts \
    -saveSimpointWeights results.weights

其中bb.out.1234.gz是由BBV生成的压缩基本块向量文件。

SimPoint实用程序使用15维进行随机线性投影,然后使用k均值聚类来计算哪些间隔是感兴趣的。在本例中,我们使用-k 5选项指定了5个间隔。

SimPoint运行的输出是 results.simpts 和results.weights文件。第一个是程序的最相关的5个间隔。当外推全程序行为时,秒数保持缩放每个间隔的权重。间隔和权重可以与支持快进的模拟器结合使用; 您快速转到感兴趣的间隔,收集所需间隔长度的统计数据,然后使用与权重结合使用的统计量来计算结果。

12.3。BBV命令行选项

BBV特定的命令行选项有:

--bb-out-file=<name> [default: bb.out.%p]

此选项选择基本块向量文件的名称。的 %p%q格式说明可以用来嵌入进程ID和/或名称的环境变量的内容,由于是用于芯选项的情况下 --log-file

--pc-out-file=<name> [default: pc.out.%p]

此选项选择PC文件的名称。该文件保存各种基本块的程序计数器地址和功能名称信息。这可以与基本块向量文件结合使用,通过函数名称快速转换,而不仅仅是指令计数。的 %p%q格式说明可以用来嵌入进程ID和/或名称的环境变量的内容,由于是用于芯选项的情况下 --log-file

--interval-size=<number> [default: 100000000]

此选项选择要使用的间隔的大小。默认值是100万条指令,这是一个常用的值。其他尺寸可以使用; 较小的间隔可以帮助程序更精细的阶段。然而,较小的间隔大小可能导致由于预热效应导致的准确性问题(当快速转发各种架构特征将被初始化时,在将“预热”到状态之前需要一些数量的指令进行完全模拟将没有快进,大间隔时间往往会减轻这种情况。)

--instr-count-only [default: no]

该选项指示该工具仅显示指令计数总计,并且不生成实际的基本块向量文件。这对于调试和收集指令计数信息而无需生成大型基本块向量文件非常有用。

12.4。基本块向量文件格式

基本块向量以固定间隔倾倒。这通常是每1亿个指令完成的; 该 --interval-size选项可用于更改此选项。

输出文件如下所示:

T:45:1024:189:99343
T:11:78573:15:1353:56:1
T:18:45:12:135353:56:78 314:4324263

每个新的间隔以T开始。在相同的行上跟随一系列基本块和频率对,一个在间隔期间输入的每个基本块。每个块/频率对的格式是冒号,后跟一个数字,唯一标识基本块,另一个冒号,然后是频率(这是块输入的次数乘以在块)。这些对由一个空格彼此分开。

频率计数乘以基本块中的指令数,以便权重计数,使得小基本块中的指令不被计入比大基本块中的指令更重要的位置。

SimPoint程序只处理以“T”开头的行。所有其他行都被忽略。传统的注释是用一个“#”字符开始的。一些其他BBV生成工具,如PinPoints,生成以“T”以外的字母开始的行,以指示有关正在运行的程序的更多信息。我们不会生成这些,因为SimPoint实用程序忽略它们。

12.5。履行

Valgrind提供创建BBV文件所需的所有信息。在当前的实现中,所有指令都将进行检测。这比使用基本块级别的方法慢(约两倍),但是有一些复杂性(特别是使用代表前缀检测),使得该方法更加困难。

Valgrind实际上提供了超级块级的仪器。超级块有一个入口点,但不同于基本块可以有多个出口点。一旦一个分支出现在一个块的中间,它被分割成一个新的基本块。由于Valgrind不能产生“真实”基本块,因此生成的BBV向量将与其他工具生成的不同。实际上,这似乎并不影响SimPoint结果的准确性。我们在内部强制 --vex-guest-chase-thresh=0 选择Valgrind,这迫使更基本的块状行为。

当超级块是第一次运行时,它会用我们的BBV程序进行测试。分配块信息(bbInfo)结构,其保存块的各种信息和统计信息。将唯一的块ID分配给块,然后将结构放入有序集中。然后,该块中的每个本地指令被调用为使用指向块信息结构的指针作为参数来调用指令计数例程。

在运行时,我们的指令计数例程每个本机指令被调用一次。访问相关的块信息结构,更新块计数和总指令数。如果总指令计数溢出间隔大小,则我们走排序集,写出在该间隔中访问的任何块的统计信息,然后将块计数器重置为零。

在x86和amd64架构上,计数代码具有处理代表前缀字符串指令的额外代码。这是因为实际的硬件将一个前缀的指令作为一个指令进行计数,而一个天真的Valgrind实现将会计数尽可能多(可能数百,数千甚至数百万)的指令。我们特别处理代表前缀的指令,以使结果与硬件性能计数器匹配。

BBV也计算fldcw指令。该指令以各种方式用于x86机器上; 将浮点值转换成整数时最常见。在Pentium 4系统上,退出的指令性能计数器将该指令计数为两条指令(所有其他已知处理器仅计数为一条)。当在Pentium 4系统上使用SimPoint时,这可能会影响结果。我们提供fldcw计数,以便用户可以评估是否会影响其结果,以避免使用奔腾4机器进行实验。可以为此工具添加一个模拟双重计数的选项,以便生成的BBV文件可用于使用Pentium 4系统上硬件性能计数器的实验。

12.6。线程可执行支持

BBV支持线程程序。当程序有多个线程时,会为每个线程创建一个附加的基本块向量文件(每个附加文件是指定的文件名,结尾附加了线程号)。

没有官方的方法使用SimPoint与线程工作负载。最常见的方法是独立运行每个线程的SimPoint,并使用一些确定性执行方法来尝试匹配原始工作负载。这可以用当前的BBV来实现。

12.7。验证

BBV已经在x86,amd64和ppc32平台上进行了测试。早期版本的BBV已经使用硬件性能计数器进行了详细的测试,这项工作在VMweaver和SA McKee的HiPEAC'08大会“使用动态二进制仪器生成多平台SimPoints:方法和准确性”的论文中进行了描述。

12.8。性能

使用此程序可以通过本地执行将执行速度降低约40倍。这取决于所使用的机器和正在运行的基准。在3.4 GHz Pentium D处理器上运行的SPEC CPU 2000基准测试中,减速范围从24x(mcf)到340x(vortex.2)。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
bbv加权无标度网络是一种形式的网络结构。在这种网络中,节点的连接方式遵循一个特定的规则,即barabasi-albert模型,该模型认为网络节点的度数与其加入网络的时间成反比。也就是说,网络上的任意节点与其他节点连接的概率与这些节点已有的连接数成正比。 在bbv加权无标度网络中,节点的权重也会影响网络的连接方式。节点的权重通常代表节点的重要性或者资源的分配情况,有时也可以反映出节点在网络中的影响力。在这种网络中,节点之间的连接不仅仅是简单的连接,还包括节点之间的信息传递或资源共享。节点的权重影响了这些连接的强度和重要性。 bbv加权无标度网络具有一些特点和优势。首先,它能够反映节点的重要性和网络中的强连接。其次,由于节点的连接不完全随机,网络上形成了一些连接的集中趋势,使得网络更加紧密和高效。此外,由于网络的无标度特性,网络上的少数节点拥有较多的连接,这些节点成为网络的中心节点,对于信息传递和资源分配具有较大的影响力。 在实际应用中,bbv加权无标度网络可以用于建模社交网络、互联网和其他复杂网络系统。通过对网络的重要节点进行监测和管理,可以预测网络的扩展和演化,检测网络的演化过程中可能出现的问题。此外,针对网络中的高权重节点,可以优化资源的分配,提高网络的性能和效率。 总而言之,bbv加权无标度网络是一种特殊的网络形式,具有一些特点和优势。在研究和应用中,它能够有效地描述和分析复杂网络结构,对于改进网络性能和管理资源具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值