当前位置: 首页 > news >正文

MPI-NCCL-TEST 训练自检,基础通信和可用的机器

1. 基本主机检测测试

# 测试MPI是否能发现所有节点
mpirun -np 2 --allow-run-as-root hostname# 使用MPI内置的进程信息
mpirun -np 4 --allow-run-as-root printenv OMPI_COMM_WORLD_RANK OMPI_COMM_WORLD_SIZE# np参数按需修改

2. MPI 点对点通信测试

# 简单的ping-pong测试(需要编写测试程序)
cat > mpi_pingpong.c << 'EOF'
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>int main(int argc, char** argv) {MPI_Init(&argc, &argv);int world_rank, world_size;MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);MPI_Comm_size(MPI_COMM_WORLD, &world_size);if (world_size < 2) {printf("This test requires at least 2 processes\n");MPI_Finalize();return 1;}const int num_elements = 1000;double* data = (double*)malloc(num_elements * sizeof(double));double start_time, end_time;if (world_rank == 0) {// Process 0 sends to process 1for (int i = 0; i < num_elements; i++) {data[i] = i * 1.0;}start_time = MPI_Wtime();MPI_Send(data, num_elements, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD);MPI_Recv(data, num_elements, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);end_time = MPI_Wtime();printf("Ping-pong time for %d doubles: %f seconds\n", num_elements, end_time - start_time);} else if (world_rank == 1) {// Process 1 receives from process 0 and sends backMPI_Recv(data, num_elements, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);MPI_Send(data, num_elements, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);}free(data);MPI_Finalize();return 0;
}
EOF# 编译运行
mpicc -o mpi_pingpong mpi_pingpong.c
mpirun -np 2 --allow-run-as-root ./mpi_pingpong

4. 使用 OpenMPI 自带的性能测试工具

# 测试点对点通信带宽和延迟 测试双节点,验证可行性
mpirun -np 2 --allow-run-as-root $(which osu_bw)# 测试延迟
mpirun -np 2 --allow-run-as-root $(which osu_latency)# 测试集体操作性能(如果安装了osu-micro-benchmarks)
mpirun -np 4 --allow-run-as-root $(which osu_allreduce)# 如果没有安装,可以先安装:
# Ubuntu: sudo apt-get install libopenmpi-dev openmpi-bin openssh-client
# CentOS: sudo yum install openmpi-devel openmpi openssh-clients

5. MPI排障思路

# 我用的是主机文件
# 例如
192.168.1.100 slots=8
192.168.1.101 slots=8配置 SSH 无密码登录
ssh-keygen -t rsa# 将公钥复制到另一台机器
ssh-copy-id your-other-machine# 测试无密码登录
ssh your-other-machine# 如果仍然有问题,检查 MPI 配置
# 查看 MPI 的详细调试信息
mpirun -hostfile /etc/mpi_hosts -np 2 --mca plm_base_verbose 5 --allow-run-as-root hostname# 检查 MPI 的进程启动方法
ompi_info --param plm all# 尝试使用不同的进程启动方法
mpirun -hostfile /etc/mpi_hosts --mca plm_rsh_agent ssh -np 2 --allow-run-as-root hostname

http://www.dtcms.com/a/359813.html

相关文章:

  • NM:微生物组数据分析的规划与描述
  • GDPU操作系统实验:生产者消费者问题
  • Matplotlib:让数据在Python中跳舞的魔法画笔![特殊字符]
  • 5.【C++进阶】红黑树
  • C++从入门到实战(二十)详细讲解C++List的使用及模拟实现
  • Qt中解析XML文件
  • 基于muduo库的图床云共享存储项目(四)
  • Luma 视频生成 API 对接说明
  • 编写一个用scala写的spark程序从本地读取数据,写到本地
  • 基于Matlab元胞自动机的强场电离过程模拟与ADK模型分析
  • 【Linux】模拟实现Shell(上)
  • 分享一个实用的B站工具箱(支持音视频下载等功能)
  • 【Canvas技法】绘制横向多色旗和竖向多色旗
  • 008.LangChain 输出解析器
  • 备份压缩存储优化方案:提升效率与节省空间的完整指南
  • 新手首次操作SEO核心要点
  • 线程池常见面试问答
  • 【Java实战⑩】Java 集合框架实战:Set与Map的奇妙之旅
  • 基于三维反投影矫正拼接视频
  • 数据结构(04)—— 栈和队列
  • 使用node-red+opencv+mqtt实现相机图像云端查看
  • 零基础入门AutoSar中的ARXML文件
  • Dify 从入门到精通(第 67/100 篇):Dify 的高可用性部署(进阶篇)
  • 从零开始写个deer-flow-mvp-第一天
  • 【C++】类和对象(一)
  • 【全功能图片处理工具详解】基于Streamlit的现代化图像处理解决方案
  • 二.Shell脚本编程
  • 微软开源TTS模型VibeVoice,可生成 90 分钟4人语音
  • 李宏毅NLP-13-Vocoder
  • 中级统计师-统计实务-第四章 专业统计