Blame test/mpi/f90/misc/sizeof2.f90

Packit 0848f5
!  
Packit 0848f5
!  (C) 2004 by Argonne National Laboratory.
Packit 0848f5
!      See COPYRIGHT in top-level directory.
Packit 0848f5
!
Packit 0848f5
        program main
Packit 0848f5
          use mpi
Packit 0848f5
          integer ierr, errs
Packit 0848f5
          integer size1, size2
Packit 0848f5
          real    a
Packit 0848f5
          real    d(20)
Packit 0848f5
          double precision b
Packit 0848f5
          complex c
Packit 0848f5
Packit 0848f5
          errs = 0
Packit 0848f5
          call mpi_init(ierr)
Packit 0848f5
          call mpi_sizeof( errs, size1, ierr )
Packit 0848f5
          call mpi_type_size( MPI_INTEGER, size2, ierr )
Packit 0848f5
          if (size1 .ne. size2) then
Packit 0848f5
             errs = errs + 1
Packit 0848f5
             print *, "integer size is ", size2, " sizeof claims ", size1
Packit 0848f5
          endif
Packit 0848f5
Packit 0848f5
          call mpi_sizeof( a, size1, ierr )
Packit 0848f5
          call mpi_type_size( MPI_REAL, size2, ierr )
Packit 0848f5
          if (size1 .ne. size2) then
Packit 0848f5
             errs = errs + 1
Packit 0848f5
             print *, "real size is ", size2, " sizeof claims ", size1
Packit 0848f5
          endif
Packit 0848f5
Packit 0848f5
          call mpi_sizeof( b, size1, ierr )
Packit 0848f5
          call mpi_type_size( MPI_DOUBLE_PRECISION, size2, ierr )
Packit 0848f5
          if (size1 .ne. size2) then
Packit 0848f5
             errs = errs + 1
Packit 0848f5
             print *, "double precision size is ", size2, " sizeof claims ", size1 
Packit 0848f5
          endif
Packit 0848f5
Packit 0848f5
          call mpi_sizeof( c, size1, ierr )
Packit 0848f5
          call mpi_type_size( MPI_COMPLEX, size2, ierr )
Packit 0848f5
          if (size1 .ne. size2) then
Packit 0848f5
             errs = errs + 1
Packit 0848f5
             print *, "complex size is ", size2, " sizeof claims ", size1
Packit 0848f5
          endif
Packit 0848f5
!
Packit 0848f5
! A previous version of this test called mpi_sizeof with a character variable.
Packit 0848f5
! However, the MPI 2.2 standard, p 494, line 41, defines MPI_SIZEOF only 
Packit 0848f5
! for "numeric intrinsic type", so that test was removed.
Packit 0848f5
!
Packit 0848f5
          call mpi_sizeof( d, size1, ierr )
Packit 0848f5
          call mpi_type_size( MPI_REAL, size2, ierr )
Packit 0848f5
          if (size1 .ne. size2) then
Packit 0848f5
             errs = errs + 1
Packit 0848f5
             print *, "real array size is ", size2, " sizeof claims ", size1
Packit 0848f5
          endif
Packit 0848f5
Packit 0848f5
          if (errs .gt. 0) then
Packit 0848f5
             print *, ' Found ', errs, ' errors'
Packit 0848f5
          else
Packit 0848f5
             print *, ' No Errors'
Packit 0848f5
          endif
Packit 0848f5
          call mpi_finalize(ierr)
Packit 0848f5
          
Packit 0848f5
        end program main