421 строка
12 KiB
Fortran
421 строка
12 KiB
Fortran
![]() |
! -*- f90 -*-
|
||
|
!
|
||
|
! Copyright (c) 2006-2011 Cisco Systems, Inc. All rights reserved.
|
||
|
! Copyright (c) 2009-2012 Los Alamos National Security, LLC.
|
||
|
! All rights reserved.
|
||
|
!
|
||
|
! $COPYRIGHT$
|
||
|
!
|
||
|
! Additional copyrights may follow
|
||
|
!
|
||
|
! $HEADER$
|
||
|
!
|
||
|
|
||
|
#include "ompi/mpi/fortran/configure-fortran-output.h"
|
||
|
|
||
|
|
||
|
MODULE mpi_f08_sizeof
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
|
||
|
interface MPI_Sizeof
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER1
|
||
|
module procedure MPI_Sizeof_integer_s_1, MPI_Sizeof_integer_a_1
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER2
|
||
|
module procedure MPI_Sizeof_integer_s_2, MPI_Sizeof_integer_a_2
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER4
|
||
|
module procedure MPI_Sizeof_integer_s_4, MPI_Sizeof_integer_a_4
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER8
|
||
|
module procedure MPI_Sizeof_integer_s_8, MPI_Sizeof_integer_a_8
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER16
|
||
|
module procedure MPI_Sizeof_integer_s_16, MPI_Sizeof_integer_a_16
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL2
|
||
|
module procedure MPI_Sizeof_real_s_2, MPI_Sizeof_real_a_2
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL4
|
||
|
module procedure MPI_Sizeof_real_s_4, MPI_Sizeof_real_a_4
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL8
|
||
|
module procedure MPI_Sizeof_real_s_8, MPI_Sizeof_real_a_8
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL16
|
||
|
module procedure MPI_Sizeof_real_s_16, MPI_Sizeof_real_a_16
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX4
|
||
|
module procedure MPI_Sizeof_complex_s_4, MPI_Sizeof_complex_a_4
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX8
|
||
|
module procedure MPI_Sizeof_complex_s_8, MPI_Sizeof_complex_a_8
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX16
|
||
|
module procedure MPI_Sizeof_complex_s_16, MPI_Sizeof_complex_a_16
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX32
|
||
|
module procedure MPI_Sizeof_complex_s_32, MPI_Sizeof_complex_a_32
|
||
|
#endif
|
||
|
|
||
|
end interface MPI_Sizeof
|
||
|
|
||
|
|
||
|
CONTAINS
|
||
|
|
||
|
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
! Sizes of integers
|
||
|
!
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER1
|
||
|
subroutine MPI_Sizeof_integer_s_1(x, size, ierror)
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER1), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER1
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_s_1
|
||
|
|
||
|
subroutine MPI_Sizeof_integer_a_1(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER1), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER1
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_a_1
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER2
|
||
|
subroutine MPI_Sizeof_integer_s_2(x, size, ierror)
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER2), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER2
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_s_2
|
||
|
|
||
|
subroutine MPI_Sizeof_integer_a_2(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER2), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER2
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_a_2
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER4
|
||
|
subroutine MPI_Sizeof_integer_s_4(x, size, ierror)
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER4), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER4
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_s_4
|
||
|
|
||
|
subroutine MPI_Sizeof_integer_a_4(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER4), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER4
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_a_4
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER8
|
||
|
subroutine MPI_Sizeof_integer_s_8(x, size, ierror)
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER8), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER8
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_s_8
|
||
|
|
||
|
subroutine MPI_Sizeof_integer_a_8(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER8), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER8
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_a_8
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_INTEGER16
|
||
|
subroutine MPI_Sizeof_integer_s_16(x, size, ierror)
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER16), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER16
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_s_16
|
||
|
|
||
|
subroutine MPI_Sizeof_integer_a_16(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
INTEGER(KIND=OMPI_KIND_FORTRAN_INTEGER16), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_INTEGER16
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_integer_a_16
|
||
|
#endif
|
||
|
|
||
|
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
! Sizes of reals
|
||
|
!
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL2
|
||
|
subroutine MPI_Sizeof_real_s_2(x, size, ierror)
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL2), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL2
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_s_2
|
||
|
|
||
|
subroutine MPI_Sizeof_real_a_2(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL2), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL2
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_a_2
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL4
|
||
|
subroutine MPI_Sizeof_real_s_4(x, size, ierror)
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL4), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL4
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_s_4
|
||
|
|
||
|
subroutine MPI_Sizeof_real_a_4(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL4), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL4
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_a_4
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL8
|
||
|
subroutine MPI_Sizeof_real_s_8(x, size, ierror)
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL8), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL8
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_s_8
|
||
|
|
||
|
subroutine MPI_Sizeof_real_a_8(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL8), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL8
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_a_8
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_REAL16
|
||
|
subroutine MPI_Sizeof_real_s_16(x, size, ierror)
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL16), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL16
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_s_16
|
||
|
|
||
|
subroutine MPI_Sizeof_real_a_16(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
REAL(KIND=OMPI_KIND_FORTRAN_REAL16), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_REAL16
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_real_a_16
|
||
|
#endif
|
||
|
|
||
|
|
||
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
! Sizes of complex
|
||
|
!
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX4
|
||
|
subroutine MPI_Sizeof_complex_s_4(x, size, ierror)
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX4), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX4
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_s_4
|
||
|
|
||
|
subroutine MPI_Sizeof_complex_a_4(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX4), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX4
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_a_4
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX8
|
||
|
subroutine MPI_Sizeof_complex_s_8(x, size, ierror)
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX8), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX8
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_s_8
|
||
|
|
||
|
subroutine MPI_Sizeof_complex_a_8(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX8), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX8
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_a_8
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX16
|
||
|
subroutine MPI_Sizeof_complex_s_16(x, size, ierror)
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX16), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX16
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_s_16
|
||
|
|
||
|
subroutine MPI_Sizeof_complex_a_16(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX16), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX16
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_a_16
|
||
|
#endif
|
||
|
|
||
|
#if OMPI_HAVE_FORTRAN_COMPLEX32
|
||
|
subroutine MPI_Sizeof_complex_s_32(x, size, ierror)
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX32), INTENT(IN) :: x
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX32
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_s_32
|
||
|
|
||
|
subroutine MPI_Sizeof_complex_a_32(x, size, ierror)
|
||
|
use, intrinsic :: ISO_C_BINDING
|
||
|
implicit none
|
||
|
COMPLEX(KIND=OMPI_KIND_FORTRAN_COMPLEX32), INTENT(IN) :: x(*)
|
||
|
INTEGER, INTENT(OUT) :: size
|
||
|
INTEGER, OPTIONAL, INTENT(OUT) :: ierror
|
||
|
|
||
|
size = OMPI_SIZEOF_FORTRAN_COMPLEX32
|
||
|
if (present(ierror)) ierror = 0
|
||
|
|
||
|
end subroutine MPI_Sizeof_complex_a_32
|
||
|
#endif
|
||
|
|
||
|
|
||
|
END MODULE mpi_f08_sizeof
|