日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu下安装配置TAU分析mpich和openmp程序性能

發布時間:2024/1/1 Ubuntu 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 mpich

2. 安裝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-headless

3. 下載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目錄加入環境變量
方法:在終端運行

sudo gedit /etc/environment

在PATH=“…”的最后加一個:分隔,再加入路徑,保存后使用

source /etc/environment

使其立即生效,如果仍未生效,可嘗試稍后重啟)
再點擊Make Tau,記住終端窗口返回的makefile路徑和文件名。

4.2 使用終端直接配置

配置過程也可直接使用./configure直接進行配置,詳細方法和命令選項見TAU官網文檔、Wiki、FAQ(見本文開始的鏈接),圖形化界面配置較為直觀,故本文只詳細介紹這一種方法。
比如要使用TAU分析openmp程序時,根據官網的文檔,你只需要執行以下命令:

./configure -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”的錯誤,請使用以下命令安裝缺失的庫

sudo apt-get install libghc-zlib-dev

5. 配置Vs Code或直接使用終端編譯運行(以MPICH為例)

下載安裝Vs Code并安裝Code Runner插件(安裝方法不再贅述,Code Runner配置方法已在上一教程中提及,也不再贅述)
如果你只需要單純地編譯運行,不需要插樁等性能分析,將Code Runner的executorMap中相應的配置改為:

"c": "cd $dir && mpicc $fileName -o $fileNameWithoutExt && mpirun -n 4 $dir$fileNameWithoutExt", "cpp": "cd $dir && mpicxx $fileName -o $fileNameWithoutExt && mpirun -n 4 $dir$fileNameWithoutExt",

其中,請將相關的編譯和運行命令改為你安裝的MPI版本對應的編譯運行命令,將進程數改為合適的值。
如果需要進行性能分析,則請將其改為:

"c": "cd $dir && export TAU_MAKEFILE=/home/rjy/tau-2.29/x86_64/lib/Makefile.tau-mpi && tau_cc.sh -c $fileName -o $fileNameWithoutExt.o && tau_cc.sh $fileNameWithoutExt.o -o $fileNameWithoutExt && mpirun -np 4 ./$fileNameWithoutExt &&pprof && paraprof", "cpp": "cd $dir && export TAU_MAKEFILE=/home/rjy/tau-2.29/x86_64/lib/Makefile.tau-mpi && tau_cxx.sh -c $fileName -o $fileNameWithoutExt.o && tau_cxx.sh $fileNameWithoutExt.o -o $fileNameWithoutExt && mpirun -np 4 ./$fileNameWithoutExt &&pprof && paraprof",

其中,請將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中的相應命令按你實際的配置情況直接在終端中運行即可,例如:

cd "/mnt/hgfs/CodeDebugSpace/" export TAU_MAKEFILE=/home/rjy/tau-2.29/x86_64/lib/Makefile.tau-mpi tau_cxx.sh -c Helloworld1.cpp -o Helloworld1.o tau_cxx.sh Helloworld1.o -o Helloworld1 mpirun -np 4 ./Helloworld1 pprof paraprof

如果你要分析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 paraprof

6 使用tau_rewrite對二進制文件重寫插樁

tau_rewrite能夠直接對編譯好的二進制文件進行重寫和插樁,可以參考官方文檔中有詳細介紹該工具的使用方法。
使用該工具前,需要安裝pdt(下載頁面點此,安裝方法可參考FAQ中的相關介紹頁面)
從官方的文檔中我們可以看到各運行選項的說明:

-o outfile specify instrumented output file-T specify TAU option (CUPTI, DISABLE, MPI, OPENMP, PDT, PGI, PROFILE, SCOREP, SERIAL)-loadlib= file.so specify additional load library-s dryrun without executing-v long verbose mode-v1 short verbose mode-XrunTAUsh- options specify TAU library directly

如果沒有指定編譯選項,默認的編譯選項是

-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就能查看了。
如果插樁時出現類似下面的提示

Couldn't locate smaqao in PDT To use TAU's binary rewriting capabilities, please install MAQAO from PDT v3.17+ (x86_64 only at present) or DyninstAPI

需要你使用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

  • 我在使用./configure -openmp命令生成makefile文件后,運行程序始終只能看到一個線程的性能分析,經同學提示,在configure中加入-opari選項,可以得到多線程的跟蹤結果。(同樣地,可以使用圖形化界面配置,也可以直接在終端使用命令配置)
  • 我在ubuntu 16.04 LTS上的配置命令如下,基本上可以滿足對OPENMP的插樁和分析需求。
  • ./configure -openmp -bfd=download -unwind=download -pdt=/home/rjy/pdt -opari=/home/rjy/tau-2.29/x86_64
  • 對二進制文件插樁出現Couldn’t locate smaqao in PDT提示怎么辦?上文已給出解答了哦。
  • 配置安裝時出現“找不到 -lz”的錯誤怎么辦?上文也已給出解答了哦。
  • 分析結果中的addr=<0x???>項目是什么?上文也已給出解答了哦。
  • 總結

    以上是生活随笔為你收集整理的Ubuntu下安装配置TAU分析mpich和openmp程序性能的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。