使用性能测试工具TAU测试MPI程序记录

前言

最近又重新把性能测试给捡起来了。所以决定再重新使用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)插桩。

结尾

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

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值