6

我正在学习 MPI。我遵循的第一个教程是here

我使用 MSVC 2010 在 Windows 7 上成功运行的代码是:

#include "mpi.h"
#include "iostream.h"

int main(int argc,char *argv [])
{
   int numtasks, rank, rc; 
   rc = MPI_Init(&argc,&argv);
   if (rc != MPI_SUCCESS) {
       printf ("Error starting MPI program. Terminating.\n");
       MPI_Abort(MPI_COMM_WORLD, rc);
   } 
   MPI_Comm_size(MPI_COMM_WORLD,&numtasks);
   MPI_Comm_rank(MPI_COMM_WORLD,&rank);
   printf ("Number of tasks= %d My rank= %d\n", numtasks,rank);
   MPI_Finalize();
}

我在我的 Pentium-4 机器上成功运行了这段代码(不要惊讶我还有一台 Pentium-4)。

现在我想在以太网 LAN 中连接的多台机器上运行此代码(或任何其他 MPI 代码)。例如,每台机器将 1 与 1000 相加,然后发送回主节点,然后主节点将所有这些数字相加得到最终总和。

我的问题是如何在网络中开始 MPI 编程?我应该在每台机器上运行哪些工具/软件。

如果您能给我一个指向教程的指针,我将不胜感激。

MPI Implemnetation: MPICH2 
O.S:each machine is having Windows 7, 32 bit CPU: Intel's Pentium 4 and Dual core 
Network: Ethernet 
IDE:MSVC2010

更新:

杰夫的回答消除了我的一些疑问。我最近的问题是:

我是否在每台机器上安装 MPICH2。在 cfg 文件中每行写入每台机器的名称后,我需要做其他事情还是只给出命令:

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable>

我怎么知道我的应用程序在每台机器上运行?在运行应用程序时,我是否需要在每台机器上进行一些特殊配置等?

4

2 回答 2

3

将连接的机器添加到主机文件并将文件传递给mpiexec

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable>

检查MPICH 用户指南中的第 5.4 和 9 节。

更新:

是的,您需要在每台机器上安装 MPI 库。此外,您需要在每台机器上启动进程管理器守护程序并启用自动远程登录(例如 .using ssh)。mpdtrace然后使用打印出每台机器的主机名的简单的 hello world 程序运行测试。如果它有效,您将打印不同的主机名。如果安装运行顺利,应该不需要特殊配置(例如设置正确的库路径)。

于 2013-10-13T14:06:42.650 回答
2

经过艰苦的工作,我能够联系支持团队,我得到的答案是:

不幸的是,MPICH 团队不再支持他们的 Windows 版本

但是,仍然有一些希望,因为仍然可以使用 MS-MPI:

http://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_Why_can.27t_I_build_MPICH_on_Windows_anymore.3F

不幸的是,由于缺乏开发人员资源和兴趣,Windows 支持的最后一个 MPICH 版本是 MPICH2 1.4.1p。对该版本的支持很少,但您可以在下载页面上找到它:http ://www.mpich.org/downloads/ 或者,Microsoft 维护 MPICH 的衍生产品,它应该可以提供您需要的功能。您还可以在上面的下载页面上找到指向该链接的链接。该版本更有可能在您的系统上运行,并且将来会继续更新。我们建议所有 Windows 用户迁移到使用 MS-MPI。

于 2013-10-22T05:24:06.730 回答