Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

From: Jeffrey L. Tilson (jtilson_at_[hidden])
Date: 2007-06-21 09:32:34


Hi George,
It does seem to me that your execution is correct.

Here are my stats...

-bash-3.00$ mpicc -V
Intel(R) C Compiler for Intel(R) EM64T-based applications, Version
9.1 Build 20060925 Package ID: l_cc_c_9.1.044
Copyright (C) 1985-2006 Intel Corporation. All rights reserved.

-bash-3.00$ uname -a
Linux kh0.renci.org 2.6.9-42.0.8.ELsmp #1 SMP Mon Feb 19 13:45:17 EST
2007 x86_64 x86_64 x86_64 GNU/Linux

(snip)
model : 15
model name : Intel(R) Xeon(R) CPU 5150 @ 2.66GHz
stepping : 6
cpu MHz : 2660.004
cache size : 4096 KB
(snip)

Lauching the job as
> /mpirun --mca btl mvapi,self ./a.out

Version:
openMPI 1.1.4

--jeff

On Wed, 2007-06-20 at 21:52, George Bosilca wrote:
> Jeff,
>
> With the proper MPI_Finalize added at the end of the main function,
> your program orks fine with the current version of Open MPI up to 32
> processors. Here is the output I got for 4 processors:
>
> I am 2 of 4 WORLD procesors
> I am 3 of 4 WORLD procesors
> I am 0 of 4 WORLD procesors
> I am 1 of 4 WORLD procesors
> Initial inttemp 1
> Initial inttemp 0
> final inttemp 0,0
> 0, WORLD barrier leaving routine
> final inttemp 1,0
> 1, WORLD barrier leaving routine
> Initial inttemp 2
> final inttemp 2,0
> 2, WORLD barrier leaving routine
> SERVER Got a DONE flag
> Initial inttemp 3
> final inttemp 3,0
> 3, WORLD barrier leaving routine
>
> This output seems to indicate that the program is running to
> completion and it does what you expect it to do.
>
> Btw, what version of Open MPI are you using and on what kind of
> hardware ?
>
> george.
>
> On Jun 20, 2007, at 6:31 PM, Jeffrey L. Tilson wrote:
>
> > Hi,
> > ANL suggested I post this question to you. This is my second
> > posting......but now with the proper attachments.
> >
> > From: Jeffrey Tilson <jltilson_at_[hidden]>
> > Date: June 20, 2007 5:17:50 PM PDT
> > To: mpich2-maint_at_[hidden], Jeffrey Tilson <jtilson_at_[hidden]>
> > Subject: MPI question/problem
> >
> >
> > Hello All,
> > This will probably turn out to be my fault as I haven't used MPI in
> > a few years.
> >
> > I am attempting to use an MPI implementation of a "nxtval" (see the
> > MPI book). I am using the client-server scenario. The MPI book
> > specifies the three functions required. Two are collective and one
> > is not. Only the two collectives are tested in the supplied code.
> > All three of the MPI functions are reproduced in the attached code,
> > however. I wrote a tiny application to create and free a counter
> > object and it fails.
> >
> > I need to know if this is a bug in the MPI book and a
> > misunderstanding on my part.
> >
> > The complete code is attached. I was using openMPI/intel to compile
> > and run.
> >
> > The error I get is:
> >
> >> [compute-0-1.local:22637] *** An error occurred in MPI_Comm_rank
> >> [compute-0-1.local:22637] *** on communicator MPI_COMM_WORLD
> >> [compute-0-1.local:22637] *** MPI_ERR_COMM: invalid communicator
> >> [compute-0-1.local:22637] *** MPI_ERRORS_ARE_FATAL (goodbye)
> >> mpirun noticed that job rank 0 with PID 22635 on node
> >> "compute-0-1.local" exited on signal 15.
> >
> > I've attempted to google my way to understanding but with little
> > success. If someone could point me to
> > a sample application that actually uses these functions, I would
> > appreciate it.
> >
> > Sorry if this is the wrong list, it is not an MPICH question and I
> > wasn't sure where to turn.
> >
> > Thanks,
> > --jeff
> >
> > ----------------------------------------------------------------------
> > --
> >
> > /* A beginning piece of code to perform large-scale web
> > construction. */
> > #include <stdio.h>
> > #include <stdlib.h>
> > #include <string.h>
> > #include "mpi.h"
> >
> > typedef struct {
> > char description[1024];
> > double startwtime;
> > double endwtime;
> > double difftime;
> > } Timer;
> >
> > /* prototypes */
> > int MPE_Counter_nxtval(MPI_Comm , int *);
> > int MPE_Counter_free( MPI_Comm *, MPI_Comm * );
> > void MPE_Counter_create( MPI_Comm , MPI_Comm *, MPI_Comm *);
> > /* End prototypes */
> >
> > /* Globals */
> > int rank,numsize;
> >
> > int main( argc, argv )
> > int argc;
> > char **argv;
> > {
> >
> > int i,j;
> > MPI_Status status;
> > MPI_Request r;
> > MPI_Comm smaller_comm, counter_comm;
> >
> >
> > int numtimings=0;
> > int inttemp;
> > int value=-1;
> > int server;
> >
> > //Init parallel environment
> >
> > MPI_Init( &argc, &argv );
> > MPI_Comm_rank( MPI_COMM_WORLD, &rank );
> > MPI_Comm_size( MPI_COMM_WORLD, &numsize );
> >
> > printf("I am %i of %i WORLD procesors\n",rank,numsize);
> > server = numsize -1;
> >
> > MPE_Counter_create( MPI_COMM_WORLD, &smaller_comm, &counter_comm );
> > printf("Initial inttemp %i\n",rank);
> >
> > inttemp = MPE_Counter_free( &smaller_comm, &counter_comm );
> > printf("final inttemp %i,%i\n",rank,inttemp);
> >
> > printf("%i, WORLD barrier leaving routine\n",rank);
> > MPI_Barrier( MPI_COMM_WORLD );
> > }
> >
> > //// Add new MPICH based shared counter.
> > //// grabbed from http://www-unix.mcs.anl.gov/mpi/usingmpi/examples/
> > advanced/nxtval_create_c.htm
> >
> > /* tag values */
> > #define REQUEST 0
> > #define GOAWAY 1
> > #define VALUE 2
> > #define MPE_SUCCESS 0
> >
> > void MPE_Counter_create( MPI_Comm oldcomm, MPI_Comm * smaller_comm,
> > MPI_Comm * counter_comm )
> > {
> > int counter = 0;
> > int message, done = 0, myid, numprocs, server, color,ranks[1];
> > MPI_Status status;
> > MPI_Group oldgroup, smaller_group;
> >
> > MPI_Comm_size(oldcomm, &numprocs);
> > MPI_Comm_rank(oldcomm, &myid);
> > server = numprocs-1; /* last proc is server */
> > MPI_Comm_dup( oldcomm, counter_comm ); /* make one new comm */
> > if (myid == server) color = MPI_UNDEFINED;
> > else color =0;
> > MPI_Comm_split( oldcomm, color, myid, smaller_comm);
> >
> > if (myid == server) { /* I am the server */
> > while (!done) {
> > MPI_Recv(&message, 1, MPI_INT, MPI_ANY_SOURCE,
> > MPI_ANY_TAG,
> > *counter_comm, &status );
> > if (status.MPI_TAG == REQUEST) {
> > MPI_Send(&counter, 1, MPI_INT, status.MPI_SOURCE,
> > VALUE,
> > *counter_comm );
> > counter++;
> > }
> > else if (status.MPI_TAG == GOAWAY) {
> > printf("SERVER Got a DONE flag\n");
> > done = 1;
> > }
> > else {
> > fprintf(stderr, "bad tag sent to MPE counter\n");
> > MPI_Abort(*counter_comm, 1);
> > }
> > }
> > MPE_Counter_free( smaller_comm, counter_comm );
> > }
> > }
> >
> > /*******************************/
> > int MPE_Counter_free( MPI_Comm *smaller_comm, MPI_Comm *
> > counter_comm )
> > {
> > int myid, numprocs;
> >
> > MPI_Comm_rank( *counter_comm, &myid );
> > MPI_Comm_size( *counter_comm, &numprocs );
> >
> > if (myid == 0)
> > MPI_Send(NULL, 0, MPI_INT, numprocs-1, GOAWAY, *counter_comm);
> >
> > MPI_Comm_free( counter_comm );
> >
> > if (*smaller_comm != MPI_COMM_NULL) {
> > MPI_Comm_free( smaller_comm );
> > }
> > return 0;
> > }
> >
> > /************************/
> > int MPE_Counter_nxtval(MPI_Comm counter_comm, int * value)
> > {
> > int server,numprocs;
> > MPI_Status status;
> >
> > MPI_Comm_size( counter_comm, &numprocs );
> > server = numprocs-1;
> > MPI_Send(NULL, 0, MPI_INT, server, REQUEST, counter_comm );
> > MPI_Recv(value, 1, MPI_INT, server, VALUE, counter_comm,
> > &status );
> > return 0;
> > }
> >
> >
> > _______________________________________________
> > 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