24 use,
INTRINSIC :: iso_c_binding, only : c_ptr, c_char, c_null_char, c_loc
30 bind( c, name=
'mpi_handshake_c2f')
31 use,
intrinsic :: iso_c_binding, only : c_ptr, c_int
33 INTEGER(KIND=c_int),
INTENT(in),
VALUE :: n
34 TYPE (c_ptr) ,
INTENT(in) :: group_names(n)
35 INTEGER(KIND=c_int),
INTENT(out) :: group_comms(n)
36 INTEGER(KIND=c_int),
INTENT(in),
VALUE :: comm
40 integer,
intent(in) :: comm
41 character(len=MAX_GROUPNAME_LEN),
intent(in) :: group_names(:)
42 integer,
intent(inout) :: group_comms(size(group_names))
44 CHARACTER (kind=c_char, len=MAX_GROUPNAME_LEN),
TARGET :: group_names_cpy(size(group_names))
45 type( c_ptr ) :: group_name_ptr(size(group_names))
47 DO i=1,
SIZE(group_names)
48 group_names_cpy(i) = trim(group_names(i)) // c_null_char
49 group_name_ptr(i) = c_loc(group_names_cpy(i))
subroutine, public mpi_handshake(comm, group_names, group_comms)
Procedure for the communicator splitting ("MPI handshake") that has been harmonized with the respecti...