Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] hcoll destruction via MPI attribute
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2014-01-10 10:15:43


On Jan 10, 2014, at 10:04 AM, George Bosilca <bosilca_at_[hidden]> wrote:

>> MPI Comm comm;
>> // comm is setup as an hcoll-enabled communicator
>> if (rank == x) {
>> MPI_Send(..., y, tag, MPI_COMM_WORLD);
>> MPI_Comm_free(comm);
>> } else if (rank == y) {
>> MPI_Comm_free(comm);
>> MPI_Recv(..., x, tag, MPI_COMM_WORLD);
>> }
>
> Based on today’s MPI standard this code is incorrect as the MPI_Comm_free is collective, and you can’t have matching blocking communications crossing a collective line.

I don't know exactly what you mean by "crossing a collective line", but communicating in different communicators while a different collective is occurring is certainly valid. I.e., this is valid (and won't deadlock):

-----
MPI Comm comm;
// comm is setup as an hcoll-enabled communicator
MPI_Barrier(comm);
if (rank == x) {
  MPI_Send(..., y, tag, MPI_COMM_WORLD);
  MPI_Comm_free(comm);
} else if (rank == y) {
  MPI_Recv(..., x, tag, MPI_COMM_WORLD);
  MPI_Comm_free(comm);
} else {
  MPI_Comm_free(comm);
}
-----

My point (which I guess I didn't make well) is that COMM_FREE is collective, which we all know does not necessarily mean synchronizing. If hcoll teardown is going to add synchronization, there could be situations that might be dangerous (if OMPI doesn't already synchronize during COMM_FREE, which is why I asked the question).

Sorry if I just muddled the conversation... :-\

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/