1、从网址http://www-unix.mcs.anl.gov/mpi/mpich/ 处下载MPICH 最新版本的源程序, 文件名为mpich2-1.x.x.tar.gz, 其中1.x.x 为MPICH 的版本号(目前的最新版本为mpich2-1.1.1p1.tar.gz)。在下面描述的过程中需用MPICH 的实际版本号替换1.x.x
2、展开MPICH 源程序:
tar zxvf mpich2-1.1.1p1.tar.gz
3、配置、编译MPICH:
cd mpich2-1.1.1p1
./configure -prefix=/usr/local/mpi --disable-weak-symbols
make
上述命令生成的MPICH 库应该使用ch_p4 进行底层通信。
选项--disable-weak-symbols 的使用是为避免MPICH 1.2.5 的一个bug, 否则产生的库中
将没有MPI_File_xxxx 等函数(只有PMPI_File_xxx 等函数)
4、安装MPICH:
make install
这一步必须以root 身份执行, 它将MPICH 的文件安装到目录/usr/local/mpi 中。安装完毕后
可以删除MPICH 源文件目录。
5、添加环境变量
分别将“/usr/local/mpi/bin” 和“/usr/local/mpi/man” 加入到环境变量PATH 和MANPATH 中。
只需在目录/etc/profile.d 中创建两个文件mpich.sh 和mpich.csh, 它们分别对Bourne shell和C shell 起作用, 这两个文件的内容如下:
– /etc/profile.d/mpich.sh :
#!/bin/bash
export MANPATH=${MANPATH}:/usr/local/mpi/man
export PATH=${PATH}:/usr/local/mpi/bin
– /etc/profile.d/mpich.csh :
#!/bin/csh
if ( $?MANPATH == 0 ) then
setenv MANPATH :/usr/local/mpi/man
else
setenv MANPATH ${MANPATH}:/usr/local/mpi/man
endif
setenv PATH ${PATH}:/usr/local/mpi/bin
到 这一步我都是按照这上面做的,我改动了mpich.csh文件的内容:2.9 测试环境变量设置
#which mpd
#which mpicc
#which mpiexec
#which mpirun
2.10 修改/etc/mpd.conf文件,内容为secretword=myword
#vi /etc/mpd.conf
设置文件读取权限和修改时间
#touch /etc/mpd.conf
#chmod 600 /etc/mpd.conf
代码: 全选
#!/bin/csh
if ( $?MANPATH == 0 ) then
setenv MANPATH :/usr/local/mpi/share/man
else
setenv MANPATH ${MANPATH}:/usr/local/mpi/share/man
endif
setenv PATH ${PATH}:/usr/local/mpi/bin
代码: 全选
#!/bin/bash
export MANPATH=${MANPATH}:/usr/local/mpi/share/man
export PATH=${PATH}:/usr/local/mpi/bin
代码: 全选
gleerat@gleerat-desktop:~$ which mpd
/usr/bin/mpd
gleerat@gleerat-desktop:~$ which mpicc
/usr/bin/mpicc
gleerat@gleerat-desktop:~$ which mpiexec
/usr/bin/mpiexec
gleerat@gleerat-desktop:~$ which mpirun
/usr/bin/mpirun
gleerat@gleerat-desktop:~$ mpd &
[1] 27538
gleerat@gleerat-desktop:~$ mpdtrace
gleerat-desktop
gleerat@gleerat-desktop:~$ mpdallexit
gleerat@gleerat-desktop:~$
测试运行MPICH的圆周率的程序
在软件的安装包里有圆周率计算的原代码icpi.c,先编译成可执行文件
#cd /usr/local/mpich/install/examples/
mpicc icpi.c -o icpi
我找到进入example目录后却得到:C 程序
cp /usr/local/mpi/examples/cpi.c .
mpicc -o cpi cpi.c .
mpirun -np 1 cpi
mpirun -np 2 cpi
Fortran 程序
cp /usr/local/mpi/examples/pi3.f .
mpif77 -o pi3 pi3.f .
mpirun -np 1 pi3
mpirun -np 2 pi3
(程序运行过程中依次输入10000 和0)
代码: 全选
gleerat@gleerat-desktop:~$ cp /home/mpich2-1.2/examples/cpi.c .
gleerat@gleerat-desktop:~$ mpicc -o cpi cpi.c .
/usr/bin/ld: .: No such file: File format not recognized
collect2: ld returned 1 exit status
gleerat@gleerat-desktop:~$ mpirun -np 1 cpi
Missing: program name
Program cpi either does not exist, is not
executable, or is an erroneous argument to mpirun.
gleerat@gleerat-desktop:~$ mpirun -np 2 cpi
Missing: program name
Program cpi either does not exist, is not
executable, or is an erroneous argument to mpirun.
gleerat@gleerat-desktop:~$ cd /home/mpich2-1.2/examples
gleerat@gleerat-desktop:/home/mpich2-1.2/examples$ mpicc icpi.c -o icpi
/usr/bin/ld: cannot open output file icpi: Permission denied
collect2: ld returned 1 exit status
gleerat@gleerat-desktop:/home/mpich2-1.2/examples$ sudo mpicc icpi.c -o icpi
gleerat@gleerat-desktop:/home/mpich2-1.2/examples$