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))。