numprocs,namelen,rc,ierrcallMPI_INIT(ierr)callMPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)callMPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)callMPI_GET_PROCESSOR_NAME(processor_name,namelen,ierr)write(*,10)myid,numprocs,processor_name10FORMAT('Hello World! Process ',I2,' of ',I1,' on ',20A)...
MPI(Message Passing Interface),可以理解为是一种独立于语言的信息传递标准。目前它有两种具体的实现Op...
call MPI_Finalize(ierr) deallocate(a) end program mpi_example 代码解释 MPI初始化: 使用 MPI_Init 初始化MPI环境,获取进程的 rank 和 size。 局部计算: 每个进程计算局部和。 全局计算: 使用 MPI_Reduce 将所有进程的局部和相加得到全局和。 MPI结束: 使用 MPI_Finalize 结束MPI环境。 示例3: 并行矩阵乘法...
MPI初始化: 使用 MPI_Init 初始化MPI环境,并获取进程的 rank 和 size。 数组分配和初始化: 在主进程(rank 0)中分配和初始化数组 a,并将其分发给各个进程。 分发数据: 使用 MPI_Scatter 将数组 a 分发给各个进程的局部数组 local_a。 局部计算: 各个进程计算局部数组的和 local_sum。 结果汇总: 使用 MPI_...
call MPI_FINALIZE ( IERR ) end program 3个CPU分担3次循环(每个CPU一次循环) c test parallel program program main use mpi integer::ICORE,NCORE,IERR,MASTER c start parallel-computation and assign the master core CALL MPI_INIT( IERR )
mpi_init 初始化,必须调用,首先调用,调用一次 mpicommsize 组内通信因子进程数 mpi_rank 在指定通信因子中的进程号(0~进程数-1),一个进程在不同通信因子中进程号可能不同 mpisend 发送缓冲区的count个datatype数据类型的数据发送到目的进程 mpireceive 从指定的source接收信息,接收消息的元素个数不能超过count ...
call MPI_Finalize(ierr) end program parallel_mpi 代码解释 MPI初始化: 使用 MPI_Init 初始化MPI环境,获取进程的 rank 和总进程数 size。 数组分配和初始化: 根据进程数 size 分割全局数组,分配局部数组并进行初始化。 并行计算: 在各个进程中计算局部数组 local_c。
program mpi_sum use mpi implicit none integer, parameter :: n = 1000000 real :: a(n), local_sum, total_sum integer :: i, rank, size, ierr ! MPI 初始化 call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr)
MPI_INIT(ierr) 进入MPI环境。 ierr 为 integer 型变量,运行正确返回0。 MPI_COMM_RANK(COMM,myid,ierr) 获得当前进程的进程号。 COMM 是通讯子,感觉相当于一个“组”的概念,在每个“组”中,每个进程都有唯一的进程号(rank)。 myid 为 integer 型变量,返回当前进程在通讯子 COMM 中的进程号。 ierr ,程序...
character(len=mpi_max_processor_name) :: p_name integer :: myid, numProcs, nameLen, ierr call mpi_init( ierr ) ! 完成 MPI程序 的初始化工作 ! | ! + --- 返回代码,与 mpi_success 相等时表示成功(out) call mpi_comm_rank( mpi_comm_world, myid, ierr ) ! 获取当前进程标识号 !