我正在学习 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>
我怎么知道我的应用程序在每台机器上运行?在运行应用程序时,我是否需要在每台机器上进行一些特殊配置等?