ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MPICH入门实战:从mpiexec到第一个Hello World并行程序

MPICH入门实战:从mpiexec到第一个Hello World并行程序 MPICH入门实战从mpiexec到第一个Hello World并行程序【免费下载链接】mpichOfficial MPICH Repository项目地址: https://gitcode.com/gh_mirrors/mp/mpichMPICH 是美国阿贡国家实验室Argonne National Laboratory开发的MPI 标准高性能、可移植的开源实现已被 Intel、HPE 等多家厂商采用并部署在全球众多 Top500 超算系统上。本文将带你完成 MPICH 的快速安装弄懂mpiexec命令的使用方法并亲手编写、运行第一个 Hello World 并行程序最后扩展到多节点集群的分布式运行是面向新手的 MPICH 入门教程。什么是 MPICH一分钟看懂它的架构在动手之前先用 30 秒了解 MPICH 内部长什么样避免后面知其然不知其所以然 从上到下可以这样理解Application应用层你的 MPI 程序C/C/FortranMPI LayerMPI 层实现MPI_Init、MPI_Send等标准接口并负责集合通信优化、派生数据类型Yaksa等CH4 通信层底层网络抽象层可插拔不同网络模块Netmods如 OFI/UCX和共享内存模块Shmmods一套代码即可适配 InfiniBand、RoCE、UCX 等多种硬件。也就是说你写程序时只需要面向mpi.hMPICH 会自动帮你选择最优的通信路径。MPICH 快速安装三步完成编译前提已安装 C 编译器要求 C99、Perl如需 Fortran 绑定还需 gfortran 等。第 1 步获取源码git clone https://gitcode.com/gh_mirrors/mp/mpich cd mpich第 2 步生成构建脚本并配置从 Git 源码构建需要先运行 autogen.sh 生成 configure 脚本若刚 clone 仓库还需git submodule update --init拉取依赖模块./autogen.sh ./configure --prefix/home/你的用户名/mpich-install第 3 步编译并安装make make install把安装目录的bin加入 PATH写入~/.bashrcexport PATH/home/你的用户名/mpich-install/bin:$PATH用下面两条命令验证安装成功which mpicc # 应指向安装目录的 bin which mpiexec详细说明可参考项目根目录的 README.md 第 1 章 Getting Started。mpiexec 使用方法MPI 程序的总启动器安装完成后你会获得两个核心工具工具作用mpiccMPI 编译包装器自动帮你加头文件路径和库链接mpiexecMPI 程序启动器负责创建并管理所有 MPI 进程mpiexec内部包含Process Creation进程创建和PMI Server进程管理接口服务器两部分它先按你指定的数量拉起进程再让每个进程通过 PMI 协议相互认识交换 rank、节点信息最后才把控制权交给你的 MPI 应用。最常用的语法只有一条mpiexec -n 进程数 ./程序实战编写并运行第一个 Hello World 并行程序 下面是经典的最小示例完整源码见 examples/hellow.c#include stdio.h #include mpi.h int main(int argc, char *argv[]) { int rank; /* 我是第几号进程 */ int size; /* 一共有几个进程 */ MPI_Init(0, 0); MPI_Comm_rank(MPI_COMM_WORLD, rank); MPI_Comm_size(MPI_COMM_WORLD, size); printf(Hello world from process %d of %d\n, rank, size); MPI_Finalize(); return 0; }核心就三行MPI_Init / MPI_Comm_rank / MPI_Comm_size。其中MPI_COMM_WORLD默认通信器包含本次运行启动的全部进程rank进程编号从 0 开始每个进程各不相同size进程总数所有进程看到同一个值。编译与运行mpicc hellow.c -o hellow mpiexec -n 4 ./hellow你会看到 4 个进程各自打招呼输出顺序可能交错这很正常Hello world from process 0 of 4 Hello world from process 1 of 4 Hello world from process 2 of 4 Hello world from process 3 of 4恭喜你第一个并行程序跑起来了 顺手体验一个真并行并行计算圆周率仓库自带一个更有趣的例子 examples/cpi.c各进程分摊一部分矩形求和最后用MPI_Reduce汇总出 π 的近似值mpiexec -n 4 ./examples/cpi它还能打印每个进程所在的节点名是观察进程到底跑在哪的好材料。更多示例说明见 examples/README。进阶用 mpiexec 在多节点集群上分布进程单节点玩熟了上集群就是改一条命令的事。Hydra 是 MPICH 默认的进程管理器它支持 ssh、slurm 等多种后端在启动节点和各计算节点之间转发 PMI 信息使用主机文件hostfile指定节点创建文件hosts每行一个主机名冒号后数字表示该节点上放几个进程# 示例主机文件 node1:2 # 前 2 个进程跑在 node1 node2:3 node3:1然后运行mpiexec -f hosts -n 6 ./hellow若进程数超出主机文件容量Hydra 会按轮询round robin方式继续分配。分布式运行时的整体拓扑如下各节点的 PMI Server 相互连通进程通过 SSH 等方式远程拉起也可以用-hosts直接在命令行里指定免去主机文件mpiexec -hosts node1:2,node2:2 -n 4 ./hellow更多 Hydra 用法环境变量传递、绑定策略等可查阅 Using the Hydra Process Manager。常用 mpiexec 参数速查表参数作用示例-n/-np指定 MPI 进程总数mpiexec -n 4 ./hellow-f指定主机文件mpiexec -f hosts -n 6 ./hellow-hosts命令行直接指定节点与分布mpiexec -hosts a:2,b:2 -n 4 ./app-genv向所有子进程传递环境变量mpiexec -genv MYVAR1 ./app-bind-to/-map-by进程绑核 / 映射策略性能调优利器mpiexec -map-by socket -n 4 ./app-info查看 MPI 运行信息与配置mpiexec -info-help列出全部选项mpiexec -选项 -help可查单个mpiexec -hosts -help常见问题排查MPICH 编译与运行报错怎么办1.mpicc: command not foundPATH 未生效。执行which mpicc确认必要时重新source ~/.bashrc。2. configure 报 No Fortran compiler found不需要 Fortran 绑定时加--disable-fortran重新配置需要则先安装 gfortran。3. 运行mpiexec后卡住或无输出先用mpiexec -info检查 PM 配置多节点场景确认免密 SSH 已配好Hydra 默认走 ssh 启动远端进程。4. 想在 gdb 里调试 MPI 程序可以直接让 mpiexec 拉起调试器mpiexec -np 1 gdb ./hellow调试界面长这样配合断点观察每个进程的执行流非常直观5. 想批量验证安装是否正常安装后可直接运行官方测试套件make testing结果汇总在test/summary.xml。下一步学什么到这里你已经掌握了 MPICH 入门的完整闭环安装 → mpicc 编译 → mpiexec 启动 → 多节点分布。建议接下来按这条路线进阶 读一遍 examples/cpi.c搞懂MPI_Bcast与MPI_Reduce学习点对点通信MPI_Send/MPI_Recv可参考 test/basic/sendrecvt.c了解 MPICH 各层接口命名规范MPI_ / MPIR_ / MPID_ / MPII_ 前缀阅读源码时不再迷路从Hello World到 π 计算再往 RMA、集合通信走一步你就正式踏进了高性能计算的大门。【免费下载链接】mpichOfficial MPICH Repository项目地址: https://gitcode.com/gh_mirrors/mp/mpich创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表