What wrong with only allowing the rank 0 to execute the code before and after 
the funcCompScalapack function as indicated in the example below:

int main()
{
    //Initialize MPI
    MPI_Init(NULL,NULL);
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

    if( 0 == rank ) {
        //some work that must be done by only one node
        …..
    }

    //function that runs internally some scalapack computations
    funcCompScalapack();

    if( 0 == my rank ) {
        //other work must be done by the original node
        ….
    }

    //finalize MPI
    MPI_Finalize();

    return 0;
}

void funcCompScalapack()
{
    //here I think I should write some code in order to inform that the work 
must be done by a number X or processors
    //maybe using MPI_Comm_spawn?
    ....
    //some BLACS and ScaLAPACK computations
    ....
    return;
}

  George.


On Jun 6, 2013, at 18:43 , Ralph Castain <r...@open-mpi.org> wrote:

> I honestly don't know - you'd have to look at the PVM docs. You also might 
> look at OpenMP and try doing it with multiple threads instead of processes, 
> though that limits you to running on a single node.
> 
> On Jun 6, 2013, at 9:37 AM, José Luis García Pallero <jgpall...@gmail.com> 
> wrote:
> 
>> 2013/6/6 Ralph Castain <r...@open-mpi.org>
>> 
>> On Jun 6, 2013, at 8:58 AM, José Luis García Pallero <jgpall...@gmail.com> 
>> wrote:
>> 
>>> 2013/6/6 Ralph Castain <r...@open-mpi.org>
>>> should work!
>>> 
>>> Thank you for your answer.
>>> 
>>> So I understand that MPI_Comm_spawn() is my function. But I see in the 
>>> documentation that the first argument is char* command, and command is the 
>>> name of the program to spawn, but I not want to execute an external 
>>> program. Only a piece of code in the same program. How can I deal with that.
>> 
>> You'll have to move that code into a separate program, then pass any data it 
>> requires using MPI_Send/receive or a collective operation
>> 
>> Mmm... bad news. It is impossible, then in MPI. I need all the code in the 
>> same executable.
>> 
>> I know this is offtopic in this list, but, can I perform the calculations as 
>> I want using PVM? (ScaLAPACK et al. can also run with PVM)
>> 
>> Cheers
>>  
>> 
>>> The second argument is char* argv[]. Admits MPI_Comm_spawn() the NULL value 
>>> for argv[], as MPI_Init()?
>>> 
>>> I know also that I can do my program by putting the code before and after 
>>> the call funcCompScalapack() into an if() checking if the node is the root 
>>> and then these pieces of code will be executed only by the root. But I want 
>>> to maintain all the program free of MPI code except the funcCompScalapack() 
>>> function
>>> 
>>> Cheers
>>> 
>>> On Jun 6, 2013, at 8:24 AM, José Luis García Pallero <jgpall...@gmail.com> 
>>> wrote:
>>> 
>>>> 2013/6/6 Ralph Castain <r...@open-mpi.org>
>>>> Afraid not. You could start a single process, and then have that process 
>>>> call MPI_Comm_spawn to launch the rest of them
>>>> 
>>>> Mmmm... sounds good
>>>> 
>>>> I'm writing an example program using ScaLAPACK. I have written the 
>>>> ScaLAPACK code in an independent function that must be called after some 
>>>> work in an individual node (the root one). So I need the first part of the 
>>>> program be executed by one process. My example looks like:
>>>> 
>>>> int main()
>>>> {
>>>>     //some work that must be done by only one node
>>>>     .....
>>>>     //function that runs internally some scalapack computations
>>>>     funcCompScalapack();
>>>>     //other work must be done by the original node
>>>>     ....
>>>>     return 0;
>>>> }
>>>> 
>>>> void funcCompScalapack()
>>>> {
>>>>     //Initialize MPI
>>>>     MPI_Init(NULL,NULL);
>>>>     //here I think I should write some code in order to inform that the 
>>>> work must be done by a number X or processors
>>>>     //maybe using MPI_Comm_spawn?
>>>>     ....
>>>>     //some BLACS and ScaLAPACK computations
>>>>     ....
>>>>     //finalize MPI
>>>>     MPI_Finalize();
>>>>     return;
>>>> }
>>>> 
>>>> When I execute this program as mpirun -np X myprogram, the pieces of code 
>>>> before and after the call to function funcCompScalapack() are executed by 
>>>> X nodes, but these orders must be executed only by one. So my idea is to 
>>>> execute the binary as ./myprogram (the same I think as mpirun -np 1 
>>>> myprogram) and internally set the number of processes in 
>>>> funcCompScalapack() after the MPI_Init() call.
>>>> 
>>>> Is my idea possible?
>>>> 
>>>> Thanks
>>>>  
>>>> 
>>>> On Jun 6, 2013, at 7:54 AM, José Luis García Pallero <jgpall...@gmail.com> 
>>>> wrote:
>>>> 
>>>>> Hello:
>>>>> 
>>>>> I'm newbie in the use of MPI, so probably I ask some stupid question (or 
>>>>> previously asked, but in this case I have searched in the archive and I 
>>>>> haven't found anything):
>>>>> 
>>>>> Exists any other way than -np X in order to pass the number of processes 
>>>>> to start for an MPI program? I mean a function of the style 
>>>>> MPI_Set_Number_Processes() or similar
>>>>> 
>>>>> Thanks
>>>>> 
>>>>> -- 
>>>>> *****************************************
>>>>> José Luis García Pallero
>>>>> jgpall...@gmail.com
>>>>> (o<
>>>>> / / \
>>>>> V_/_
>>>>> Use Debian GNU/Linux and enjoy!
>>>>> *****************************************
>>>>> _______________________________________________
>>>>> users mailing list
>>>>> us...@open-mpi.org
>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>> 
>>>> 
>>>> _______________________________________________
>>>> users mailing list
>>>> us...@open-mpi.org
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> *****************************************
>>>> José Luis García Pallero
>>>> jgpall...@gmail.com
>>>> (o<
>>>> / / \
>>>> V_/_
>>>> Use Debian GNU/Linux and enjoy!
>>>> *****************************************
>>>> _______________________________________________
>>>> users mailing list
>>>> us...@open-mpi.org
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>> 
>>> 
>>> _______________________________________________
>>> users mailing list
>>> us...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>>> 
>>> 
>>> 
>>> -- 
>>> *****************************************
>>> José Luis García Pallero
>>> jgpall...@gmail.com
>>> (o<
>>> / / \
>>> V_/_
>>> Use Debian GNU/Linux and enjoy!
>>> *****************************************
>>> _______________________________________________
>>> users mailing list
>>> us...@open-mpi.org
>>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>> 
>> 
>> 
>> -- 
>> *****************************************
>> José Luis García Pallero
>> jgpall...@gmail.com
>> (o<
>> / / \
>> V_/_
>> Use Debian GNU/Linux and enjoy!
>> *****************************************
>> _______________________________________________
>> users mailing list
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users

Reply via email to