1
假设与mpif90作为编译过简化FORTRAN代码:调用在FORTRAN子程序而不阻挡主程序
program main
!
use mpi
implicit none
integer:: j, numtasks, taskid, ierr
integer:: master = 0
!
call mpi_init(ierr)
call mpi_comm_rank(mpi_comm_world, taskid, ierr)
!
if (taskid .eq. master) then
j = 5
call child (j)
! do stuff
end if
call mpi_finalize(ierr)
!
end program main
subroutine child(j)
!
implicit none
integer, intent(in):: j
! do some stuff with j
end subroutine child
默认情况下,从主等待主CPU直到子与其计算完成。但是,我希望它在给孩子打电话之后继续完成任务,而孩子也在完成任务。我希望孩子成为主要的子程序,因为我需要将一些数据从主体传递给孩子(但不是相反)。我想知道是否可以在FORTRAN中使用(也许通过使用某种非阻塞子例程调用或多线程(如mpi_comm_spawn))。