Merge pull request #241 from cniethammer/master
Add missing Fortran binding for Win_allocate.
Этот коммит содержится в:
Коммит
37c2b9cf30
@ -386,6 +386,7 @@ libmpi_mpifh_la_SOURCES += \
|
|||||||
rput_f.c \
|
rput_f.c \
|
||||||
compare_and_swap_f.c \
|
compare_and_swap_f.c \
|
||||||
fetch_and_op_f.c \
|
fetch_and_op_f.c \
|
||||||
|
win_allocate_f.c \
|
||||||
win_allocate_shared_f.c \
|
win_allocate_shared_f.c \
|
||||||
win_call_errhandler_f.c \
|
win_call_errhandler_f.c \
|
||||||
win_complete_f.c \
|
win_complete_f.c \
|
||||||
|
@ -314,6 +314,7 @@ linked_files = \
|
|||||||
prput_f.c \
|
prput_f.c \
|
||||||
pcompare_and_swap_f.c \
|
pcompare_and_swap_f.c \
|
||||||
pfetch_and_op_f.c \
|
pfetch_and_op_f.c \
|
||||||
|
pwin_allocate_f.c \
|
||||||
pwin_allocate_shared_f.c \
|
pwin_allocate_shared_f.c \
|
||||||
pwin_call_errhandler_f.c \
|
pwin_call_errhandler_f.c \
|
||||||
pwin_complete_f.c \
|
pwin_complete_f.c \
|
||||||
|
@ -344,6 +344,8 @@
|
|||||||
#define ompi_waitany_f pompi_waitany_f
|
#define ompi_waitany_f pompi_waitany_f
|
||||||
#define ompi_wait_f pompi_wait_f
|
#define ompi_wait_f pompi_wait_f
|
||||||
#define ompi_waitsome_f pompi_waitsome_f
|
#define ompi_waitsome_f pompi_waitsome_f
|
||||||
|
#define ompi_win_allocate_f pompi_win_allocate_f
|
||||||
|
#define ompi_win_allocate_cptr_f pompi_win_allocate_cptr_f
|
||||||
#define ompi_win_allocate_shared_f pompi_win_allocate_shared_f
|
#define ompi_win_allocate_shared_f pompi_win_allocate_shared_f
|
||||||
#define ompi_win_allocate_shared_cptr_f pompi_win_allocate_shared_cptr_f
|
#define ompi_win_allocate_shared_cptr_f pompi_win_allocate_shared_cptr_f
|
||||||
#define ompi_win_call_errhandler_f pompi_win_call_errhandler_f
|
#define ompi_win_call_errhandler_f pompi_win_call_errhandler_f
|
||||||
|
@ -401,6 +401,8 @@ PN2(void, MPI_Waitall, mpi_waitall, MPI_WAITALL, (MPI_Fint *count, MPI_Fint *arr
|
|||||||
PN2(void, MPI_Waitany, mpi_waitany, MPI_WAITANY, (MPI_Fint *count, MPI_Fint *array_of_requests, MPI_Fint *index, MPI_Fint *status, MPI_Fint *ierr));
|
PN2(void, MPI_Waitany, mpi_waitany, MPI_WAITANY, (MPI_Fint *count, MPI_Fint *array_of_requests, MPI_Fint *index, MPI_Fint *status, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_Wait, mpi_wait, MPI_WAIT, (MPI_Fint *request, MPI_Fint *status, MPI_Fint *ierr));
|
PN2(void, MPI_Wait, mpi_wait, MPI_WAIT, (MPI_Fint *request, MPI_Fint *status, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_Waitsome, mpi_waitsome, MPI_WAITSOME, (MPI_Fint *incount, MPI_Fint *array_of_requests, MPI_Fint *outcount, MPI_Fint *array_of_indices, MPI_Fint *array_of_statuses, MPI_Fint *ierr));
|
PN2(void, MPI_Waitsome, mpi_waitsome, MPI_WAITSOME, (MPI_Fint *incount, MPI_Fint *array_of_requests, MPI_Fint *outcount, MPI_Fint *array_of_indices, MPI_Fint *array_of_statuses, MPI_Fint *ierr));
|
||||||
|
PN2(void, MPI_Win_allocate, mpi_win_allocate, MPI_WIN_ALLOCATE, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
||||||
|
PN2(void, MPI_Win_allocate_cptr, mpi_win_allocate_cptr, MPI_WIN_ALLOCATE_CPTR, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_Win_allocate_shared, mpi_win_allocate_shared, MPI_WIN_ALLOCATE_SHARED, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
PN2(void, MPI_Win_allocate_shared, mpi_win_allocate_shared, MPI_WIN_ALLOCATE_SHARED, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_Win_allocate_shared_cptr, mpi_win_allocate_shared_cptr, MPI_WIN_ALLOCATE_SHARED_CPTR, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
PN2(void, MPI_Win_allocate_shared_cptr, mpi_win_allocate_shared_cptr, MPI_WIN_ALLOCATE_SHARED_CPTR, (MPI_Aint *size, MPI_Fint *disp_unit, MPI_Fint *info, MPI_Fint *comm, char *baseptr, MPI_Fint *win, MPI_Fint *ierr));
|
||||||
PN2(void, MPI_Win_call_errhandler, mpi_win_call_errhandler, MPI_WIN_CALL_ERRHANDLER, (MPI_Fint *win, MPI_Fint *errorcode, MPI_Fint *ierr));
|
PN2(void, MPI_Win_call_errhandler, mpi_win_call_errhandler, MPI_WIN_CALL_ERRHANDLER, (MPI_Fint *win, MPI_Fint *errorcode, MPI_Fint *ierr));
|
||||||
|
137
ompi/mpi/fortran/mpif-h/win_allocate_f.c
Обычный файл
137
ompi/mpi/fortran/mpif-h/win_allocate_f.c
Обычный файл
@ -0,0 +1,137 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||||
|
* University Research and Technology
|
||||||
|
* Corporation. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||||
|
* of Tennessee Research Foundation. All rights
|
||||||
|
* reserved.
|
||||||
|
* Copyright (c) 2004-2014 High Performance Computing Center Stuttgart,
|
||||||
|
* University of Stuttgart. All rights reserved.
|
||||||
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2011-2014 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* $COPYRIGHT$
|
||||||
|
*
|
||||||
|
* Additional copyrights may follow
|
||||||
|
*
|
||||||
|
* $HEADER$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ompi_config.h"
|
||||||
|
|
||||||
|
#include "ompi/mpi/fortran/mpif-h/bindings.h"
|
||||||
|
|
||||||
|
#if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILE_LAYER
|
||||||
|
#pragma weak PMPI_WIN_ALLOCATE = ompi_win_allocate_f
|
||||||
|
#pragma weak pmpi_win_allocate = ompi_win_allocate_f
|
||||||
|
#pragma weak pmpi_win_allocate_ = ompi_win_allocate_f
|
||||||
|
#pragma weak pmpi_win_allocate__ = ompi_win_allocate_f
|
||||||
|
|
||||||
|
#pragma weak PMPI_Win_allocate_f = ompi_win_allocate_f
|
||||||
|
#pragma weak PMPI_Win_allocate_f08 = ompi_win_allocate_f
|
||||||
|
|
||||||
|
#pragma weak PMPI_WIN_ALLOCATE_CPTR = ompi_win_allocate_f
|
||||||
|
#pragma weak pmpi_win_allocate_cptr = ompi_win_allocate_f
|
||||||
|
#pragma weak pmpi_win_allocate_cptr_ = ompi_win_allocate_f
|
||||||
|
#pragma weak pmpi_win_allocate_cptr__ = ompi_win_allocate_f
|
||||||
|
|
||||||
|
#pragma weak PMPI_Win_allocate_cptr_f = ompi_win_allocate_f
|
||||||
|
#pragma weak PMPI_Win_allocate_cptr_f08 = ompi_win_allocate_f
|
||||||
|
#elif OMPI_PROFILE_LAYER
|
||||||
|
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ALLOCATE,
|
||||||
|
pmpi_win_allocate,
|
||||||
|
pmpi_win_allocate_,
|
||||||
|
pmpi_win_allocate__,
|
||||||
|
pompi_win_allocate_f,
|
||||||
|
(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||||
|
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||||
|
MPI_Fint *win, MPI_Fint *ierr),
|
||||||
|
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||||
|
|
||||||
|
OMPI_GENERATE_F77_BINDINGS (PMPI_WIN_ALLOCATE_CPTR,
|
||||||
|
pmpi_win_allocate_cptr,
|
||||||
|
pmpi_win_allocate_cptr_,
|
||||||
|
pmpi_win_allocate_cptr__,
|
||||||
|
pompi_win_allocate_cptr_f,
|
||||||
|
(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||||
|
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||||
|
MPI_Fint *win, MPI_Fint *ierr),
|
||||||
|
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if OPAL_HAVE_WEAK_SYMBOLS
|
||||||
|
#pragma weak MPI_WIN_ALLOCATE = ompi_win_allocate_f
|
||||||
|
#pragma weak mpi_win_allocate = ompi_win_allocate_f
|
||||||
|
#pragma weak mpi_win_allocate_ = ompi_win_allocate_f
|
||||||
|
#pragma weak mpi_win_allocate__ = ompi_win_allocate_f
|
||||||
|
|
||||||
|
#pragma weak MPI_Win_allocate_f = ompi_win_allocate_f
|
||||||
|
#pragma weak MPI_Win_allocate_f08 = ompi_win_allocate_f
|
||||||
|
|
||||||
|
#pragma weak MPI_WIN_ALLOCATE_CPTR = ompi_win_allocate_f
|
||||||
|
#pragma weak mpi_win_allocate_cptr = ompi_win_allocate_f
|
||||||
|
#pragma weak mpi_win_allocate_cptr_ = ompi_win_allocate_f
|
||||||
|
#pragma weak mpi_win_allocate_cptr__ = ompi_win_allocate_f
|
||||||
|
|
||||||
|
#pragma weak MPI_Win_allocate_cptr_f = ompi_win_allocate_f
|
||||||
|
#pragma weak MPI_Win_allocate_cptr_f08 = ompi_win_allocate_f
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ! OPAL_HAVE_WEAK_SYMBOLS && ! OMPI_PROFILE_LAYER
|
||||||
|
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_ALLOCATE,
|
||||||
|
mpi_win_allocate,
|
||||||
|
mpi_win_allocate_,
|
||||||
|
mpi_win_allocate__,
|
||||||
|
ompi_win_allocate_f,
|
||||||
|
(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||||
|
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||||
|
MPI_Fint *win, MPI_Fint *ierr),
|
||||||
|
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||||
|
|
||||||
|
OMPI_GENERATE_F77_BINDINGS (MPI_WIN_ALLOCATE_CPTR,
|
||||||
|
mpi_win_allocate_cptr,
|
||||||
|
mpi_win_allocate_cptr_,
|
||||||
|
mpi_win_allocate_cptr__,
|
||||||
|
ompi_win_allocate_cptr_f,
|
||||||
|
(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||||
|
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||||
|
MPI_Fint *win, MPI_Fint *ierr),
|
||||||
|
(size, disp_unit, info, comm, baseptr, win, ierr) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if OMPI_PROFILE_LAYER && ! OPAL_HAVE_WEAK_SYMBOLS
|
||||||
|
#include "ompi/mpi/fortran/mpif-h/profile/defines.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void ompi_win_allocate_f(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||||
|
MPI_Fint *info, MPI_Fint *comm, char *baseptr,
|
||||||
|
MPI_Fint *win, MPI_Fint *ierr)
|
||||||
|
{
|
||||||
|
int c_ierr;
|
||||||
|
MPI_Info c_info;
|
||||||
|
MPI_Comm c_comm;
|
||||||
|
MPI_Win c_win;
|
||||||
|
|
||||||
|
c_info = MPI_Info_f2c(*info);
|
||||||
|
c_comm = MPI_Comm_f2c(*comm);
|
||||||
|
|
||||||
|
c_ierr = MPI_Win_allocate(*size, OMPI_FINT_2_INT(*disp_unit),
|
||||||
|
c_info, c_comm,
|
||||||
|
baseptr, &c_win);
|
||||||
|
*win = MPI_Win_c2f(c_win);
|
||||||
|
if (NULL != ierr) *ierr = OMPI_INT_2_FINT(c_ierr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Note that MPI-3 mandates a second form of the
|
||||||
|
* MPI_Win_allocate interface -- one that has a "_cptr" suffix.
|
||||||
|
*/
|
||||||
|
void ompi_win_allocate_cptr_f(MPI_Aint *size, MPI_Fint *disp_unit,
|
||||||
|
MPI_Fint *info, MPI_Fint *comm,
|
||||||
|
char *baseptr,
|
||||||
|
MPI_Fint *win, MPI_Fint *ierr)
|
||||||
|
{
|
||||||
|
ompi_win_allocate_f(size, disp_unit, info, comm, baseptr,
|
||||||
|
win, ierr);
|
||||||
|
}
|
@ -327,6 +327,7 @@ mpi_api_files = \
|
|||||||
waitany_f08.F90 \
|
waitany_f08.F90 \
|
||||||
wait_f08.F90 \
|
wait_f08.F90 \
|
||||||
waitsome_f08.F90 \
|
waitsome_f08.F90 \
|
||||||
|
win_allocate_f08.F90 \
|
||||||
win_allocate_shared_f08.F90 \
|
win_allocate_shared_f08.F90 \
|
||||||
win_call_errhandler_f08.F90 \
|
win_call_errhandler_f08.F90 \
|
||||||
win_complete_f08.F90 \
|
win_complete_f08.F90 \
|
||||||
@ -673,6 +674,7 @@ pmpi_api_files = \
|
|||||||
profile/pwaitany_f08.F90 \
|
profile/pwaitany_f08.F90 \
|
||||||
profile/pwait_f08.F90 \
|
profile/pwait_f08.F90 \
|
||||||
profile/pwaitsome_f08.F90 \
|
profile/pwaitsome_f08.F90 \
|
||||||
|
profile/pwin_allocate_f08.F90 \
|
||||||
profile/pwin_allocate_shared_f08.F90 \
|
profile/pwin_allocate_shared_f08.F90 \
|
||||||
profile/pwin_call_errhandler_f08.F90 \
|
profile/pwin_call_errhandler_f08.F90 \
|
||||||
profile/pwin_complete_f08.F90 \
|
profile/pwin_complete_f08.F90 \
|
||||||
|
@ -1573,6 +1573,19 @@ subroutine ompi_type_set_name_f(type,type_name,ierror,type_name_len) &
|
|||||||
INTEGER, VALUE, INTENT(IN) :: type_name_len
|
INTEGER, VALUE, INTENT(IN) :: type_name_len
|
||||||
end subroutine ompi_type_set_name_f
|
end subroutine ompi_type_set_name_f
|
||||||
|
|
||||||
|
subroutine ompi_win_allocate_f(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_f")
|
||||||
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
use :: mpi_f08_types, only : MPI_ADDRESS_KIND
|
||||||
|
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||||
|
INTEGER, INTENT(IN) :: disp_unit
|
||||||
|
INTEGER, INTENT(IN) :: info
|
||||||
|
INTEGER, INTENT(IN) :: comm
|
||||||
|
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||||
|
INTEGER, INTENT(OUT) :: win
|
||||||
|
INTEGER, INTENT(OUT) :: ierror
|
||||||
|
end subroutine ompi_win_allocate_f
|
||||||
|
|
||||||
subroutine ompi_win_allocate_shared_f(size, disp_unit, info, comm, &
|
subroutine ompi_win_allocate_shared_f(size, disp_unit, info, comm, &
|
||||||
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
|
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
|
||||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
@ -2103,6 +2103,21 @@ subroutine MPI_Type_set_name_f08(datatype,type_name,ierror)
|
|||||||
end subroutine MPI_Type_set_name_f08
|
end subroutine MPI_Type_set_name_f08
|
||||||
end interface MPI_Type_set_name
|
end interface MPI_Type_set_name
|
||||||
|
|
||||||
|
interface MPI_Win_allocate
|
||||||
|
subroutine MPI_Win_allocate_f08(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND
|
||||||
|
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||||
|
INTEGER, INTENT(IN) :: disp_unit
|
||||||
|
TYPE(MPI_Info), INTENT(IN) :: info
|
||||||
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
|
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||||
|
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
|
end subroutine MPI_Win_allocate_f08
|
||||||
|
end interface MPI_Win_allocate
|
||||||
|
|
||||||
interface MPI_Win_allocate_shared
|
interface MPI_Win_allocate_shared
|
||||||
subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, &
|
subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, &
|
||||||
baseptr, win, ierror)
|
baseptr, win, ierror)
|
||||||
@ -2116,7 +2131,7 @@ subroutine MPI_Win_allocate_shared_f08(size, disp_unit, info, comm, &
|
|||||||
TYPE(MPI_Win), INTENT(OUT) :: win
|
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||||
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
end subroutine MPI_Win_allocate_shared_f08
|
end subroutine MPI_Win_allocate_shared_f08
|
||||||
end interface
|
end interface MPI_Win_allocate_shared
|
||||||
|
|
||||||
interface MPI_Win_create_keyval
|
interface MPI_Win_create_keyval
|
||||||
subroutine MPI_Win_create_keyval_f08(win_copy_attr_fn,win_delete_attr_fn,win_keyval, &
|
subroutine MPI_Win_create_keyval_f08(win_copy_attr_fn,win_delete_attr_fn,win_keyval, &
|
||||||
|
@ -1407,6 +1407,19 @@ subroutine pompi_type_set_name_f(type,type_name,ierror,type_name_len) &
|
|||||||
INTEGER, VALUE, INTENT(IN) :: type_name_len
|
INTEGER, VALUE, INTENT(IN) :: type_name_len
|
||||||
end subroutine pompi_type_set_name_f
|
end subroutine pompi_type_set_name_f
|
||||||
|
|
||||||
|
subroutine pompi_win_allocate_f(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_f")
|
||||||
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
use :: mpi_f08_types, only : MPI_ADDRESS_KIND
|
||||||
|
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||||
|
INTEGER, INTENT(IN) :: disp_unit
|
||||||
|
INTEGER, INTENT(IN) :: info
|
||||||
|
INTEGER, INTENT(IN) :: comm
|
||||||
|
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||||
|
INTEGER, INTENT(OUT) :: win
|
||||||
|
INTEGER, INTENT(OUT) :: ierror
|
||||||
|
end subroutine pompi_win_allocate_f
|
||||||
|
|
||||||
subroutine pompi_win_allocate_shared_f(size, disp_unit, info, comm, &
|
subroutine pompi_win_allocate_shared_f(size, disp_unit, info, comm, &
|
||||||
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
|
baseptr, win, ierror) BIND(C, name="ompi_win_allocate_shared_f")
|
||||||
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
28
ompi/mpi/fortran/use-mpi-f08/profile/pwin_allocate_f08.F90
Обычный файл
28
ompi/mpi/fortran/use-mpi-f08/profile/pwin_allocate_f08.F90
Обычный файл
@ -0,0 +1,28 @@
|
|||||||
|
! -*- f90 -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||||
|
! All Rights reserved.
|
||||||
|
! Copyright (c) 2004-2014 High Performance Computing Center Stuttgart,
|
||||||
|
! University of Stuttgart. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
|
||||||
|
subroutine PMPI_Win_allocate_f08(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND
|
||||||
|
use :: mpi_f08, only : ompi_win_allocate_f
|
||||||
|
implicit none
|
||||||
|
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||||
|
INTEGER, INTENT(IN) :: disp_unit
|
||||||
|
TYPE(MPI_Info), INTENT(IN) :: info
|
||||||
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
|
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||||
|
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
|
integer :: c_ierror
|
||||||
|
|
||||||
|
call ompi_win_allocate_f(size, disp_unit, info%MPI_VAL, comm%MPI_VAL, baseptr, win%MPI_VAL, c_ierror)
|
||||||
|
if (present(ierror)) ierror = c_ierror
|
||||||
|
|
||||||
|
end subroutine PMPI_Win_allocate_f08
|
28
ompi/mpi/fortran/use-mpi-f08/win_allocate_f08.F90
Обычный файл
28
ompi/mpi/fortran/use-mpi-f08/win_allocate_f08.F90
Обычный файл
@ -0,0 +1,28 @@
|
|||||||
|
! -*- f90 -*-
|
||||||
|
!
|
||||||
|
! Copyright (c) 2010-2012 Cisco Systems, Inc. All rights reserved.
|
||||||
|
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||||||
|
! All Rights reserved.
|
||||||
|
! Copyright (c) 2004-2014 High Performance Computing Center Stuttgart,
|
||||||
|
! University of Stuttgart. All rights reserved.
|
||||||
|
! $COPYRIGHT$
|
||||||
|
|
||||||
|
subroutine MPI_Win_allocate_f08(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
USE, INTRINSIC :: ISO_C_BINDING, ONLY : C_PTR
|
||||||
|
use :: mpi_f08_types, only : MPI_Info, MPI_Comm, MPI_Win, MPI_ADDRESS_KIND
|
||||||
|
use :: mpi_f08, only : ompi_win_allocate_f
|
||||||
|
implicit none
|
||||||
|
INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(IN) :: size
|
||||||
|
INTEGER, INTENT(IN) :: disp_unit
|
||||||
|
TYPE(MPI_Info), INTENT(IN) :: info
|
||||||
|
TYPE(MPI_Comm), INTENT(IN) :: comm
|
||||||
|
TYPE(C_PTR), INTENT(OUT) :: baseptr
|
||||||
|
TYPE(MPI_Win), INTENT(OUT) :: win
|
||||||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||||||
|
integer :: c_ierror
|
||||||
|
|
||||||
|
call ompi_win_allocate_f(size, disp_unit, info%MPI_VAL, comm%MPI_VAL, baseptr, win%MPI_VAL, c_ierror)
|
||||||
|
if (present(ierror)) ierror = c_ierror
|
||||||
|
|
||||||
|
end subroutine MPI_Win_allocate_f08
|
@ -7272,6 +7272,32 @@ end subroutine MPI_Win_call_errhandler
|
|||||||
end interface
|
end interface
|
||||||
|
|
||||||
|
|
||||||
|
interface MPI_Win_allocate
|
||||||
|
|
||||||
|
subroutine MPI_Win_allocate(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
include 'mpif-config.h'
|
||||||
|
integer(KIND=MPI_ADDRESS_KIND), intent(in) :: size
|
||||||
|
integer, intent(in) :: disp_unit
|
||||||
|
integer, intent(in) :: info
|
||||||
|
integer, intent(in) :: comm
|
||||||
|
integer(KIND=MPI_ADDRESS_KIND), intent(out) :: baseptr
|
||||||
|
integer, intent(out) :: win
|
||||||
|
integer, intent(out) :: ierror
|
||||||
|
end subroutine MPI_Win_allocate
|
||||||
|
|
||||||
|
subroutine MPI_Win_allocate_cptr(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
use, intrinsic :: iso_c_binding, only : c_ptr
|
||||||
|
include 'mpif-config.h'
|
||||||
|
integer :: disp_unit, info, comm, win, ierror
|
||||||
|
integer(KIND=MPI_ADDRESS_KIND) :: size
|
||||||
|
type(C_PTR) :: baseptr
|
||||||
|
end subroutine MPI_Win_allocate_cptr
|
||||||
|
|
||||||
|
end interface
|
||||||
|
|
||||||
|
|
||||||
interface MPI_Win_allocate_shared
|
interface MPI_Win_allocate_shared
|
||||||
|
|
||||||
subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
||||||
|
@ -17,6 +17,35 @@
|
|||||||
! below.
|
! below.
|
||||||
!
|
!
|
||||||
|
|
||||||
|
interface MPI_Win_allocate
|
||||||
|
|
||||||
|
subroutine MPI_Win_allocate(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
include 'mpif-config.h'
|
||||||
|
integer(KIND=MPI_ADDRESS_KIND), intent(in) :: size
|
||||||
|
integer, intent(in) :: disp_unit
|
||||||
|
integer, intent(in) :: info
|
||||||
|
integer, intent(in) :: comm
|
||||||
|
integer(KIND=MPI_ADDRESS_KIND), intent(out) :: baseptr
|
||||||
|
integer, intent(out) :: win
|
||||||
|
integer, intent(out) :: ierror
|
||||||
|
end subroutine MPI_Win_allocate
|
||||||
|
|
||||||
|
! Only include the 2nd interface if we have ISO_C_BINDING / TYPE(C_PTR)
|
||||||
|
#if OMPI_FORTRAN_HAVE_ISO_C_BINDING
|
||||||
|
subroutine MPI_Win_allocate_cptr(size, disp_unit, info, comm, &
|
||||||
|
baseptr, win, ierror)
|
||||||
|
use, intrinsic :: iso_c_binding, only : c_ptr
|
||||||
|
include 'mpif-config.h'
|
||||||
|
integer :: disp_unit, info, comm, win, ierror
|
||||||
|
integer(KIND=MPI_ADDRESS_KIND) :: size
|
||||||
|
type(C_PTR) :: baseptr
|
||||||
|
end subroutine MPI_Win_allocate_cptr
|
||||||
|
#endif
|
||||||
|
|
||||||
|
end interface
|
||||||
|
|
||||||
|
|
||||||
interface MPI_Win_allocate_shared
|
interface MPI_Win_allocate_shared
|
||||||
|
|
||||||
subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
subroutine MPI_Win_allocate_shared(size, disp_unit, info, comm, &
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user