MPI程序的运行命令

本博客已迁往http://coredumper.cn


在运行MPI程序之前,首先用命令mpdtrace查看一下当前集群的运行状况,如果集群没有启动,需要用如下命令启动集群:

mpdboot -n 4 -f ~/mpd.hosts

我的集群是由node1、node2、node3、node4四台机器组成的。


由于MPI程序通常需要将各个进程指定给相应的机器节点来执行,所以MPI程序的运行命令会有比较长的参数,可以将这些参数写入一个配置文件,然后再执行这个配置文件。下面举例说明。


对于如下MPI程序,编译后生成可执行文件test:

#include <stdio.h>
#include <mpi.h>

int main(int argc, char **argv)
{
	int myid, numprocs;
	char host[10];

	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &myid);
	MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
	
	gethostname(host, 10);
	printf("I am %d of %d at %s\n", myid, numprocs, host);

	MPI_Finalize();
	return 0;
}

如下是针对上述程序的配置文件pgfile:

-n 1 -host node1 ./test
-n 1 -host node2 ./test
-n 1 -host node1 ./test
-n 1 -host node4 ./test
-n 1 -host node3 ./test
-n 1 -host node3 ./test


执行如下命令:

mpiexec -configfile pgfile

运行结果如下:

I am 0 of 6 at node1
I am 3 of 6 at node4
I am 2 of 6 at node1
I am 5 of 6 at node3
I am 1 of 6 at node2
I am 4 of 6 at node3

需要注意的是:

配置文件中的每一行都指定产生一个进程,并且第一行产生0号进程,第二行产生1号进程,后面依次类推,如果想将某个进程绑定在某个节点上执行,就需要将主机名写在进程号所属的那一行。

### MPI 运行配置教程 #### 下载与安装 MPI 为了在 Ubuntu 虚拟机或其他操作系统上运行 MPI 程序,首先需要下载并安装 MPI 库。通常推荐使用 MPICH 或 OpenMPI 版本[^1]。可以通过包管理器完成安装: 对于 Ubuntu/Debian 系统: ```bash sudo apt update && sudo apt install mpich libmpich-dev ``` 或者如果偏好 OpenMPI,则可以执行以下命令: ```bash sudo apt update && sudo apt install openmpi-bin openmpi-common libopenmpi-dev ``` 这一步骤会自动处理依赖关系并将必要的库文件安装到系统中。 --- #### 编写简单的 MPI 程序 编写一个基本的 C/C++ 程序来测试 MPI 配置是否成功。例如,下面是一个经典的 Hello World 示例程序[^2]: ```c #include <stdio.h> #include <mpi.h> int main(int argc, char *argv[]) { int rank, size; // 初始化 MPI 环境 MPI_Init(&argc, &argv); // 获取当前进程编号 (rank) 和总进程数 (size) 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 环境 MPI_Finalize(); return 0; } ``` 保存此代码为 `hello_mpi.c` 文件以便后续编译和运行。 --- #### 编译 MPI 程序 使用特定于 MPI 的编译工具链来进行源码编译。假设已安装 MPICH 或 OpenMPI,默认情况下提供了 `mpicc` 命令用于编译 C 程序。 针对上述例子中的 hello_mpi.c 文件可采用如下方式构建二进制目标文件: ```bash mpicc -o hello_mpi hello_mpi.c ``` 这里 `-o` 参数指定了输出的目标名称为 `hello_mpi`. --- #### 执行 MPI 程序 启动多个进程实例以验证分布式计算功能正常运作。一般通过 mpirun 工具实现这一点。比如让四个独立节点参与运算操作的话可以用这条指令: ```bash mpirun -np 4 ./hello_mpi ``` 其中参数 `-np` 表明创建多少个进程副本;后面紧跟的是刚才生成的应用路径名。 当一切设置无误之后,在终端应该能看到来自不同 ranks 发送的消息打印出来,形似这样: ``` 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! ``` 以上即完成了整个流程——从获取软件套件直至实际部署应用案例为止的过程概述. --- #### 解决常见问题 有时可能会遇到一些典型错误提示,像找不到 mpiexec 可执行档之类的状况。此时需确认 PATH 环境变量里包含了相应目录位置。另外还需注意防火墙设定可能阻碍跨机器通讯连接等问题存在可能性。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值