前言

最近又重新把性能测试给捡起来了。所以决定再重新使用TAU(Tuning and Analysis Utilities )来做一些性能测试。测试的程序主要是组里一个师兄开发的基因组装程序,使用MPI+C++编写的。对于MPI的程序,当下来说最好的测试工具就是TAU了。
因为这一篇博客主要是对测试过程做一个简单的记录,所以关于TAU的安装过程、原理介绍等,大家可以在去查看相关的论文。

测试过程

1. 动态插桩(Dynamic instrumentation)

在mpirun的命令中插入一个tau_exec,实现动态插桩。
普通的MPI运行命令。后面是一系列程序运行的参数:

> mpirun -np 8 ./swap -k 19 -c 5 -i ./data/S.aureus.fasta -o Saur_k19_c5

加了tau_exec之后的运行命令:

> mpirun -np 8 tau_exec ./swap -k 19 -c 5 -i ./data/S.aureus.fasta -o Saur_k19_c5

接着目录下会多了几个类似于profile.0.0.0的文件。直接在当前目录下执行pprof命令:

> pprof

显示结果如下图所示:

这种方法只能够查看到MPI的函数调用情况,并不能看到用户的自定义函数的调用情况。因此不太推荐这种插桩方法。

2. 源码插桩(Source instrumentation)

直接在源码中进行插桩。
首先,要选择我们想要借助TAU获得的信息(e.g. MPI support, tracing, CUDA hardware counters, etc)。我们要将TAU_MAKEFILE变量设置为相应的pdt。因为我们现在使用TAU来测MPI程序的信息,因此将TAU_MAKEFILE变量设为tau-mpi-pdt

> export TAU_MAKEFILE=$TAU_HOME/lib/Makefile.tau-mpi-pdt

接着,使用tau_cc.sh或者tau_cxx.sh而不是使用mpicc或者mpicxx来编译cpp文件。以下代码是从别处抄来的,因为我测的这个程序使用MakeFile文件来进行编译的,我就直接在MakeFile文件中进行修改,将mpicxx替换成tau_cxx.sh

> tau_cxx.sh wave2d.cpp -o wave2d

编译完成后,还是使用mpirun运行:

> mpirun -np 4 tau_exec ./swap -k 19 -c 5 -i ./data/S.aureus.fasta -o Saur_k19_c5

接着就是使用各种可视化工具来对性能测试的数据进行可视化。pprof是一个基于文本的可视化工具。先使用pprof试试:

> pprof

可以看出确实多了很多用户自定义函数的执行情况,而不是只限于MPI函数。但是可能是因为没有解析出来的缘故,很多函数都只是给出了地址,而没有给出函数名字。

另外一种可视化工具Paraprof,提供图形化界面。

> paraprof

主要是显示四个节点(因为MPI执行时设定的参数就是4)上函数执行时间的情况。

