乡 曙光 计算,改变您的现在 DAWNI Hello world(Fortran program main include mpif.h integer lerr ca11MPI工NIT(ierr) print Hello, world! call MPi Finalize( ierr end 2021年1月 11/55
2021年1月 11/55 Hello world(Fortran) program main include ‘mpif.h’ integer ierr call MPI_INIT( ierr ) print *, 'Hello, world!' call MPI_FINALIZE( ierr ) end
乡 曙光 计算,改变您的现在 DAWNIN e和 Fortran中MPI函数约定 e c 画必须包含mpih MP函数返回出错代码或 MPI SUCCESS成功标志 MPI前缀,且只有M以及MPI标志后的第一个字母大写,其 余小写 e fortran 必须包含 mpif. h 通过子函数形式调用MPl,函数最后一个参数为返回值 MPI前缀,且函数名全部为大写 QMPI函数的参数被标志为以下三种类型 IN:参数在例程的调用中不会被修正 OUT:参数在例程的调用中可能会被修正 INOUT:参数有初始值,且在例程的调用中可能会被修正 2021年1月 12/55
2021年1月 12/55 C和Fortran中MPI函数约定 C 必须包含mpi.h. MPI 函数返回出错代码或 MPI_SUCCESS成功标志. MPI-前缀,且只有MPI以及MPI_标志后的第一个字母大写,其 余小写. Fortran 必须包含mpif.h. 通过子函数形式调用MPI,函数最后一个参数为返回值. MPI-前缀,且函数名全部为大写. MPI函数的参数被标志为以下三种类型: IN:参数在例程的调用中不会被修正. OUT:参数在例程的调用中可能会被修正. INOUT:参数有初始值,且在例程的调用中可能会被修正
乡 曙光 计算,改变您的现在 DAWNING MP初始化-MP|NT int MPl Init(int *argc, char **argv) MPI INIT(ERROR) 画 MPL INIT是MP程序的第一个调用,它完成 MP程序的所有初始化工作。所有的MP程序 的第一条可执行语句都是这条语句。 画启动MP环境标志并行代码的开始. 画并行代码之前第一个mp函数(除 MP Initialized(0外) ■要求main必须带参数运行,否则出错 2021年1月 13/55
2021年1月 13/55 MPI初始化-MPI_INIT int MPI_Init(int *argc, char **argv) MPI_INIT(IERROR) MPI_INIT是MPI程序的第一个调用,它完成 MPI程序的所有初始化工作。所有的MPI程序 的第一条可执行语句都是这条语句。 启动MPI环境,标志并行代码的开始. 并行代码之前,第一个mpi函数(除 MPI_Initialized()外). 要求main必须带参数运行,否则出错
乡 曙光 计算,改变您的现在 DAWNING MP结束MP| FINALIZE int MPl Finalize(void) MPI FINALIZE ERROR) 画 MPI FINALIZE是MP程序的最后一个调用, 它结束MP程序的运行,它是MP程序的最后 条可执行语句,否则程序的运行结果是不可 预知的。 标志并行代码的结束结束除主进程外其它进程 画之后串行代码仍可在主进程rank=0)上运行 (如果必须) 2021年1月 14/55
2021年1月 14/55 MPI结束-MPI_FINALIZE int MPI_Finalize(void) MPI_FINALIZE(IERROR) MPI_FINALIZE是MPI程序的最后一个调用, 它结束MPI程序的运行,它是MPI程序的最后 一条可执行语句,否则程序的运行结果是不可 预知的。 标志并行代码的结束,结束除主进程外其它进程. 之后串行代码仍可在主进程(rank = 0)上运行 (如果必须)
乡 曙光 计算,改变您的现在 DAWNING MP程序的的编译与运行 e mpif77 hello f o mpicc helloc 画默认生成aou的可执行代码 empi77-0he| o hello,f或 小写o e mpicc-o hello hello. c 画生成he的可执行代码 Anp e mpirun - np 4 a out The number of process e mpirun -np 4 hello 4指定np的实参,表示进程数由用户指定 画aout/hel要运行的MP并行程序 2021年1月 15/55
2021年1月 15/55 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