前阵子忙着看solaris,买了书,看了一阵,后来重新安排让搞异构编程环境,于是看交叉编译,最近老师安排熟悉mpi编程环境。。。
异构的话,还是先在windows,linux下用用吧,first step starts from windows.
1.需要有c,c++ or fortan的编译器,在这里我采用的是dev-cpp里的g++编译器,可以去迅雷上下,搜dev cpp即可,有的版本比较按照默认安装路径,否则会出现build错误,还是老实点吧
我用的是dev-c++ 4.9.4.1 ,默认安装到了c根目录下
2,下载mpi的实现,这里采用mpich版本2.0,到http://www.mcs.anl.gov/research/projects/mpich2/
下载mpich2- 1.0.7-win32-ia32.msi,这个是专门为x86-windows-32实现的,这里采用默认安装到C:\Program Files\MPICH2。
3.现在已经可以在本机进行基本的编程了,当然还有mpi的一些对于节点的配置,不过对于编写一个简单的在本机运行的程序是不必要的
4.写一个最简单的 mpi "hello world"程序
#include "mpi.h"
#include <stdio.h>
#include <math.h>
void main(int argc,char ** argv)
{
int myid, numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stderr,"Hello World! Process %d of %d on %s\n",
myid, numprocs, processor_name);
MPI_Finalize();
}
5.编译执行
注意要想在cmd里,可以直接调用g++,mpiexec命令,需要现在系统的环境变量里设置path的值,这样系统就知道去那个路径寻找下面要使用的命令了。
编译命令:
g++ test.cpp -I C:\PROGRA~1\MPICH2\include -L C:\PROGRA~1\MPICH2\lib -lmpi -o test.exe
运行命令:
mpiexec -n 4 -localonly test.exe
这样就可以看到运行结果了,以上 命令均在cmd里执行,结果显示也是
好啦,这样最简单的mpi程序的编译运行过程就完成了
为了避免每次敲入重复的编译,运行命令,我把他们保存到.bat文件,并且,将保存bat文件的路径,添加到path里,这样以后直接运行这个.bat文件,就可以自动执行上述编译,运行命令了。
待解决问题:
异构环境下编程 程序的异机运行 熟悉mpi高级编程 熟悉mpiconfig 和mpiregister的各项设置的意义
如何简化编程过程?