某标称同构计算节点上BLAS运行速度大幅变慢的问题求助
集群节点矩阵乘法性能差异排查方向
以下是针对5号节点核心矩阵乘法代码段性能慢2.1倍的排查建议:
硬件层面验证
- 核对CPU配置与状态:
- 用
lscpu对比各节点的CPU型号、核心数、缓存(L1/L2/L3)、主频参数,确认标称一致的硬件实际无差异; - 用
cat /proc/cpuinfo查看5号节点CPU的实时主频,或cpupower frequency-info检查是否存在降频(过热、功耗限制、节能模式都可能导致)。
- 用
- 测试内存性能:
- 用
stream或memtester工具测试5号节点的内存带宽、延迟,与其他节点对比,排除内存硬件故障或通道配置异常。
- 用
- 排查存储IO影响:
- 若矩阵数据从存储加载,用
dd if=/dev/zero of=test bs=1G count=1 oflag=direct或fio测试5号节点的存储读写速度,确认无IO瓶颈。
- 若矩阵数据从存储加载,用
软件环境一致性检查
- 验证BLAS库链接状态:
- 在5号节点执行
ldd ./your_fortran_program,查看链接的BLAS库路径、版本,与正常节点完全对比; - 用
openblas-config --version或mkl-info(对应使用的BLAS库)确认库版本一致,排除mamba安装的库在节点间未同步的情况。
- 在5号节点执行
- 核对环境变量:
- 除
OPENBLAS_NUM_THREADS和MKL_NUM_THREADS外,检查OMP_NUM_THREADS、LD_LIBRARY_PATH、PATH是否与其他节点完全一致,避免环境变量导致的库加载或线程配置异常。
- 除
- 确认可执行文件一致性:
- 将登录节点编译好的可执行文件重新拷贝至5号节点,或在5号节点基于相同环境重新编译,排除文件传输损坏或编译环境隐性差异。
性能分析定位
- 使用
perf采样分析:- 在5号节点和正常节点分别执行
perf record -g ./your_program,完成后用perf report查看矩阵乘法相关函数(如dgemm)的耗时占比、调用栈,对比是否存在异常开销路径。
- 在5号节点和正常节点分别执行
- 编译时加入性能分析标记:
- 重新编译时添加
-pg参数,用gprof生成性能报告,聚焦并行循环内matmul调用的具体耗时差异。
- 重新编译时添加
其他排查点
- 检查节点负载:
- 运行任务时用
htop或top查看5号节点是否有其他进程占用CPU、内存资源,导致任务无法独占硬件。
- 运行任务时用
- 验证OpenMP配置:
- 执行
export OMP_DISPLAY_ENV=TRUE后运行程序,查看OpenMP的实际线程数、绑定策略等配置,确认各节点OpenMP行为一致。
- 执行
内容的提问来源于stack exchange,提问作者Jonatan Öström
相关产品推荐
相关产品推荐

