实现
让所有进程同一时间开始运算,最后选取运行时间最长的那个进程的时间。
program main
use mpi
implicit none
integer :: rank, size, ierr
real(8) :: local_finish, local_start
real :: local_elapsed, elapsed
! 初始化
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD, size, ierr)
local_start = MPI_WTIME()
call SLEEP(2)
local_finish = MPI_WTIME()
local_elapsed = local_finish - local_start
call MPI_REDUCE(local_elapsed, elapsed, 1, MPI_REAL, MPI_MAX, 0, MPI_COMM_WORLD, ierr)
if (rank == 0) then
print *, "elapsed:", elapsed
endif
! 结束
call MPI_FINALIZE(ierr)
end program mai