使用性能测试工具TAU测试MPI程序记录
前言
最近又重新把性能測試給撿起來了。所以決定再重新使用TAU(Tuning and Analysis Utilities )來做一些性能測試。測試的程序主要是組里一個師兄開發的基因組裝程序,使用MPI+C++編寫的。對于MPI的程序,當下來說最好的測試工具就是TAU了。
因為這一篇博客主要是對測試過程做一個簡單的記錄,所以關于TAU的安裝過程、原理介紹等,大家可以在去查看相關的論文。
測試過程
1. 動態插樁(Dynamic instrumentation)
在mpirun的命令中插入一個tau_exec,實現動態插樁。
普通的MPI運行命令。后面是一系列程序運行的參數:
加了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:
接著,使用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程序记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pixy(Cmucam5)通过SPI与A
- 下一篇: Error in rq.fit.br(w