DAWNING 乡 曙光 DAWNING 科拔计算未来 Hello world(Fortran) progran nain inc1ude'mpif.h′ integer ierr ca1工MP工IN工T(ierx) print * 'Hello, world! i call MPI FINALIZE( ierr end 2021年1月 MP|并行程序设计 13/217
2021年1月 MPI并行程序设计 13/217 Hello world(Fortran) program main include ‘mpif.h’ integer ierr call MPI_INIT( ierr ) print *, 'Hello, world!' call MPI_FINALIZE( ierr ) end
DAWNING 曙光 DAWNING C和 Fortran中MP函数约定 计算未来 C 必须包含mpih MP函数返回出错代码或 MPI SUCCESS成功标志 MPI-前缀,且只有MP以及MPI标志后的第一个字母大写,其余 小写 · Fortran 必须包含 mpif. h 通过子函数形式调用MP,函数最后一个参数为返回值 MPI-前缀,且函数名全部为大写 MPI函数的参数被标志为以下三种类型: -IN:参数在例程的调用中不会被修正 OUT:参数在例程的调用中可能会被修正 - INOUT:参数在一些例程中为N,而在另一些例程中为OUT 2021年1月 MP|并行程序设计 14/217
2021年1月 MPI并行程序设计 14/217 C和Fortran中MPI函数约定 • C – 必须包含mpi.h. – MPI 函数返回出错代码或 MPI_SUCCESS成功标志. – MPI-前缀,且只有MPI以及MPI_标志后的第一个字母大写,其余 小写. • Fortran – 必须包含mpif.h. – 通过子函数形式调用MPI,函数最后一个参数为返回值. – MPI-前缀,且函数名全部为大写. • MPI函数的参数被标志为以下三种类型: – IN:参数在例程的调用中不会被修正. – OUT:参数在例程的调用中可能会被修正. – INOUT:参数在一些例程中为IN,而在另一些例程中为OUT
DAWNING 乡 曙光 DAWNING MP|初始化MP||NT 科拔计算未来 int MPI Init(int * argc, char *xargv) MPI INIT (IERROR) MPI NIT是MP|程序的第一个调用,它完成 MP|程序的所有初始化工作。所有的MP程序 的第一条可执行语句都是这条语句 一启动MP|环境,标志并行代码的开始 并行代码之前,第一个mp函数(除 MPI Initialize0外) 要求main必须带参数运行,否则出错 2021年1月 MP|并行程序设计 15/217
2021年1月 MPI并行程序设计 15/217 MPI初始化-MPI_INIT int MPI_Init(int *argc, char **argv) MPI_INIT(IERROR) – MPI_INIT是MPI程序的第一个调用,它完成 MPI程序的所有初始化工作。所有的MPI程序 的第一条可执行语句都是这条语句。 – 启动MPI环境,标志并行代码的开始. – 并行代码之前,第一个mpi函数(除 MPI_Initialize()外). – 要求main必须带参数运行,否则出错
DAWNING 乡 曙光 DAWNING MP|结束MP| FINALIZE 科拔计算未来 int MPl Finalize(void) MPI FINALIZE( ERROR) MPI FINALI!E是MP程序的最后一个调用,它结束 MP|程序的运行,它是MP程序的最后一条可执行语句, 否则程序的运行结果是不可预知的。 一标志并行代码的结束结束除主进程外其它进程 之后串行代码仍可在主进程(rank=0)上运行(如果必 须 2021年1月 MP|并行程序设计 16/217
2021年1月 MPI并行程序设计 16/217 MPI结束-MPI_FINALIZE int MPI_Finalize(void) MPI_FINALIZE(IERROR) – MPI_FINALIZE是MPI程序的最后一个调用,它结束 MPI程序的运行,它是MPI程序的最后一条可执行语句, 否则程序的运行结果是不可预知的。 – 标志并行代码的结束,结束除主进程外其它进程. – 之后串行代码仍可在主进程(rank = 0)上运行(如果必 须)
DAWNING 乡 曙光 DAWNING MP|程序的的编译与运行 科拔计算未来 mpif77 hello f Ei mpicc hello c 一默认生成aout的可执行代码. 小写o mpif77- o hello hello. f或 picc Fo /hello hello.c 生成heo的可执行代码 p mpirun np 4 aout The number of process mpirun +np 4 hello -4指定np的实参,表示进程数,由用户指定 -aout/ hello要运行的MP并行程序 2021年1月 MP|并行程序设计 17/217
2021年1月 MPI并行程序设计 17/217 MPI程序的的编译与运行 • mpif77 hello.f 或 mpicc hello.c – 默认生成a.out的可执行代码. • mpif77 –o hello hello.f 或 • mpicc –o hello hello.c – 生成hello的可执行代码. • mpirun –np 4 a.out • mpirun –np 4 hello – 4 指定np的实参,表示进程数,由用户指定. – a.out / hello 要运行的MPI并行程序. %小写o %np: The number of process