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.
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().
MPI_COMM_NULL.
Post by Marlborough, RickDesignation: 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
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
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
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
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
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
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
https://rfd.newmexicoconsortium.org/mailman/listinfo/users
3.1.1001
3.1.1001
3.1.1001
_______________________________________________
users mailing list
https://rfd.newmexicoconsortium.org/mailman/listinfo/users