Ubuntu下安装配置TAU分析mpich和openmp程序性能
目錄
- 1. 安裝MPICH
- 2. 安裝JAVA環境
- 3. 下載TAU(及PDT)
- 4. 提取并配置安裝
- 4.1 使用圖形化界面安裝
- 4.2 使用終端直接配置
- 5. 配置Vs Code或直接使用終端編譯運行(以MPICH為例)
- 6 使用tau_rewrite對二進制文件重寫插樁
- 7 亂七八糟的TIPS
本文所使用方法在ubuntu 16.04LTS和2020年3月19日最新的20.04LTS每日版本上進行過驗證。
TAU (Tuning and Analysis Utilities) Performance System? is a portable profiling and tracing toolkit for performance analysis of parallel programs written in Fortran, C, C++, UPC, Java, Python.
有關TAU和PDT的更多文檔和幫助,請訪問:
TAU - Tuning and Analysis Utilities
TAU - Tuning and Analysis Utilities : Frequently Asked Questions
TAU - Wiki
1. 安裝MPICH
終端下使用命令
sudo apt-get install mpich2. 安裝JAVA環境
終端中執行以下任意命令均可
sudo apt install default-jre sudo apt install openjdk-11-jre-headless sudo apt install openjdk-13-jre-headless sudo apt install openjdk-14-jre-headless sudo apt install openjdk-8-jre-headless3. 下載TAU(及PDT)
下載頁面
4. 提取并配置安裝
4.1 使用圖形化界面安裝
提取到某一目錄下,進入解壓后的文件夾下,右鍵選擇在終端打開,執行以下命令
./tau_setup出現圖形化配置界面。若僅使用插樁,可不用PDT,如果需要使用PDT,可以勾選并設置相應的PDT目錄。
在“Message Passing”選項卡中勾選MPI、MPI Includes、MPI Libraries,按對應選項前的Browse按鈕進行選擇
- Mpich的MPI Includes一般在/usr/include/x86_64-linux-gnu/mpich目錄或/usr/include/mpich目錄下
- Mpich的MPI Libraries一般在(/usr)/lib/x86_64-linux-gnu/mpich目錄或(/usr)/lib/mpich(/lib)目錄下
如果你在以上目錄找不到相關文件,或安裝的是其他版本的MPI,可以按安裝時的配置或在附近目錄尋找,一般來說,MPI Includes的文件夾下需要含有mpi.h等頭文件。
選項設置完成后,點擊Configure Tau
Configure完成后,根據當初打開tau_setup的終端窗口的命令,將tau下的bin目錄加入環境變量
(方法:在終端運行
在PATH=“…”的最后加一個:分隔,再加入路徑,保存后使用
source /etc/environment使其立即生效,如果仍未生效,可嘗試稍后重啟)
再點擊Make Tau,記住終端窗口返回的makefile路徑和文件名。
4.2 使用終端直接配置
配置過程也可直接使用./configure直接進行配置,詳細方法和命令選項見TAU官網文檔、Wiki、FAQ(見本文開始的鏈接),圖形化界面配置較為直觀,故本文只詳細介紹這一種方法。
比如要使用TAU分析openmp程序時,根據官網的文檔,你只需要執行以下命令:
這樣生成的makefile文件在分析時,結果中可能會有addr=<0x???>之類的計時結果,令人摸不著頭腦,這時可以在編譯選項中加入-bfd=download -unwind=download命令(如下所示,需要聯網)來在線獲取并安裝bfd和unwind套件來明確addr=<0x???>到底是哪個函數。如果你沒有聯網,或是覺得在線安裝的下載速度太慢,你也可以參照官網FAQ中的相關內容進行離線安裝。(請注意,使用-bfd可能需要pdt支持,否則結果中仍然會出現addr=<0x???>,安裝pdt點此進入下載頁,安裝方法可參考FAQ中的相關介紹頁面)
./configure -openmp -bfd=download -unwind=download終端界面提示configure后,使用
make install生成對應Makefile文件。
如果在過程中出現“找不到 -lz”的錯誤,請使用以下命令安裝缺失的庫
5. 配置Vs Code或直接使用終端編譯運行(以MPICH為例)
下載安裝Vs Code并安裝Code Runner插件(安裝方法不再贅述,Code Runner配置方法已在上一教程中提及,也不再贅述)
如果你只需要單純地編譯運行,不需要插樁等性能分析,將Code Runner的executorMap中相應的配置改為:
其中,請將相關的編譯和運行命令改為你安裝的MPI版本對應的編譯運行命令,將進程數改為合適的值。
如果需要進行性能分析,則請將其改為:
其中,請將TAU的makefile路徑改為在配置TAU時顯示的Makefile路徑和文件名,將進程數改為合適的值,如果你不需要在終端查看性能分析的打印結果,請去掉&&pprof,如果你不想立即看到可視化分析,請去掉 && paraprof,可將程序路徑下的所有profile.x.x.x復制到其他同一目錄下(也可不復制),在該目錄下打開終端,直接運行paraprof也可以看到可視化結果(Windows下安裝TAU及java環境,將TAU下的bin目錄添加到環境變量PATH后,在有profile.x.x.x的目錄下直接終端運行paraprof也可看到可視化結果或導入其他目錄下的profile進行分析和對比)。
請注意,如果是在VS Code+Code Runner環境下運行,且并行程序需要用戶進行輸入,請在Code Runner的配置中務必開啟Run in Terminal選項,否則將會出錯或卡死。
當然,如果你不愿意使用Vs Code,也可以直接在終端中直接進行編譯和運行,將剛才的code runner的executorMap中的相應命令按你實際的配置情況直接在終端中運行即可,例如:
如果你要分析openmp程序,參照官網給的例子,只需要修改相關命令即可,如:
cd $dir export TAU_MAKEFILE=/home/rjy/tau-2.29/x86_64/lib/Makefile.tau-pdt-openmp-opari tau_cc.sh $fileName -fopenmp -o $fileNameWithoutExt export OMP_NUM_THREADS=4 ./$fileNameWithoutExt 4 pprof paraprof6 使用tau_rewrite對二進制文件重寫插樁
tau_rewrite能夠直接對編譯好的二進制文件進行重寫和插樁,可以參考官方文檔中有詳細介紹該工具的使用方法。
使用該工具前,需要安裝pdt(下載頁面點此,安裝方法可參考FAQ中的相關介紹頁面)
從官方的文檔中我們可以看到各運行選項的說明:
如果沒有指定編譯選項,默認的編譯選項是
-T MPI我們以一個openmp程序的二進制文件插樁為例,使用
gcc -g -Wall -fopenmp -o count_sort_p_1 count_sort_p_1.c編譯生成二進制文件后,再使用
tau_rewrite -T disable count_sort_p_1 -o csp_i對二進制文件插樁,接著運行
./csp_i 4就能生成profile文件,使用pprof或paraprof就能查看了。
如果插樁時出現類似下面的提示
需要你使用tau加入-pdt選項再配置一次,只需要在你原先的配置命令中加入
-pdt=你的pdt安裝路徑即可,安裝方法可參考FAQ中的相關介紹頁面
當然,還有個問題我還沒搞明白,按理說對openmp的二進制文件進行重寫插樁,tau_rewrite的選項中-T應緊跟OPENMP才對,但我嘗試了一下兩種命令:
tau_rewrite -T pdt,openmp count_sort_p_1 -o csp_i tau_rewrite -T openmp count_sort_p_1 -o csp_i都得到了下面的錯誤提示:
Error: No matching binding for 'openmp mpi'或'pdt openmp mpi' in directory /home/rjy/tau-2.29/x86_64/lib Available bindings (/home/rjy/tau-2.29/x86_64/lib):/home/rjy/tau-2.29/x86_64/lib/shared-disable/home/rjy/tau-2.29/x86_64/lib/shared-openmp/home/rjy/tau-2.29/x86_64/lib/shared-pdt-openmp一定要加入disable,如以下三條命令之一才能成功
tau_rewrite -T disable count_sort_p_1 -o csp_i tau_rewrite -T disable,pdt,openmp count_sort_p_1 -o csp_i tau_rewrite -T disable,openmp count_sort_p_1 -o csp_i很是令我費解,也請諸位大佬為我解答,謝謝!
7 亂七八糟的TIPS
總結
以上是生活随笔為你收集整理的Ubuntu下安装配置TAU分析mpich和openmp程序性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 领英开发外贸客户新方式—领英精灵
- 下一篇: 数字芯片后端设计——SRAM宏模块布局布