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