Blame test/mpi/f90/init/baseenvf90.f90

Packit Service c5cf8c
! This file created from f77/init/baseenvf.f with f77tof90
Packit Service c5cf8c
! -*- Mode: Fortran; -*- 
Packit Service c5cf8c
!
Packit Service c5cf8c
!  (C) 2003 by Argonne National Laboratory.
Packit Service c5cf8c
!      See COPYRIGHT in top-level directory.
Packit Service c5cf8c
!
Packit Service c5cf8c
       program main
Packit Service c5cf8c
       use mpi
Packit Service c5cf8c
       integer ierr, provided, errs, rank, size
Packit Service c5cf8c
       integer iv, isubv, qprovided
Packit Service c5cf8c
       logical flag
Packit Service c5cf8c
Packit Service c5cf8c
       errs = 0
Packit Service c5cf8c
       flag = .true.
Packit Service c5cf8c
       call mpi_finalized( flag, ierr )
Packit Service c5cf8c
       if (flag) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'Returned true for finalized before init'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
       flag = .true.
Packit Service c5cf8c
       call mpi_initialized( flag, ierr )
Packit Service c5cf8c
       if (flag) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'Return true for initialized before init'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
Packit Service c5cf8c
       provided = -1
Packit Service c5cf8c
       call mpi_init_thread( MPI_THREAD_MULTIPLE, provided, ierr )
Packit Service c5cf8c
Packit Service c5cf8c
       if (provided .ne. MPI_THREAD_MULTIPLE .and.  &
Packit Service c5cf8c
      &     provided .ne. MPI_THREAD_SERIALIZED .and. &
Packit Service c5cf8c
      &     provided .ne. MPI_THREAD_FUNNELED .and. &
Packit Service c5cf8c
      &     provided .ne. MPI_THREAD_SINGLE) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, ' Unrecognized value for provided = ', provided
Packit Service c5cf8c
       endif
Packit Service c5cf8c
Packit Service c5cf8c
       iv    = -1
Packit Service c5cf8c
       isubv = -1
Packit Service c5cf8c
       call mpi_get_version( iv, isubv, ierr )
Packit Service c5cf8c
       if (iv .ne. MPI_VERSION .or. isubv .ne. MPI_SUBVERSION) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'Version in mpif.h and get_version do not agree'
Packit Service c5cf8c
          print *, 'Version in mpif.h is ', MPI_VERSION, '.',  &
Packit Service c5cf8c
      &              MPI_SUBVERSION
Packit Service c5cf8c
          print *, 'Version in get_version is ', iv, '.', isubv
Packit Service c5cf8c
       endif
Packit Service c5cf8c
       if (iv .lt. 1 .or. iv .gt. 3) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'Version of MPI is invalid (=', iv, ')'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
       if (isubv.lt.0 .or. isubv.gt.2) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'Subversion of MPI is invalid (=', isubv, ')'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
Packit Service c5cf8c
       call mpi_comm_rank( MPI_COMM_WORLD, rank, ierr )
Packit Service c5cf8c
       call mpi_comm_size( MPI_COMM_WORLD, size, ierr )
Packit Service c5cf8c
Packit Service c5cf8c
       flag = .false.
Packit Service c5cf8c
       call mpi_is_thread_main( flag, ierr )
Packit Service c5cf8c
       if (.not.flag) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'is_thread_main returned false for main thread'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
          
Packit Service c5cf8c
       call mpi_query_thread( qprovided, ierr )
Packit Service c5cf8c
       if (qprovided .ne. provided) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *,'query thread and init thread disagree on'// &
Packit Service c5cf8c
      &           ' thread level'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
Packit Service c5cf8c
       call mpi_finalize( ierr )
Packit Service c5cf8c
       flag = .false.
Packit Service c5cf8c
       call mpi_finalized( flag, ierr )
Packit Service c5cf8c
       if (.not. flag) then
Packit Service c5cf8c
          errs = errs + 1
Packit Service c5cf8c
          print *, 'finalized returned false after finalize'
Packit Service c5cf8c
       endif
Packit Service c5cf8c
Packit Service c5cf8c
       if (rank .eq. 0) then
Packit Service c5cf8c
          if (errs .eq. 0) then 
Packit Service c5cf8c
             print *, ' No Errors'
Packit Service c5cf8c
          else
Packit Service c5cf8c
             print *, ' Found ', errs, ' errors'
Packit Service c5cf8c
          endif
Packit Service c5cf8c
       endif
Packit Service c5cf8c
Packit Service c5cf8c
       end