3. 基于编译器的插桩(Compiler-based instrumentation)和可选择代码区域的插桩(Selective instrumentation

基于编译器的插桩介于Source和Dynamic之间。而选择代码区域的插桩大致就是在代码中指定一块区域。两个我都没怎么使用过,就不介绍了。文档中还是推荐使用源码(Source)插桩。

结尾

暂时主要就是这些内容,以后遇到新的内容我再进行更新。谢谢观看!

使用性能测试工具TAU测试MPI程序记录相关推荐

  1. oracle数据库的性能测试工具有哪些,使用Oracle性能测试工具swingbench测试instance caging...

    当多个实例运行在同一台服务器上时,为了避免实例间的相互影响,从oracle 11gr2开始推出了实例囚笼的概念.实例囚笼能够限制数据库实例使用的CPU资源.使用实例囚笼,只需要设置CPU_COUT和r ...

  2. 性能测试工具SilkPerformer介绍

    SilkPerformer® 是业界最强大,且最易用的企业级负载和强度测试解决方案,用于对关键任务应用的质量进行优化.SilkPerformer®使用可视化脚本生成技术和对存在成千上万的并发用户的多个 ...

  3. 15个最好的性能测试工具(软件测试工程师必备)

    在软件测试日常工作中,大家接触得比较多的性能测试工具有LoadRunner和Jmeter,这里整理了web应用程序性能和负载压力能力的最广泛使用的性能测试工具的综合列表. 这些负载测试工具将确保您的应 ...

  4. 性能测试工具工作原理

    一:性能测试工具模型 广义地说,性能测试工具是指性能测试过程中使用到所有工具,但是我们习惯上把"性能测试工具"定位于PerformanceRunner.LoadRunner.Sil ...

  5. 微信小程序跳转微信小程序,使用微信开发者工具的测试记录

    微信小程序跳转微信小程序,使用微信开发者工具的测试记录 A小程序 跳转 B小程序 编写A小程序代码 参数解释 编写B小程序接收参数代码 微信开发者工具测试 A小程序 跳转 B小程序 编写A小程序代码 ...

  6. 最受java程序员欢迎的极佳性能测试工具

    面向开发人员的 Java 性能测试环境已不再像过去那样贫瘠. 部分原因是采用 DevOps 策略将测试进一步向左转移,部分原因是 JMeter 等流行技术的成熟和采用. 虽然我们在这里主要查看 Jav ...

  7. 软件测试常用工具总结(测试管理、单元测试、接口测试、自动化测试、性能测试、负载测试...)

    前言 在软件测试的过程中,多多少少都是会接触到一些测试工具,作为辅助测试用的,以提高测试工作的效率,使用好了测试工具,能对测试起到一个很好的作用,同时,有些公司,也会要求掌握一些测试工具,或者,是在面 ...

  8. Java常用记录工具_Java常用的性能测试工具记录

    相关推荐:测试工具 测试工具 测试管理工具                          Quality Center 基于WEB的测试管理工具 Test  Director 功能测试工具     ...

  9. dhrystone测试结果_Linux性能测试工具-UnixBench--安装以及结果分析-阿里云开发者社区...

    UnixBench unixbench是一个用于测试unix系统性能的工具,也是一个比较通用的benchmark, 此测试的目的是对类Unix 系统提供一个基本的性能指示,很多测试用于系统性能的不同方 ...

最新文章

  1. SpringBoot - 统一格式封装及高阶全局异常处理
  2. 模拟窗口效果 Jquery
  3. acm公选课第三节4.7直播4.9补 递归 深搜啥的
  4. TCP/IP的七层模型
  5. 《Python》进程收尾线程初识
  6. ASSERT报错:error C2664: “AfxAssertFailedLine”: 不能将参数 1 从“TCHAR []”转换为“LPCSTR”...
  7. 惩罚函数外点matlab,禁忌搜索算法求解带时间窗的车辆路径问题(惩罚函数版 附MATLAB代码)...
  8. 利用单壁路由实现vlan间路由
  9. “绿坝—花季护航”使用全攻略
  10. 如何修改电脑微信的提示音(亲测有效)
  11. AD教程系列 | 4 - 创建集成库文件
  12. 41款非常有创意的卡通图标大全可爱
  13. PHPStorm长时间Updating Indices
  14. peer之间的通信协议
  15. led大屏按实际尺寸设计画面_微间距LED大屏幕拼接显示系统设计方案
  16. PHP WEB程序设计信息表,WEB程序设计(PHP)2020知到答案全套
  17. 微信拼车小程序无服务器,滴滴顺风车下架 拼车微信小程序笑了
  18. EasyX库使用入门
  19. 地图选择区域遮罩层自定义控件实现
  20. Revit 二次开发 获取多段轴网的location

热门文章

  1. UEFI secure boot(3)- 安全引导的实现
  2. 从《从小工到专家》的“道”到大厂的“法术器”-实效篇
  3. 大气顶层反射率无量纲_环境星CCD数据大气校正研究
  4. 【操作系统】Linux虚拟机入门
  5. 浅析Activity启动模式
  6. Max/Maya输出插件(3DVIA Virtools 5.0)
  7. 电子劳动合同应用有了政策“撑腰”
  8. kingbase 数据备份与恢复
  9. xshell 字体大小和界面字体太小问题解决
  10. jsp外文期刊免费下载_JSP技术外文文献