Blame test/mpi/f77/init/baseenvf.f

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