mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: properly trap any sub-rank changes in allocatePstreamCommunicator
- not currently used, but it is possible that communicator allocation modifies the list of sub-ranks. Ensure that the correct size is used when (re)initialising the linear/tree structures. STYLE: adjust MPI test applications - remove some clutter and unneeded grouping. Some ideas for host-only communicators
This commit is contained in:
@ -5,7 +5,7 @@
|
||||
\\ / A nd | www.openfoam.com
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
Copyright (C) 2019-2022 OpenCFD Ltd.
|
||||
Copyright (C) 2019-2023 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -52,11 +52,6 @@ bool startMPI()
|
||||
int nprocs[3];
|
||||
int rank[3];
|
||||
|
||||
int group_nprocs[3];
|
||||
int group_rank[3];
|
||||
|
||||
MPI_Group mpiGroup;
|
||||
|
||||
MPI_Init(nullptr, nullptr);
|
||||
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &nprocs[worldComm]);
|
||||
@ -65,62 +60,27 @@ bool startMPI()
|
||||
const bool isMaster = (rank[worldComm] == 0);
|
||||
const string prefix = '[' + Foam::name(rank[worldComm]) + "] ";
|
||||
|
||||
MPI_Comm_group(MPI_COMM_WORLD, &mpiGroup);
|
||||
MPI_Group_size(mpiGroup, &group_nprocs[worldComm]);
|
||||
MPI_Group_rank(mpiGroup, &group_rank[worldComm]);
|
||||
|
||||
|
||||
if (isMaster && nprocs[worldComm])
|
||||
{
|
||||
std::cout
|
||||
<< nl << "Using MPI with " << nprocs[worldComm]
|
||||
<< " procs, group:"
|
||||
<< group_nprocs[worldComm] << nl
|
||||
<< "World group: " << Foam::name(mpiGroup) << nl
|
||||
<< nl << "Using MPI with "
|
||||
<< nprocs[worldComm] << " procs" << nl
|
||||
<< nl;
|
||||
}
|
||||
|
||||
MPI_Comm worldMpiComm;
|
||||
|
||||
MPI_Comm_dup(MPI_COMM_WORLD, &worldMpiComm);
|
||||
|
||||
MPI_Comm_group(MPI_COMM_WORLD, &mpiGroup);
|
||||
|
||||
if (isMaster && nprocs[worldComm])
|
||||
{
|
||||
std::cout
|
||||
<< "dup comm group: " << Foam::name(mpiGroup) << nl;
|
||||
}
|
||||
|
||||
MPI_Comm_free(&worldMpiComm);
|
||||
|
||||
// May be a bad idea
|
||||
MPI_Group_free(&mpiGroup);
|
||||
|
||||
MPI_Comm_size(MPI_COMM_SELF, &nprocs[selfComm]);
|
||||
MPI_Comm_rank(MPI_COMM_SELF, &rank[selfComm]);
|
||||
|
||||
MPI_Comm_group(MPI_COMM_SELF, &mpiGroup);
|
||||
MPI_Group_size(mpiGroup, &group_nprocs[selfComm]);
|
||||
MPI_Group_rank(mpiGroup, &group_rank[selfComm]);
|
||||
|
||||
if (isMaster && nprocs[worldComm])
|
||||
{
|
||||
std::cout
|
||||
<< nl
|
||||
<< "Self group: " << Foam::name(mpiGroup) << nl;
|
||||
}
|
||||
|
||||
// Should be a bad idea
|
||||
MPI_Group_free(&mpiGroup);
|
||||
|
||||
// if (nprocs && isMaster)
|
||||
{
|
||||
std::cout
|
||||
<< prefix
|
||||
<< "Self: " << rank[selfComm] << " from " << nprocs[selfComm]
|
||||
<< " procs, group:"
|
||||
<< group_nprocs[selfComm] << nl;
|
||||
<< "Self: " << rank[selfComm]
|
||||
<< " from " << nprocs[selfComm] << " procs" << nl;
|
||||
}
|
||||
|
||||
if (isMaster)
|
||||
|
||||
Reference in New Issue
Block a user