跳转至

小作业五:性能分析实践

负责助教:郑立言 zhengly20@mails.tsinghua.edu.cn

任务

服务器环境配置

将实验文件 /home/course/hpc/assignments/2023/exp5 拷贝到自己的目录 ,并进入 exp5 目录:

cp -r /home/course/hpc/assignments/2023/exp5 ~/
cd ~/exp5/

本次实验依赖 Intel MPI 并推荐使用 vTune 进行性能分析,因此需要加载对应的环境:

source /opt/intel/oneapi/setvars.sh

vTune GUI 环境配置

实验中需要使用vTune GUI读取性能数据。

方法一(推荐):本地安装 vTune

  1. 下载 vTune 并安装。
  2. 将采集到的性能数据文件夹复制到本地,启动 vTune 读取数据。

方法二:本地安装 X11 服务器,将远程图形界面利用 X11 转发到本地

  1. Windows 或者 macOS 用户需要在本地安装X11服务器:Xming X Server for WindowsXQuartz for MacOS
  2. 在本地开启 X11 服务器。
  3. 使用带 X11 转发的ssh连接到 conv0(ssh 时加上 -X 选项),使用 vtune-gui 命令启动vTune图形界面,读取数据。

任务零:基于 IPM 的轻量级 MPI 性能分析

运行 ./run.sh <你的学号>,如 ./run.sh 202012345 你将得到如下输出:

Success 202012345

在运行成功后,使用 IPM 对该 MPI 程序进行性能分析。在实验集群中可使用如下命令:

LD_PRELOAD=~/exp5/ipm/lib/libipm.so ./run.sh <你的学号>

根据IPM输出,MPI函数中的热点函数为_____。

任务一:负载均衡分析

对同一程序,使用 vTune 进行性能分析。参考 vTune文档

srun -n <进程数> vtune -collect <采集模式> -trace-mpi -result-dir <结果保存目录> -- <应用执行命令>
# 实验中需要的采集模式有 hotspots 和 uarch-exploration

使用 vTune 的 Hotspots 分析功能,可发现任务零中检测到的热点由一个进程导致。导致出现该现象的进程 MPI rank 是_____。

提示

  1. 在 vTune Hotspots 的 Bottom-up 界面中,选择显示 Process,可以看到进程的 MPI rank。
  2. 通过 Filter in/out 进程或函数,可查看各进程不同函数各自的运行时间。
  3. 在 vTune 的图形界面中,点击 Open Result 打开结果保存目录中的 *.vtune 文件即可查看结果。结果的加载需要一定时间,如果无法正常加载需要检查结果目录是否完整。
  4. 在使用vTune uarch分析时,建议 不要强制结束任务 。因为部分同学反映运行时出现vtune: Error: PMU resource(s) currently being used by another profiling tool or process: another PMU collection session may be runningvtune: Error: This analysis requires one of these actions: a) Install Intel Sampling Dreivers b) ...问题,该问题可能由强制结束进程时vTune kernel module bug导致,暂时无法复现。如果发现机器出现问题,或确定复现方法,可向助教报告,也可通过srun -w conv2 ...来指定正常运行的节点。

任务二:负载类型分析

对于同一程序,同样以自己的学号作为输入运行。使用 vTune 的 Microarchitecture exploration 分析功能,可以看到程序运行过程产生的 PMU 数据。根据 PMU 数据,可以推断该程序中 lipsum 函数 最可能 是_____(填写选项编号)。

  1. 浮点数稠密矩阵乘
  2. 整数稀疏矩阵乘

提示:观察 Memory bound 的占比或 vTune 图形界面 Event count 中的 FP_ARITH_INST_RETIRED 类事件(如 FP_ARITH_INST_RETIRED.SCALAR_DOUBLE)的计数。

实验提交

本实验需以 JSON 文件形式提交实验结果。请将上述两个任务的答案填入以下文本,并以 单个 JSON 文件 形式提交至网络学堂,文件名为 学号.json

ID 后填写自己的学号(一个整数),其他项后填写答案(函数名或一个整数)。

{
  "ID": 2020000000,
  "Task0": "FunctionName",
  "Task1": -1,
  "Task2": -1
}

请保证提交结果是合法的 JSON 文件。作业将采用评分程序自动给分。


最后更新: 2023年3月7日
作者: Harry Chen (96.77%), Colin (2.15%), zhengly123 (1.08%)