前人已经终结得很详尽了:https://blog.csdn.net/cjsh_123456/article/details/80285887
单机验证安装成功:
smpd -install -phrase behappy
wmpiregister.exe
,注册Windows账户的用户名和密码D:\Program Files (x86)\MPICH2\examples\cpi.exe
为测试程序成功在集群上运行,这里使用了一个打印主机名的 MPI 程序,读者可以自行编译(出处在这里),假设编译后得到 D:\mpi\test.exe
。
#include <mpi.h>
#include <stdio.h>
int main(int argc, char** argv) {
// 初始化 MPI 环境
MPI_Init(NULL, NULL);
// 通过调用以下方法来得到所有可以工作的进程数量
int world_size;
MPI_Comm_size(MPI_COMM_WORLD, &world_size);
// 得到当前进程的秩
int world_rank;
MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
// 得到当前进程的名字
char processor_name[MPI_MAX_PROCESSOR_NAME];
int name_len;
MPI_Get_processor_name(processor_name, &name_len);
// 打印一条带有当前进程名字,秩以及
// 整个 communicator 的大小的 hello world 消息。
printf("Hello world from processor %s, rank %d out of %d processors\n",
processor_name, world_rank, world_size);
// 释放 MPI 的一些资源
MPI_Finalize();
}
一台Windows上可以有多个管理员账户,这里采用的方法是,首先添加新账户,再将账户类型修改为管理员:
https://jingyan.baidu.com/article/7082dc1c629264e40a89bd34.html
在集群上的每一台Windows上添加同一管理员权限账户,密码也要相同。
点击运行 wmpiregister.exe
,注册前一步添加的Windows账户的用户名和密码。
点击运行 wmpiconfig.exe
。
假设集群通过同一个网络,位于 WORKGROUP 的工作组中。选择 Domain 为 WORKGROUP ,扫描工作组中的主机名和 MPICH2 版本。如果扫描不到某一个机器的版本,建议检查该台机器是否能单机运行MPICH2,可能是因为没有运行 SMPD。
首先写配置文件 config.mpi :
-n 2 192.168.1.15 D:\mpi\test.exe
-n 2 192.168.1.55 D:\mpi\test.exe
写明了节点的 IP 地址和同一执行文件在该结点上的路径,以及每个节点的运行参数。
然后命令行运行:
D:\Program Files (x86)\MPICH2\bin> mpiexec -configfile "D:\mpi\config.mpi"
前人的总结:mpich2多机协同作业