Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Scheduling dynamically spawned processes
From: Ralph Castain (rhc_at_[hidden])
Date: 2011-05-17 16:13:05


<laugh> Thanks for pointing this out - it's an error in our man page. I've fixed it on our devel trunk and will get it push'd to the release.

On May 16, 2011, at 1:14 PM, Thatyene Louise Alves de Souza Ramos wrote:

> Ralph, thank you the reply.
>
> I just try what you said and it works! I didn't think to try the array of info arguments because in the spawn_multiple documentation I read the follow:
>
> "... array_of_info, is an array of info arguments; however, only the first argument in that array is used. Any subsequent arguments in the array are ignored because an info argument applies to the entire job that is spawned, and cannot be different for each executable in the job. See the INFO ARGUMENTS section for more information."
>
> Anyway, I'm glad it works!
>
> Thank you very much!
>
> Regards.
>
> Thatyene Ramos
>
> On Mon, May 16, 2011 at 3:47 PM, Ralph Castain <rhc_at_[hidden]> wrote:
> You need to use MPI_Comm_spawn_multiple. Despite the name, it results in a single communicator being created by a single launch - it just allows you to specify multiple applications to run.
>
> In this case, we use the same app, but give each element a different "host" info key to get the behavior we want. Looks something like this:
>
> MPI_Comm child;
> char *cmds[3] = {"myapp", "myapp", "myapp"};
> MPI_Info info[3];
> int maxprocs[] = { 1, 3, 1 };
>
> MPI_Info_create(&info[0]);
> MPI_Info_set(info[0], "host", "m1");
>
> MPI_Info_create(&info[1]);
> MPI_Info_set(info[1], "host", "m2");
>
> MPI_Info_create(&info[2]);
> MPI_Info_set(info[2], "host", "m1");
>
> MPI_Comm_spawn_multiple(3, cmds, NULL, maxprocs,
> info, 0, MPI_COMM_WORLD,
> &child, MPI_ERRCODES_IGNORE);
>
> I won't claim the above is correct - but it gives the gist of the idea.
>
>
> On May 16, 2011, at 12:19 PM, Thatyene Louise Alves de Souza Ramos wrote:
>
>> Ralph,
>>
>> I have the same issue and I've been searching how to do this, but I couldn't find.
>>
>> What exactly must be the string in the host info key to do what Rodrigo described?
>>
>> <<< Inside your master, you would create an MPI_Info key "host" that has a value
>> <<< consisting of a string "host1,host2,host3" identifying the hosts you want
>> <<< your slave to execute upon. Those hosts must have been included in
>> <<< my_hostfile. Include that key in the MPI_Info array passed to your Spawn.
>>
>> I tried to do what you said above but ompi ignores the repetition of hosts. Using Rodrigo's example I did:
>>
>> host info key = "m1,m2,m2,m2,m3" and number of processes = 5 and the result was
>>
>> m1 -> 2
>> m2 -> 2
>> m3 -> 1
>>
>> and not
>>
>> m1 -> 1
>> m2 -> 3
>> m3 -> 1
>>
>> as I wanted.
>>
>> Thanks in advance.
>>
>> Thatyene Ramos
>>
>> On Fri, May 13, 2011 at 9:16 PM, Ralph Castain <rhc_at_[hidden]> wrote:
>> I believe I answered that question. You can use the hostfile info key, or you can use the host info key - either one will do what you require.
>>
>> On May 13, 2011, at 4:11 PM, Rodrigo Silva Oliveira wrote:
>>
>>> Hi,
>>>
>>> I think I was not specific enough. I need to spawn the copies of a process in a unique mpi_spawn call. It is, I have to specify a list of machines and how many copies of the process will be spawned on each one. Is it possible?
>>>
>>> I would be something like that:
>>>
>>> machines #copies
>>> m1 1
>>> m2 3
>>> m3 1
>>>
>>> After an unique call to spawn, I want the copies running in this fashion. I tried use a hostfile with the option slot, but I'm not sure if it is the best way.
>>>
>>> hostfile:
>>>
>>> m1 slots=1
>>> m2 slots=3
>>> m3 slots=1
>>>
>>> Thanks
>>>
>>> --
>>> Rodrigo Silva Oliveira
>>> M.Sc. Student - Computer Science
>>> Universidade Federal de Minas Gerais
>>> www.dcc.ufmg.br/~rsilva
>>> _______________________________________________
>>> users mailing list
>>> users_at_[hidden]
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>>
>> _______________________________________________
>> users mailing list
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>> _______________________________________________
>> users mailing list
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users