programmainimplicit noneinclude'mpif.h'character*(MPI_MAX_PROCESSOR_NAME)processor_nameintegermyid,numprocs,namelen,rc,ierr,status(MPI_STATUS_SIZE)real(8)acallMPI_INIT(ierr)callMPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)! get process numbercallMPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)! get the...
以下代码展示了如何在Fortran中使用MPI对数组求和进行分布式计算。 fortran 复制代码 program mpi_sum use mpi implicit none integer :: ierr, rank, size, i, n, local_n real, allocatable :: a(:), local_a(:) real :: local_sum, total_sum call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WO...
call MPI_Finalize(ierr) end program mpi_sum 代码解释 MPI并行化: 使用 use mpi 引入MPI库,并通过 MPI_Init, MPI_Comm_rank, MPI_Comm_size, MPI_Allreduce, MPI_Finalize 等MPI函数实现分布式并行计算。局部求和: 每个进程计算数组 a 的局部和。全局归约: 使用 MPI_Allreduce 函数将所有进程的局部和归约...
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierror)call MPI_COMM_RANK(MPI_COMM_WORLD, rank, i...
MPI_COMM_SIZE(COMM,np,ierr)获得总进程数np 为 integer 型变量,返回COMM通讯子中进程总数。ierr ,程序正确运行时返回 0 。 MPI_GET_ProcESSOR_NAME(processor_name,namelength,ierr)获得运行本进程的机器的机器名和机器名长度。processor_name 为 character 型变量,返回运行本进程的机器名。namelength 为 integer...
在Fortran代码中使用MPI进行并行计算,通常需要遵循以下步骤: 引入MPI库:在程序开始时,使用include 'mpif.h'或use mpi语句引入MPI库。 初始化MPI环境:使用MPI_Init函数初始化MPI环境。 获取进程信息:使用MPI_Comm_rank和MPI_Comm_size函数获取当前进程的排名和总进程数。 执行并行计算:根据进程排名和总进程数分配计算...
my_id ==> NO. this processcallMPI_COMM_SIZE (MPI_COMM_WORLD, num_procs, ierr)!num_procs ==> number of processwrite(*,'('Hello World',1x,i2,a,i2)') my_id,'/',num_procscallMPI_FINALIZE ( ierr )endprogram 并行程序的编译...
mpicommsize 组内通信因子进程数 mpi_rank 在指定通信因子中的进程号(0~进程数-1),一个进程在不同通信因子中进程号可能不同 mpisend 发送缓冲区的count个datatype数据类型的数据发送到目的进程 mpireceive 从指定的source接收信息,接收消息的元素个数不能超过count ...
MPI_Gatherv(void*sendbuf,intsendcnt,MPI_Datatype sendtype,void*recvbuf,intrecvcnts,int*displs,MPI_Datatype recvtype,introot,MPI_Comm comm) 收集不同长度的数据块。与MPI_Gather类似,但允许每个进程发送的数据块长度不同,并且根据进程可以任意排放数据块在recvbuf中的位置。recvbuf,recvtype,recvcnts和dis...
call mpi_comm_size( mpi_comm_world, numProcs, ierr ) ! 获取通信域包含的进程数 dowhile(var.ge.0)if( myid .eq.0)thenwrite(*,"(a)" ) "Please input new value:"read(*,*)varwrite(*,"(a,i3,a,i8,a)" ) "proc",myid,"read<-<-(",var," )"if( numProcs .gt.1)thencall mpi_...