使用性能测试工具TAU测试MPI程序记录
前言
最近又重新把性能測試給撿起來了。所以決定再重新使用TAU(Tuning and Analysis Utilities )來做一些性能測試。測試的程序主要是組里一個(gè)師兄開發(fā)的基因組裝程序,使用MPI+C++編寫的。對(duì)于MPI的程序,當(dāng)下來說最好的測試工具就是TAU了。
因?yàn)檫@一篇博客主要是對(duì)測試過程做一個(gè)簡單的記錄,所以關(guān)于TAU的安裝過程、原理介紹等,大家可以在去查看相關(guān)的論文。
測試過程
1. 動(dòng)態(tài)插樁(Dynamic instrumentation)
在mpirun的命令中插入一個(gè)tau_exec,實(shí)現(xiàn)動(dòng)態(tài)插樁。
普通的MPI運(yùn)行命令。后面是一系列程序運(yùn)行的參數(shù):
加了tau_exec之后的運(yùn)行命令:
> mpirun -np 8 tau_exec ./swap -k 19 -c 5 -i ./data/S.aureus.fasta -o Saur_k19_c5接著目錄下會(huì)多了幾個(gè)類似于profile.0.0.0的文件。直接在當(dāng)前目錄下執(zhí)行pprof命令:
> pprof顯示結(jié)果如下圖所示:
這種方法只能夠查看到MPI的函數(shù)調(diào)用情況,并不能看到用戶的自定義函數(shù)的調(diào)用情況。因此不太推薦這種插樁方法。
2. 源碼插樁(Source instrumentation)
直接在源碼中進(jìn)行插樁。
首先,要選擇我們想要借助TAU獲得的信息(e.g. MPI support, tracing, CUDA hardware counters, etc)。我們要將TAU_MAKEFILE變量設(shè)置為相應(yīng)的pdt。因?yàn)槲覀儸F(xiàn)在使用TAU來測MPI程序的信息,因此將TAU_MAKEFILE變量設(shè)為tau-mpi-pdt:
接著,使用tau_cc.sh或者tau_cxx.sh而不是使用mpicc或者mpicxx來編譯cpp文件。以下代碼是從別處抄來的,因?yàn)槲覝y的這個(gè)程序使用MakeFile文件來進(jìn)行編譯的,我就直接在MakeFile文件中進(jìn)行修改,將mpicxx替換成tau_cxx.sh。
> tau_cxx.sh wave2d.cpp -o wave2d編譯完成后,還是使用mpirun運(yùn)行:
> mpirun -np 4 tau_exec ./swap -k 19 -c 5 -i ./data/S.aureus.fasta -o Saur_k19_c5接著就是使用各種可視化工具來對(duì)性能測試的數(shù)據(jù)進(jìn)行可視化。pprof是一個(gè)基于文本的可視化工具。先使用pprof試試:
> pprof可以看出確實(shí)多了很多用戶自定義函數(shù)的執(zhí)行情況,而不是只限于MPI函數(shù)。但是可能是因?yàn)闆]有解析出來的緣故,很多函數(shù)都只是給出了地址,而沒有給出函數(shù)名字。
另外一種可視化工具Paraprof,提供圖形化界面。
> paraprof主要是顯示四個(gè)節(jié)點(diǎn)(因?yàn)镸PI執(zhí)行時(shí)設(shè)定的參數(shù)就是4)上函數(shù)執(zhí)行時(shí)間的情況。
3. 基于編譯器的插樁(Compiler-based instrumentation)和可選擇代碼區(qū)域的插樁(Selective instrumentation
基于編譯器的插樁介于Source和Dynamic之間。而選擇代碼區(qū)域的插樁大致就是在代碼中指定一塊區(qū)域。兩個(gè)我都沒怎么使用過,就不介紹了。文檔中還是推薦使用源碼(Source)插樁。
結(jié)尾
暫時(shí)主要就是這些內(nèi)容,以后遇到新的內(nèi)容我再進(jìn)行更新。謝謝觀看!
總結(jié)
以上是生活随笔為你收集整理的使用性能测试工具TAU测试MPI程序记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pixy(Cmucam5)通过SPI与A
- 下一篇: ecstore安装 mysql_ECST