[J3] asynchronous coarray collectives?
Jeff Hammond
jehammond at nvidia.com
Sat May 6 19:32:07 UTC 2023
I was not aware that coarray collectives were pure. They have strong side effects. Are you sure they are pure?
If the do concurrent is execute in a random order on a single thread, which seems like a legal implementation, this will deadlock.
Finally, how does do concurrent inform the Fortran implementation to take advantage of network offloading?
On 6. May 2023, at 21.39, Van Snyder via J3 <j3 at mailman.j3-fortran.org> wrote:
External email: Use caution opening links or attachments
Try this:
subroutine stuff(A,B,C,D)
implicit none
double, intent(inout) :: A, B, C
double, intent(in) :: D(:)
integer :: I
do concurrent ( i = 1:3 )
select case ( i )
case ( 1 )
call co_sum(A)
case ( 2 )
call co_min(B)
case ( 3 )
call co_max(C)
end select
end do
print*,D
end subroutine stuff
Bill Long pointed out several years ago that a fork/join construct would be syntactic sugar for this.
On Sat, 2023-05-06 at 07:59 +0000, Jeff Hammond via J3 wrote:
How do I make a Fortran coarry program like this...
subroutine stuff(A,B,C,D)
implicit none
double, intent(inout) :: A, B, C
double, intent(in) :: D(:)
call co_sum(A)
call co_min(B)
call co_max(C)
print*,D
end subroutine stuff
...behave like this...
subroutine stuff(A,B,C,D)
use mpi_f08
implicit none
double, intent(inout) :: A, B, C
double, intent(in) :: D(:)
type(MPI_Request) :: R(3)
call MPI_Iallreduce(MPI_IN_PLACE, A, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD, R(1))
call MPI_Iallreduce(MPI_IN_PLACE, B, 1, MPI_DOUBLE, MPI_MIN, MPI_COMM_WORLD, R(2))
call MPI_Iallreduce(MPI_IN_PLACE, C, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD, R(3))
print*,D
call MPI_Waitall(3,R,MPI_STATUSES_IGNORE)
end subroutine stuff
...in the sense that it is possible for the network to execute the communication operations asynchronously relative to the print statement?
Do any compilers, e.g. Cray’s, automatically convert coarry operations to asynchronous communication and push the completion of those operations as far down as possible?
Jeff
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.j3-fortran.org/pipermail/j3/attachments/20230506/4ab5335a/attachment-0001.htm>
More information about the J3
mailing list