cube.cubex库分析器
cubex的Python项目详细描述
cubex是一个用于分析多维数据集(.cubex)配置文件的python模块。
快速入门指南
cubex仍在进行中,但它当前可用,并且 以下说明将帮助您开始。
要创建新的Cube对象,请打开一个新文件。
>>importcubex>>prof=cubex.open('profile.cubex')
使用show_metrics()函数列出可用的度量。
>>>prof.show_metrics()bytes_sentvisitstime...
默认情况下,cubex不会将所有可用的度量加载到内存中。装载 所需的度量,例如time,使用read_data()函数。
>>prof.read_data('time')
Cube将调用树存储在列表中,prof.calltrees。对大多数人来说 程序,这将由一个条目组成。对于包含 多个可执行文件(MPMD),每个程序的调用树将是 列表。
调用树可以使用 配置文件的调用树。
>>prof.calltrees[0].print_tree()
这将显示调用树的每个节点,按深度缩进,并标记为 它对应的区域。
在这一点上,如果用户对调用树有一些直观的感觉,那么它会有所帮助 在个人资料里。(如果有人对如何改进这一点有意见,请 提交反馈。)
话虽如此,如果一个人知道 兴趣,然后使用region属性访问数据。
>>prof.regions[reg].cnodes[<cubex.calltree.CallTreeobjectat0x7f4437892f90>,<cubex.calltree.CallTreeobjectat0x7f4437539f10>,...]
这将返回调用树中每个节点(实际上是子树)的列表,其中 函数被调用。
要区分cnodes,可以检查其调用树(使用 print_tree())或检查其父节点。
>>cnode=prof.regions[reg].cnodes[0]>>cnode.parent.region.name'function_name_calling_cnode_'
也可以检查节点索引(cnode.idx),尽管这需要一些 树本身的知识,可以使用立方体图形检查 浏览器。
最后,要在目标cnode处获取度量值,请访问 metrics属性。
>>prof.regions[reg].cnodes[0].metrics['time'](496.59532077590507,291.106782542039,496.5975198073004,...)
这将返回以每个计算单位度量的时间列表,例如 MPI列组或OpenMP线程。
注释
区域名遵循c约定。Fortran程序通常会转换 任何函数名都要小写,并将_附加到 函数名。例如,名为GET_LAPLACIAN的函数将 存储为get_laplacian_。
这是通常的惯例,但是其他编译器可能会偏离这个 因此,建议您在访问这些区域之前检查它们。
目前,main分支只支持score-p输出。斯卡拉斯卡 输出略有不同,目前在 cubex。
我们有一些内部版本可以工作,但还不方便用户使用 在公开发行之前需要做一些清理。