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程序性能相关推荐
- Ubuntu下安装配置Open×××
Ubuntu下安装配置Open××× 时间:2009-02-11 21:03来源:http://www.kklinux.com 作者:看看Linux 点击:2664次 1. 安装 Ubuntu中安装O ...
- openni linux arm,Ubuntu下安装配置OpenNI实战笔记
1. 库OpenNI SensorKinect NITE的安装 (1)OpenNI step1 :下载 OpenNI库文件 选择"OpenNI Binaries"->&quo ...
- Ubuntu下安装配置VNC远程工具
现在Linux是非常火的 很多人喜欢用它,界面简单,操作容易,有很多图形化工具如WinSCP可以与Ubuntu进行文件的上传的与下载,Xshell就是如同控制ubuntu的终端一样,简单方便,不过要 ...
- ubuntu下安装大恒相机驱动并调用程序采集图像
一.ubuntu下安装大恒相机驱动 1.大恒GigE摄像头Ubuntu环境下的配置 大恒GigE摄像头Ubuntu环境下的配置 - Tzbubble - 博客园 2.官方的Linux版SDK常见问题解 ...
- Ubuntu下安装配置java及环境变量
这里的办法不是在线安装,因为需要更新源(你懂的,费时费事~),so这里介绍在Ubuntu上手动下载安装配置Java环境变量 *系统:Ubuntu 16.4 1.下载jdk,直接用系统的Firefox浏 ...
- 关于在Ubuntu下安装配置numpy,scipy,matplotlibm,pandas 以及sklearn
最近在用Python学习机器学习,正好需要配置相关组件.也在网上查了一些,汇总了一下.顺便分享给大家,若有不对之处,请指出,谢谢. 关于Windows环境下配置及相应安装包 链接 推荐可以去看一看. ...
- 系统运维 | Ubuntu 下安装配置 samba 服务的详细过程
本文首发于 2014-08-05 10:14:48 1. Samba作用 Samba的主要任务就是实现Linux系统和Windows系统之间的资源共享.我们现在是要在Linux下配置Samba,让Wi ...
- ubuntu下安装配置hadoop
hadoop框架 Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracke ...
- ubuntu 下 安装 配置 jdk1.7 (tar.gz)
jdk 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 根据你的系统 ...
最新文章
- Autowired byType 与 byName 策略
- python矩阵sin计算器_Python-Numpy科学计算器的基本软件包
- html2image乱码问题,HtmlImageGenerator字体乱码问题解决、html2image放linux上乱码问题解决...
- jQuery选择器种类整理
- MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
- python strip_Python strip()方法
- 在Shell中,“$“和““的作用
- 【笔记】【C语言】任意进制之间的转换(支持小数部分)
- js基础-20-js对象赋值时的key值问题
- 碳中和数据全集-最全碳排放、碳封存、碳排放权配额、碳交易、能源消费与二氧化碳排放
- 论文公式编号右对齐_毕业论文的封面格式要求有哪些?
- 2022电大国家开放大学网上形考任务-健康评估非免费(非答案)
- 【微信小程序宝典】从零开始做微信小程序开发
- 用Vue制作图片翻面效果
- 马桶下的压水花技术!!(爆笑)
- SpringBoot Poi导出word,浏览器下载
- MySQL创建数据库、创建数据表
- Android 开发 有道翻译
- 弃掉Android 4.4获取系统图片出错之坑,实现 自定义相册库
- socket.io的使用