Thanks for your help. To be honest, my intention was to init the processes
from the code with the MPI comm spawn. However I will try with mpirun.
Thanks again.

El mié., 12 ago. 2020 19:20, Ralph Castain via users <
users@lists.open-mpi.org> escribió:

> No, I'm afraid that won't do anything - all the info key does is tell the
> launcher (mpirun or whatever you used) that you would like it to collect
> and distribute the stdin. However, it will just be ignored if you don't
> have the launcher there to provide that support.
>
> How are you planning on starting these processes?
>
>
> On Aug 12, 2020, at 9:59 AM, Alvaro Payero Pinto via users <
> users@lists.open-mpi.org> wrote:
>
> I was planning to create a MPI Info variable with a pair of ompi stdin
> target as key and all as value. Is not the way of archieve this goal?
>
> El mié., 12 ago. 2020 18:29, Ralph Castain via users <
> users@lists.open-mpi.org> escribió:
>
>> Setting aside the known issue with comm_spawn in v4.0.4, how are you
>> planning to forward stdin without the use of "mpirun"? Something has to
>> collect stdin of the terminal and distribute it to the stdin of the
>> processes
>>
>> > On Aug 12, 2020, at 9:20 AM, Alvaro Payero Pinto via users <
>> users@lists.open-mpi.org> wrote:
>> >
>> > Hi,
>> >
>> > I’m using OpenMPI 4.0.4, where the Fortran side has been compiled with
>> Intel Fortran suite v17.0.6 and the C/C++ side with GNU suite v4.8.5 due to
>> requirements I cannot modify.
>> >
>> > I am trying to parallelise a Fortran application by dynamically
>> creating processes on the fly with “MPI_Comm_Spawn” subroutine. The
>> application starts with only one parent and it takes a file throughout
>> standard input, but it looks like children are not inheriting the access to
>> such file. I would like to have all children processes inheriting the
>> standard input of the parent. I’m aware that perhaps the “-stdin all”
>> argument of the “mpirun“ binary might do it, but I am attempting to execute
>> the binary without mpirun unless strictly necessary.
>> >
>> > So far, I have already tried to pass a non-null “MPI_Info“ to
>> “MPI_Comm_Spawn” with a key of “ompi_stdin_target“ and a value of “all” but
>> it does not work. I have also tried other values like none, 0, 1, -1, etc.)
>> without success either.
>> >
>> > Here is the subroutine provoking the error at the MPI_Comm_spawn call:
>> >
>> > ===========================================================
>> > SUBROUTINE ADmn_createSpawn(iNumberChilds, iCommBigWorld, iIDMpi,
>> iNumberProcess)
>> >     IMPLICIT NONE
>> >
>> >     !ID of the communicator that contains all the process
>> >     INTEGER:: iCommBigWorld
>> >     !Number of child process
>> >     INTEGER :: iNumberChilds
>> >     INTEGER:: iNumberProcess
>> >      CHARACTER(LEN=1)                         :: arguments(1)
>> >      INTEGER                                  :: bigWorld, iC, iInic,
>> iFinal;
>> >      INTEGER                                  :: ierror
>> >       INTEGER                                  :: iIDFamiliar=0;
>> >
>> >     CHARACTER(LEN=128)        :: command
>> >     INTEGER                               :: iInfoMPI
>> >     CHARACTER(LEN=*), Parameter  :: key=" ompi_stdin_target ",valueMPI=
>> "all";
>> >     logical :: FLAG
>> >
>> >     !Id number of the current process
>> >     INTEGER :: iIDMpi
>> >
>> >     CALL GET_COMMAND_ARGUMENT(0, command)
>> >     CALL MPI_Comm_get_parent(iParent, ierror)
>> >
>> >     IF (iParent .EQ. MPI_COMM_NULL) THEN
>> >         arguments(1) = ''
>> >         iIDFamiliar = 0;
>> >
>> >         call MPI_INFO_CREATE(iInfoMPI, ierror)
>> >         call MPI_INFO_SET(iInfoMPI, key, valueMPI, ierror)
>> >
>> >         CALL MPI_Comm_spawn(command, arguments, iNumberChilds,
>> iInfoMPI, 0, MPI_COMM_WORLD, iChild, iSpawn_error, ierror)
>> >
>> >         CALL MPI_INTERCOMM_MERGE(iChild, .false., iCommBigWorld, ierror)
>> >     ELSE
>> >         call MPI_COMM_RANK(MPI_COMM_WORLD, iIDFamiliar, ierror)
>> >
>> >         iIDFamiliar = iIDFamiliar + 1;
>> >
>> >         CALL MPI_INTERCOMM_MERGE(iParent, .true., iCommBigWorld, ierror)
>> >     END IF
>> >
>> >     CALL MPI_COMM_RANK(iCommBigWorld,iIDMpi,ierror)
>> >     call MPI_COMM_SIZE(iCommBigWorld, intasks, ierror)
>> >     iProcessIDInternal = iIDMpi
>> >     iNumberProcess = intasks
>> >
>> > END SUBROUTINE ADmn_createSpawn
>> > ===========================================================
>> >
>> > Binary is executed as:
>> > Binaryname.bin < inputfilename.dat
>> > And here is the segmentation fault produced when passing the MPI_Info
>> variable to MPI_Comm_Spawn:
>> >
>> > ===========================================================
>> > [sles12sp3-srv:10384] *** Process received signal ***
>> > [sles12sp3-srv:10384] Signal: Segmentation fault (11)
>> > [sles12sp3-srv:10384] Signal code: Address not mapped (1)
>> > [sles12sp3-srv:10384] Failing at address: 0xfffffffe
>> > [sles12sp3-srv:10384] [ 0]
>> /lib64/libpthread.so.0(+0x10c10)[0x7fc6a8dd5c10]
>> > [sles12sp3-srv:10384] [ 1]
>> /usr/local/lib64/libopen-rte.so.40(pmix_server_spawn_fn+0x1052)[0x7fc6aa283232]
>> > [sles12sp3-srv:10384] [ 2]
>> /usr/local/lib64/openmpi/mca_pmix_pmix3x.so(+0x46210)[0x7fc6a602b210]
>> > [sles12sp3-srv:10384] [ 3]
>> /usr/local/lib64/openmpi/mca_pmix_pmix3x.so(pmix_server_spawn+0x7c6)[0x7fc6a60a5ab6]
>> > [sles12sp3-srv:10384] [ 4]
>> /usr/local/lib64/openmpi/mca_pmix_pmix3x.so(+0xb1a2f)[0x7fc6a6096a2f]
>> > [sles12sp3-srv:10384] [ 5]
>> /usr/local/lib64/openmpi/mca_pmix_pmix3x.so(pmix_server_message_handler+0x41)[0x7fc6a6097511]
>> > [sles12sp3-srv:10384] [ 6]
>> /usr/local/lib64/openmpi/mca_pmix_pmix3x.so(OPAL_MCA_PMIX3X_pmix_ptl_base_process_msg+0x1bf)[0x7fc6a610481f]
>> > [sles12sp3-srv:10384] [ 7]
>> /usr/local/lib64/libopen-pal.so.40(opal_libevent2022_event_base_loop+0x8fc)[0x7fc6a9facd6c]
>> > [sles12sp3-srv:10384] [ 8]
>> /usr/local/lib64/openmpi/mca_pmix_pmix3x.so(+0xcf7ce)[0x7fc6a60b47ce]
>> > [sles12sp3-srv:10384] [ 9]
>> /lib64/libpthread.so.0(+0x8724)[0x7fc6a8dcd724]
>> > [sles12sp3-srv:10384] [10] /lib64/libc.so.6(clone+0x6d)[0x7fc6a8b0ce8d]
>> > [sles12sp3-srv:10384] *** End of error message ***
>> >
>> > ===========================================================
>> >
>> > Do you have any idea about what might be happening?
>> >
>> > Thank you in advance!
>> >
>> > Best regards,
>> > Álvaro
>>
>>
>>
>

Reply via email to