Dear Open MPI developer,
please take a look at the attached 'hello MPI world' file.
We know that it contain an error (you should never put '1476395012' into MPI_Init_thread() call! It was a typo, initially...) BUT, see what happens if you compile&call it:

$ mpif90 -g mpihelloworld.f90
$ ./a.out
  1476395012           3
*** The MPI_Init_thread() function was called before MPI_INIT was invoked.
*** This is disallowed by the MPI standard.
*** Your MPI job will now abort.
[cluster-hpc.rz.RWTH-Aachen.DE:25739] Local abort before MPI_INIT completed successfully; not able to aggregate error messages, and not able to guarantee that all other processes were killed

For me, reading this:
> MPI_Init_thread() function was called before MPI_INIT was invoked.
> This is disallowed by the MPI standard
...produced some cognitive dissonance, as the MPI's calls to MPI_Init_thread and MPI_Init are well-known to be *mutually exclusive*. Well maybe with 'MPI_Init_thread() function' something Open MPI- internal is meant instead of MPI's MPI_Init_thread, but the error message stays strongly unbelievable ( 2 + 2 = 6 !)

Maybe you can text a better error message? :o)

Have a nice day,

Paul Kapinos

P.S. Tested versions: 1.10.6 and 2.0.1, with support for MPI_THREAD_MULTIPLE


> MPI_Init_thread(3)                 Open MPI                 MPI_Init_thread(3)
> NAME
>        MPI_Init_thread - Initializes the MPI execution environment
> ......
> DESCRIPTION
>        This  routine, or MPI_Init, must be called before any other MPI routine
>        (apart from MPI_Initialized) is called. MPI can be initialized at  most
>        once; subsequent calls to MPI_Init or MPI_Init_thread are erroneous.
>
>        MPI_Init_thread,  as compared to MPI_Init, has a provision to request a
>        certain level of thread support in required:


> MPI_Init(3)                        Open MPI                        MPI_Init(3)
> NAME
>        MPI_Init - Initializes the MPI execution environment
> .....
> DESCRIPTION
>        This  routine,  or MPI_Init_thread, must be called before any other MPI
>        routine (apart from MPI_Initialized) is called. MPI can be  initialized
>        at most once; subsequent calls to MPI_Init or MPI_Init_thread are erro-
>        neous.





--
Dipl.-Inform. Paul Kapinos   -   High Performance Computing,
RWTH Aachen University, IT Center
Seffenter Weg 23,  D 52074  Aachen (Germany)
Tel: +49 241/80-24915
! Paul Kapinos 22.09.2009 - 
! RZ RWTH Aachen, www.rz.rwth-aachen.de
!
! MPI-Hello-World
!
PROGRAM PK_MPI_Test

USE MPI
IMPLICIT NONE
!include "mpif.h"


!
INTEGER :: my_MPI_Rank, laenge, ierr
INTEGER :: requ, provid, required
! INTEGER :: PROVIDED, REQUIRED

CHARACTER*(MPI_MAX_PROCESSOR_NAME) my_Host
!
!WRITE (*,*) "Jetz penn ich mal 30"
!CALL Sleep(30)
!WRITE (*,*) "Starten"

!CALL MPI_INIT (ierr)
required = MPI_THREAD_MULTIPLE
requ     = 1476395012
WRITE (*,*) requ, required
CALL MPI_Init_thread (requ, provid, ierr)
WRITE (*,*) "MPI_Init_thread (", requ, provid, ierr, ")"

! REQUIRED = MPI_THREAD_MULTIPLE !MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED, 
MPI_THREAD_SERIALIZED, MPI_THREAD_MULTIPLE ist evil
! CALL MPI_INIT_THREAD(REQUIRED, PROVIDED, ierr)
! WRITE(*,*) "Threading levels: ", MPI_THREAD_SINGLE, MPI_THREAD_FUNNELED, 
MPI_THREAD_SERIALIZED, MPI_THREAD_MULTIPLE
! WRITE(*,*) "Fordere multithreading an:", MPI_THREAD_MULTIPLE, REQUIRED, 
PROVIDED



!
!WRITE (*,*) "Nach MPI_INIT"
!CALL Sleep(30)
CALL MPI_COMM_RANK( MPI_COMM_WORLD, my_MPI_Rank, ierr )
!WRITE (*,*) "Nach MPI_COMM_RANK"
CALL MPI_GET_PROCESSOR_NAME(my_Host, laenge, ierr)
WRITE (*,*) "Prozessor ", my_MPI_Rank, "on Host: ", my_Host(1:laenge)

! sleeping or spinnig - the same behaviour
!CALL Sleep(2)
!DO WHILE (.TRUE.)
!ENDDO

CALL Sleep(1)

!IF (my_MPI_Rank == 1) STOP

CALL MPI_FINALIZE(ierr)
!
!WRITE (*,*) "Daswars"
!
END PROGRAM PK_MPI_Test

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/devel

Reply via email to