programmaininclude'mpif.h'character*(MPI_MAX_PROCESSOR_NAME)processor_nameintegermyid,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,numpro...
comm通信器,一般使用系统预先定义的全局通信因子“MPI_COMM_WORLD”。 ierror输出。如果执行成功则会返回0。 广播示例 文件test_mpi.f如下 clocprogramtest_mpiUSEMPIINTEGER:: ICORE,NCORE,IERR,MASTERDIMENSION::A(10)DATAA/0,0,0,0,0,0,0,0,0,0/C INITIALIZATIONCALLMPI_INIT(IERR)CALLMPI_COMM_RANK(M...
call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, size, ierr) n = 1000000 / size ! 分配局部数组 allocate(local_a(n), local_b(n), local_c(n)) ! 初始化局部数组 local_a = [(i + rank * n, i = 1, n)] local_b = [(i * 2.0 + rank *...
使用MPI进行数组求和 以下代码展示了如何在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_Co...
program main use com include 'mpif.h' character * (MPI_MAX_PROCESSOR_NAME) processor_name integer numprocs, namelen, rc,ierr,status(MPI_STATUS_SIZE),myid0 call MPI_INIT(ierr) call MPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr) call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr) myid1 = myid ...
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 ) CALL MPI_COMM_RANK(MPI_COMM_WORLD,ICORE,IERR) CALL MPI_COMM_SIZE(MPI_COMM_WORLD,NCORE,IERR) CALL MPI_BARRIER(MPI_COMM_WORLD,IERR)...
在Fortran代码中使用MPI进行并行计算,通常需要遵循以下步骤: 引入MPI库:在程序开始时,使用include 'mpif.h'或use mpi语句引入MPI库。 初始化MPI环境:使用MPI_Init函数初始化MPI环境。 获取进程信息:使用MPI_Comm_rank和MPI_Comm_size函数获取当前进程的排名和总进程数。 执行并行计算:根据进程排名和总进程数分配计算...
MPI_INIT(ierr)进入MPI环境。ierr 为 integer 型变量,运行正确返回0。 MPI_COMM_RANK(COMM,myid,ierr)获得当前进程的进程号。COMM 是通讯子,感觉相当于一个“组”的概念,在每个“组”中,每个进程都有唯一的进程号(rank)。myid 为 integer 型变量,返回当前进程在通讯子 COMM 中的进程号。ierr ,程序正确运行时...
integer rank, size, ierror, tag, status(MPI_STATUS_SIZE)call MPI_INIT(ierror)call MPI_COMM_...
integer :: i, rank, size, ierr ! MPI 初始化 call MPI_Init(ierr) call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierr) call MPI_Comm_size(MPI_COMM_WORLD, size, ierr) ! 计算每个进程的局部和 local_sum = 0.0 do i = 1 + rank, n, size ...