[mpich-discuss] Spawn MPI-Process
Reuti
reuti at staff.uni-marburg.de
Sun Nov 11 11:50:12 CST 2012
Am 31.10.2012 um 16:42 schrieb Silvan Brändli:
> Dear all
>
> After a long time I'm coming back to this topic...
The strange thing is: if I use two variables (one for each instance) and select with an if-then-else a unique one for each call, it's working. But not with elements of an array which I tried initially.
To the original problem: maybe a communicator can't be reused?
-- Reuti
> Good news: The first example is running (see attached case "test_spawn", run ./build to compile and ./run to start the example). Setting -hosts localhost:XYZ to something bigger than 1, as Pavan suggested helped.
>
> Bad news: I also need to pass an argument to the program I want to start. When I try, I get a segmentation fault (see second case: test_spawn_argv). I guess something must be wrong with the argv I am passing:
>
> char* hiargv[1];
> char h0[]={"23"};
> hiargv[0]=h0;
>
> The resulting output is:
>
> =================================================
>
> [0] Main rank 0
> [0] Main world_size 1
> [0] Main universe size 2
> [0] before spawn 1
>
> =====================================================================================
> = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
> = EXIT CODE: 11
> = CLEANING UP REMAINING PROCESSES
> = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
> =====================================================================================
> APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault (signal 11)
>
> =================================================
>
> I am grateful for any help.
>
> Best regards
> Silvan
>
>
> On 08/21/12 16:42, Silvan Brändli wrote:
>> When I use MPI_ARGV_NULL I get:
>>
>> [0] world_size 1
>> [0] universe size 1
>> [0] try to spawn
>> [mpiexec at skfp4] HYD_pmcd_pmi_alloc_pg_scratch
>> (./pm/pmiserv/pmiserv_utils.c:595): assert (pg->pg_process_count *
>> sizeof(struct HYD_pmcd_pmi_ecount)) failed
>> [mpiexec at skfp4] fn_spawn (./pm/pmiserv/pmiserv_pmi_v1.c:468): unable to
>> allocate pg scratch space
>> [mpiexec at skfp4] handle_pmi_cmd (./pm/pmiserv/pmiserv_cb.c:44): PMI
>> handler returned error
>> [mpiexec at skfp4] control_cb (./pm/pmiserv/pmiserv_cb.c:289): unable to
>> process PMI command
>> [mpiexec at skfp4] HYDT_dmxu_poll_wait_for_event
>> (./tools/demux/demux_poll.c:77): callback returned error status
>> [mpiexec at skfp4] HYD_pmci_wait_for_completion
>> (./pm/pmiserv/pmiserv_pmci.c:181): error waiting for event
>> [mpiexec at skfp4] main (./ui/mpich/mpiexec.c:405): process manager error
>> waiting for completion
>>
>> Can you get some helpful information out of this?
>>
>> Best regards
>> Silvan
>>
>>
>> On 08/21/12 15:21, Rajeev Thakur wrote:
>>> Trying passing MPI_ARGV_NULL instead of hiargv. If that also doesn't
>>> work, then use a debugger to locate the seg fault.
>>>
>>> Rajeev
>>>
>>> On Aug 21, 2012, at 5:07 AM, Silvan Brändli wrote:
>>>
>>>> Rajeev and Pavan, thank you for your suggestions. Unfortunately I
>>>> still get the same error (segmentation fault). So I'm quite clueless
>>>> where to look for the error now... If somebody could execute the
>>>> example to see if the same error occurs this might be helpful.
>>>>
>>>> Best regards
>>>> Silvan
>>>>
>>>> On 08/21/12 01:59, Rajeev Balaji wrote:
>>>>>
>>>>> Or you can specify multiple process on the node using:
>>>>>
>>>>> mpiexec -hosts localhost:100 -np 1 ./main
>>>>>
>>>>> Then the universe size will be set to 100.
>>>>>
>>>>> -- Pavan
>>>>>
>>>>> On 08/20/2012 12:49 PM, Rajeev Thakur wrote:
>>>>>> Instead of universe_size-1, try passing some number like 3 or 4.
>>>>>>
>>>>>> Rajeev
>>>>>>
>>>>>> On Aug 20, 2012, at 4:39 AM, Silvan Brändli wrote:
>>>>>>
>>>>>>> Dear all
>>>>>>>
>>>>>>> I try to start an application using the MPI_Comm_spawn command.
>>>>>>> However, when I execute my program I get a segmentation fault. I
>>>>>>> guess, this might be because universe_size is one. As I couldn't find
>>>>>>> helpful information on setting universe_size I hope some of you could
>>>>>>> help me.
>>>>>>>
>>>>>>> Find the source code below or in the attached files. I compile the
>>>>>>> code using
>>>>>>> mpicxx main.cpp -o main
>>>>>>> mpicxx hi.cpp -o hi
>>>>>>>
>>>>>>> and execute the case with
>>>>>>>
>>>>>>> mpiexec -prepend-rank -np 1 ./main
>>>>>>>
>>>>>>> The output is
>>>>>>>
>>>>>>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> [0] world_size 1
>>>>>>> [0] universe size 1
>>>>>>> [0] try to spawn
>>>>>>>
>>>>>>> =====================================================================================
>>>>>>>
>>>>>>>
>>>>>>> = BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
>>>>>>> = EXIT CODE: 11
>>>>>>> = CLEANING UP REMAINING PROCESSES
>>>>>>> = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
>>>>>>> =====================================================================================
>>>>>>>
>>>>>>>
>>>>>>> APPLICATION TERMINATED WITH THE EXIT STRING: Segmentation fault
>>>>>>> (signal 11)
>>>>>>>
>>>>>>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Best regards
>>>>>>> Silvan
>>>>>>>
>>>>>>> $$$$==main.cpp==$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> #include <sstream>
>>>>>>> #include <mpi.h>;
>>>>>>>
>>>>>>> using std::string;
>>>>>>>
>>>>>>> int main(int argc, char *argv[])
>>>>>>> {
>>>>>>> int myrank;
>>>>>>> if (MPI_Init(&argc,&argv)!=MPI_SUCCESS)
>>>>>>> {
>>>>>>> printf("MPI_Init failed");
>>>>>>> }
>>>>>>> MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
>>>>>>>
>>>>>>> int world_size, universe_size, *universe_sizep, flag;
>>>>>>> MPI_Comm_size(MPI_COMM_WORLD, &world_size);
>>>>>>> printf("world_size %d\n",world_size);
>>>>>>>
>>>>>>> MPI_Attr_get(MPI_COMM_WORLD, MPI_UNIVERSE_SIZE,
>>>>>>> &universe_sizep, &flag);
>>>>>>>
>>>>>>> if (!flag)
>>>>>>> {
>>>>>>> printf("This MPI does not support UNIVERSE_SIZE. How many
>>>>>>> processes total?");
>>>>>>> scanf("%d", &universe_size);
>>>>>>> } else universe_size = *universe_sizep;
>>>>>>> printf("universe size %d\n",universe_size);
>>>>>>>
>>>>>>> char* hiargv[1];
>>>>>>> char* m0=" ";
>>>>>>> hiargv[0]=m0;
>>>>>>>
>>>>>>> MPI_Comm childComm;
>>>>>>> int spawnerror;
>>>>>>> printf("try to spawn\n");
>>>>>>> MPI_Comm_spawn("./hi",hiargv, universe_size-1, MPI_INFO_NULL,
>>>>>>> myrank, MPI_COMM_SELF, &childComm, &spawnerror);
>>>>>>> printf("after spawn\n");
>>>>>>> MPI_Finalize();
>>>>>>> return 0;
>>>>>>> }
>>>>>>>
>>>>>>> $$$$==hi.cpp==$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> #include <mpi.h>;
>>>>>>> int main(int argc, char** argv) {
>>>>>>> MPI_Init(NULL, NULL);
>>>>>>>
>>>>>>> int world_size;
>>>>>>> MPI_Comm_size(MPI_COMM_WORLD, &world_size);
>>>>>>>
>>>>>>> int world_rank;
>>>>>>> MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
>>>>>>>
>>>>>>> printf("Hello world from, rank %d"
>>>>>>> " out of %d processors\n",
>>>>>>> world_rank, world_size);
>>>>>>>
>>>>>>> MPI_Finalize();
>>>>>>> return 0;
>>>>>>> }
>>>>>>>
>>>>>>> $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Dipl.-Ing. Silvan Brändli
>>>>>>> Numerische Strukturanalyse mit Anwendungen in der Schiffstechnik
>>>>>>> (M-10)
>>>>>>>
>>>>>>> Technische Universität Hamburg-Harburg
>>>>>>> Schwarzenbergstraße 95c
>>>>>>> 21073 Hamburg
>>>>>>>
>>>>>>> Tel. : +49 (0)40 42878 - 6187
>>>>>>> Fax. : +49 (0)40 42878 - 6090
>>>>>>> e-mail: silvan.braendli at tu-harburg.de
>>>>>>> www : http://www.tuhh.de/skf
>>>>>>>
>>>>>>> <main.cpp><hi.cpp>_______________________________________________
>>>>>>> mpich-discuss mailing list mpich-discuss at mcs.anl.gov
>>>>>>> To manage subscription options or unsubscribe:
>>>>>>> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
>>>>>>
>>>>>> _______________________________________________
>>>>>> mpich-discuss mailing list mpich-discuss at mcs.anl.gov
>>>>>> To manage subscription options or unsubscribe:
>>>>>> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Dipl.-Ing. Silvan Brändli
>>>> Numerische Strukturanalyse mit Anwendungen in der Schiffstechnik (M-10)
>>>>
>>>> Technische Universität Hamburg-Harburg
>>>> Schwarzenbergstraße 95c
>>>> 21073 Hamburg
>>>>
>>>> Tel. : +49 (0)40 42878 - 6187
>>>> Fax. : +49 (0)40 42878 - 6090
>>>> e-mail: silvan.braendli at tu-harburg.de
>>>> www : http://www.tuhh.de/skf
>>>>
>>>>
>>>> _______________________________________________
>>>> mpich-discuss mailing list mpich-discuss at mcs.anl.gov
>>>> To manage subscription options or unsubscribe:
>>>> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
>>>
>>> _______________________________________________
>>> mpich-discuss mailing list mpich-discuss at mcs.anl.gov
>>> To manage subscription options or unsubscribe:
>>> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
>>>
>>
>>
>
>
> --
> Dipl.-Ing. Silvan Brändli
> Numerische Strukturanalyse mit Anwendungen in der Schiffstechnik (M-10)
>
> Technische Universität Hamburg-Harburg
> Schwarzenbergstraße 95c
> 21073 Hamburg
>
> Tel. : +49 (0)40 42878 - 6187
> Fax. : +49 (0)40 42878 - 6090
> e-mail: silvan.braendli at tu-harburg.de
> www : http://www.tuhh.de/skf
>
> 5th GACM Colloquium on Computational Mechanics
> http://www.tu-harburg.de/gacm2013
> <test_spawn.zip><test_spawn_argv.zip>_______________________________________________
> mpich-discuss mailing list mpich-discuss at mcs.anl.gov
> To manage subscription options or unsubscribe:
> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
More information about the mpich-discuss
mailing list