1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
!
! (C) 2009 by Argonne National Laboratory.
! See COPYRIGHT in top-level directory.
!
program main
use mpi_f08
integer ierr, errs
integer size1, size2
real a
real d(20)
double precision b
complex c
errs = 0
call mpi_init(ierr)
call mpi_sizeof( errs, size1, ierr )
call mpi_type_size( MPI_INTEGER, size2, ierr )
if (size1 .ne. size2) then
errs = errs + 1
print *, "integer size is ", size2, " sizeof claims ", size1
endif
call mpi_sizeof( a, size1, ierr )
call mpi_type_size( MPI_REAL, size2, ierr )
if (size1 .ne. size2) then
errs = errs + 1
print *, "real size is ", size2, " sizeof claims ", size1
endif
call mpi_sizeof( b, size1, ierr )
call mpi_type_size( MPI_DOUBLE_PRECISION, size2, ierr )
if (size1 .ne. size2) then
errs = errs + 1
print *, "double precision size is ", size2, " sizeof claims ", size1
endif
call mpi_sizeof( c, size1, ierr )
call mpi_type_size( MPI_COMPLEX, size2, ierr )
if (size1 .ne. size2) then
errs = errs + 1
print *, "complex size is ", size2, " sizeof claims ", size1
endif
!
! A previous version of this test called mpi_sizeof with a character variable.
! However, the MPI 2.2 standard, p 494, line 41, defines MPI_SIZEOF only
! for "numeric intrinsic type", so that test was removed.
!
call mpi_sizeof( d, size1, ierr )
call mpi_type_size( MPI_REAL, size2, ierr )
if (size1 .ne. size2) then
errs = errs + 1
print *, "real array size is ", size2, " sizeof claims ", size1
endif
if (errs .gt. 0) then
print *, ' Found ', errs, ' errors'
else
print *, ' No Errors'
endif
end program main
|