目录

  • 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

  1. 我在使用./configure -openmp命令生成makefile文件后,运行程序始终只能看到一个线程的性能分析,经同学提示,在configure中加入-opari选项,可以得到多线程的跟踪结果。(同样地,可以使用图形化界面配置,也可以直接在终端使用命令配置)
  2. 我在ubuntu 16.04 LTS上的配置命令如下,基本上可以满足对OPENMP的插桩和分析需求。
./configure -openmp -bfd=download -unwind=download -pdt=/home/rjy/pdt -opari=/home/rjy/tau-2.29/x86_64
  1. 对二进制文件插桩出现Couldn’t locate smaqao in PDT提示怎么办?上文已给出解答了哦。
  2. 配置安装时出现“找不到 -lz”的错误怎么办?上文也已给出解答了哦。
  3. 分析结果中的addr=<0x???>项目是什么?上文也已给出解答了哦。

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

  1. Ubuntu下安装配置Open×××

    Ubuntu下安装配置Open××× 时间:2009-02-11 21:03来源:http://www.kklinux.com 作者:看看Linux 点击:2664次 1. 安装 Ubuntu中安装O ...

  2. openni linux arm,Ubuntu下安装配置OpenNI实战笔记

    1. 库OpenNI SensorKinect NITE的安装 (1)OpenNI step1 :下载 OpenNI库文件 选择"OpenNI Binaries"->&quo ...

  3. Ubuntu下安装配置VNC远程工具

    现在Linux是非常火的  很多人喜欢用它,界面简单,操作容易,有很多图形化工具如WinSCP可以与Ubuntu进行文件的上传的与下载,Xshell就是如同控制ubuntu的终端一样,简单方便,不过要 ...

  4. ubuntu下安装大恒相机驱动并调用程序采集图像

    一.ubuntu下安装大恒相机驱动 1.大恒GigE摄像头Ubuntu环境下的配置 大恒GigE摄像头Ubuntu环境下的配置 - Tzbubble - 博客园 2.官方的Linux版SDK常见问题解 ...

  5. Ubuntu下安装配置java及环境变量

    这里的办法不是在线安装,因为需要更新源(你懂的,费时费事~),so这里介绍在Ubuntu上手动下载安装配置Java环境变量 *系统:Ubuntu 16.4 1.下载jdk,直接用系统的Firefox浏 ...

  6. 关于在Ubuntu下安装配置numpy,scipy,matplotlibm,pandas 以及sklearn

    最近在用Python学习机器学习,正好需要配置相关组件.也在网上查了一些,汇总了一下.顺便分享给大家,若有不对之处,请指出,谢谢. 关于Windows环境下配置及相应安装包 链接  推荐可以去看一看. ...

  7. 系统运维 | Ubuntu 下安装配置 samba 服务的详细过程

    本文首发于 2014-08-05 10:14:48 1. Samba作用 Samba的主要任务就是实现Linux系统和Windows系统之间的资源共享.我们现在是要在Linux下配置Samba,让Wi ...

  8. ubuntu下安装配置hadoop

    hadoop框架 Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracke ...

  9. ubuntu 下 安装 配置 jdk1.7 (tar.gz)

    jdk 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 根据你的系统 ...

最新文章

  1. Autowired byType 与 byName 策略
  2. python矩阵sin计算器_Python-Numpy科学计算器的基本软件包
  3. html2image乱码问题,HtmlImageGenerator字体乱码问题解决、html2image放linux上乱码问题解决...
  4. jQuery选择器种类整理
  5. MyEclipse从数据库反向生成实体类之Hibernate方式 反向工程
  6. python strip_Python strip()方法
  7. 在Shell中,“$“和““的作用
  8. 【笔记】【C语言】任意进制之间的转换(支持小数部分)
  9. js基础-20-js对象赋值时的key值问题
  10. 碳中和数据全集-最全碳排放、碳封存、碳排放权配额、碳交易、能源消费与二氧化碳排放
  11. 论文公式编号右对齐_毕业论文的封面格式要求有哪些?
  12. 2022电大国家开放大学网上形考任务-健康评估非免费(非答案)
  13. 【微信小程序宝典】从零开始做微信小程序开发
  14. 用Vue制作图片翻面效果
  15. 马桶下的压水花技术!!(爆笑)
  16. SpringBoot Poi导出word,浏览器下载
  17. MySQL创建数据库、创建数据表
  18. Android 开发 有道翻译
  19. 弃掉Android 4.4获取系统图片出错之坑,实现 自定义相册库
  20. socket.io的使用

热门文章

  1. 30、IP数据包结构
  2. 基于卷积神经网络的交通标志识别
  3. 聊聊 JS 断点的实现
  4. 姚舜:华为,比你想象中更凶狠
  5. 7-3 最佳情侣身高差 (10分)
  6. [ZT]宝宝睡好觉完全功略
  7. windows7问题集合
  8. 【资源分享】Windows XP SP1可用的原版iso
  9. 简单粗暴学习SPI 协议之CC2530
  10. 1813 方块游戏(枚举)