로 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과 같은 멀티 스레딩을 사용해서).