Rick, if you look at the big picture, i think 3 communicators make more sense. now keep in mind that a given task is only part of two valid communicators. depending on how you implement communicator creation, there could be 2 communicators per task, or 3 communicators, and one is MPI_COMM_NULL.
MPI_Barrier is invoked on communicators, not group. all members of a communicator must call MPI_Barrier(). now keep in mind that when you create a communicator, it might return MPI_COMM_NULL. this is a special case, and you are not allowed to MPI_Barrier(MPI_COMM_NULL) Cheers, Gilles On Tue, Oct 18, 2016 at 12:43 AM, Marlborough, Rick <rmarlboro...@aaccorp.com> wrote: > Designation: Non-Export Controlled Content > > Gilles; > > Yes, your assumption is correct. No communication between > proxies and no communications between sensors. I am using rank to determine > role. Dispatcher being 0. Sensors start at 1. So I should have 3 groups? I > am new to MPI and my knowledge of it is not the best. My understanding is > that when I utilize an MPI_Barrier, all participants of a specified group > must call MPI_Barrier in order to advance. This tells me Dispatch and sensor > must be in the same group. Is my understanding incorrect? > > > > Thanks > > Rick > > > > From: users [mailto:users-boun...@lists.open-mpi.org] On Behalf Of Gilles > Gouaillardet > Sent: Monday, October 17, 2016 10:38 AM > > > To: Open MPI Users > Subject: Re: [OMPI users] communications groups > > > > Rick, > > > > So you have three types of tasks > > - 1 dispatcher > > - several sensors > > - several proxies > > > > If proxies do not communicate with each other, and if sensors do not > communicate with each other, then you could end up with 3 inter > communicators > > sensorComm: dispatcher in the left group and sensors in the right group > > proxyComm: dispatcher in the left group and proxies in the right group > > controlComm: sensors in the left group and proxies in the right group > > > > Does that fit your needs ? > > If yes, then keep in mind sensorComm is MPI_COMM_NULL on the proxy tasks, > proxyComm is MPI_COMM_NULL on the sensor tasks, and controlComm is > MPI_COMM_NULL on the dispatcher. > > > > Cheers, > > > > Gilles > > On Monday, October 17, 2016, Marlborough, Rick <rmarlboro...@aaccorp.com> > wrote: > > Designation: Non-Export Controlled Content > > Gilles; > > My scenario involves a Dispatcher of rank 0, and several > sensors and proxy objects. The Dispatcher triggers activity and gathers > results. The proxies get triggered first. They send data to the sensors, and > the sensors indicate to the dispatcher that they are done. I am trying to > create 2 comm groups. One for the sensors and one for the proxies. The > dispatcher will use the 2 comm groups to coordinate activity. I tried adding > the dispatcher to the sensorList comm group, but I get an error saying > “invalid task”. > > > > Rick > > > > From: users [mailto:users-boun...@lists.open-mpi.org] On Behalf Of Gilles > Gouaillardet > Sent: Monday, October 17, 2016 9:30 AM > To: Open MPI Users > Subject: Re: [OMPI users] communications groups > > > > Rick, > > > > I re-read the MPI standard and was unable to figure out if sensorgroup is > MPI_GROUP_EMPTY or a group with task 1 on tasks except task 1 > > (A group that does not contain the current task makes little sense to me, > but I do not see any reason why this group have to be MPI_GROUP_EMPTY) > > > > Regardless, sensorComm will be MPI_COMM_NULL except on task 1, so > MPI_Barrier will fail. > > > > Cheers, > > > > Gilles > > On Monday, October 17, 2016, Marlborough, Rick <rmarlboro...@aaccorp.com> > wrote: > > Designation: Non-Export Controlled Content > > George; > > Thanks for your response. Your second sentence is a little > confusing. If my world group is P0,P1, visible on both processes, why > wouldn’t the sensorList contain P1 on both processes? > > > > Rick > > > > > > From: users [mailto:users-boun...@lists.open-mpi.org] On Behalf Of George > Bosilca > Sent: Friday, October 14, 2016 5:44 PM > To: Open MPI Users > Subject: Re: [OMPI users] communications groups > > > > Rick, > > > > Let's assume that you have started 2 processes, and that your sensorList is > {1}. The worldgroup will then be {P0, P1}, which trimmed via the sensorList > will give the sensorgroup {MPI_GROUP_EMPTY} on P0 and the sensorgroup {P1} > on P1. As a result on P0 you will create a MPI_COMM_NULL communicator, while > on P1 you will have a valid communicator sensorComm (which will only contain > P1). You cannot do a Barrier on an MPI_COMM_NULL communicator, which might > explain the "invalid communicator" error you are getting. > > > > George. > > > > > > On Fri, Oct 14, 2016 at 5:33 PM, Marlborough, Rick > <rmarlboro...@aaccorp.com> wrote: > > Designation: Non-Export Controlled Content > > Folks; > > I have the following code setup. The sensorList is an array > of ints of size 1. The value it contains is 1. My comm world size is 5. The > call to MPI_Barrier fails every time with error “invalid communicator”. This > code is pretty much copied out of a text book. I must be doing something > wrong. I just don’t see it. Can anyone else spot my error? I am using v2.01 > on red hat 6.5. > > > > Thanks > > Rick > > > > > > MPI_Comm_group(MPI_COMM_WORLD, &worldgroup); > > MPI_Group_incl(worldgroup, 1, sensorList, &sensorgroup); > > MPI_Comm_create(MPI_COMM_WORLD, sensorgroup, &sensorComm); > > MPI_Barrier(sensorComm); > > 3.1.1001 > > > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://rfd.newmexicoconsortium.org/mailman/listinfo/users > > > > 3.1.1001 > > 3.1.1001 > > 3.1.1001 > > > _______________________________________________ > users mailing list > users@lists.open-mpi.org > https://rfd.newmexicoconsortium.org/mailman/listinfo/users _______________________________________________ users mailing list users@lists.open-mpi.org https://rfd.newmexicoconsortium.org/mailman/listinfo/users