1.安装:
下载源码包,mpich2-1.3.2,
依次执行./configure --disable-fortran --disable-f77 --enable-sharedlibs=gcc --enable-shared
make
make install
make clean
这样默认系统/usr/local/bin就有mpicc、mpiexec等命令了。
--enable-sharedlibs=gcc --enable-shared两个选项是生成mpi的动态库,mpicxx.so等。
2.主机ubuntu11.10,子节点fedora15.
1. mpi默然的进程管理工具已经不是mpd,而是hydra,所以不要花力气配置mpd(除非你愿意);
2. ssh设置:主机ssh-keygen -t rsa会在home下生成.ssh文件夹, 子节点机器同样命令,然后把主机ssh文件内东西全部考入子机器ssh内,
运行: ssh 10.1.12.55 检验是否还需要密码进行子节点ssh登录
3.编写运行程序,主机和客户机需要分别编译,如果只是主机编好,拷贝到子机器,会发生子机器no such file 的问题。即使路径什么都对。
一定要分别编译:mpicc -o show_ui show_ui.c 原因应该是linux软链接的问题
4. 集群运行
在主节点的home下配置节点清单hosts,只需要列出机器名,机器名用命令uname -n得到
kekezhou-laptop
kekezhou.fedora:3
机器名后面跟数字是指定节点开的进程个数,没有默认是1, 这样运行的时候就可以不指定-n参数
我在/etc/hosts内还配置了集群的ip和机器名。如下:
10.1.12.53 kekezhou-laptop
10.1.12.55 kekezhou.fedora
最后是运行,在home目录下:mpiexec -f hosts -n 8 ./show_ui
参数说明:hosts是配置的机器名节点清单, 8 是需要的进程个数,最后show_ui是可执行程序
附录:show_ui.c
#include <stdio.h>
#include "mpi.h"
int main(int argc, char* argv[])
{
MPI_Init(&argc, &argv);
system("xclock\n");
MPI_Finalize();
return 0;
} /* end main */ 效果图:
图1.主节点
图2.子节点