2004-07-14 18:11:03 +04:00
|
|
|
// -*- c++ -*-
|
|
|
|
//
|
2004-11-22 04:38:40 +03:00
|
|
|
// Copyright (c) 2004-2005 The Trustees of Indiana University.
|
|
|
|
// All rights reserved.
|
|
|
|
// Copyright (c) 2004-2005 The Trustees of the University of Tennessee.
|
|
|
|
// All rights reserved.
|
2004-11-28 23:09:25 +03:00
|
|
|
// Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
|
|
// University of Stuttgart. All rights reserved.
|
2005-03-24 15:43:37 +03:00
|
|
|
// Copyright (c) 2004-2005 The Regents of the University of California.
|
|
|
|
// All rights reserved.
|
2004-11-22 04:38:40 +03:00
|
|
|
// $COPYRIGHT$
|
|
|
|
//
|
|
|
|
// Additional copyrights may follow
|
|
|
|
//
|
2004-07-14 18:11:03 +04:00
|
|
|
// $HEADER$
|
|
|
|
//
|
|
|
|
|
|
|
|
inline MPI::Intercomm
|
|
|
|
MPI::Intercomm::Dup() const
|
|
|
|
{
|
|
|
|
MPI_Comm newcomm;
|
|
|
|
(void)MPI_Comm_dup(mpi_comm, &newcomm);
|
|
|
|
return newcomm;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline MPI::Intercomm&
|
|
|
|
MPI::Intercomm::Clone() const
|
|
|
|
{
|
|
|
|
MPI_Comm newcomm;
|
|
|
|
(void)MPI_Comm_dup(mpi_comm, &newcomm);
|
|
|
|
MPI::Intercomm* dup = new MPI::Intercomm(newcomm);
|
|
|
|
return *dup;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline int
|
|
|
|
MPI::Intercomm::Get_remote_size() const
|
|
|
|
{
|
|
|
|
int size;
|
|
|
|
(void)MPI_Comm_remote_size(mpi_comm, &size);
|
|
|
|
return size;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline MPI::Group
|
|
|
|
MPI::Intercomm::Get_remote_group() const
|
|
|
|
{
|
|
|
|
MPI_Group group;
|
|
|
|
(void)MPI_Comm_remote_group(mpi_comm, &group);
|
|
|
|
return group;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline MPI::Intracomm
|
|
|
|
MPI::Intercomm::Merge(bool high)
|
|
|
|
{
|
|
|
|
MPI_Comm newcomm;
|
|
|
|
(void)MPI_Intercomm_merge(mpi_comm, (int)high, &newcomm);
|
|
|
|
return newcomm;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
// Extended Collective Operations
|
|
|
|
//
|
|
|
|
|
|
|
|
inline MPI::Intercomm
|
|
|
|
MPI::Intercomm::Create(const Group& group) const
|
|
|
|
{
|
|
|
|
MPI_Comm newcomm;
|
|
|
|
(void) MPI_Comm_create(mpi_comm, (MPI_Group) group, &newcomm);
|
|
|
|
return newcomm;
|
|
|
|
}
|
|
|
|
|
|
|
|
inline MPI::Intercomm
|
|
|
|
MPI::Intercomm::Split(int color, int key) const
|
|
|
|
{
|
|
|
|
MPI_Comm newcomm;
|
|
|
|
(void) MPI_Comm_split(mpi_comm, color, key, &newcomm);
|
|
|
|
return newcomm;
|
|
|
|
}
|