Skip to content

Commit

Permalink
PCU.cc documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
flagdanger committed Nov 22, 2024
1 parent 7b20e57 commit 5512298
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Doxyfile.in
Original file line number Diff line number Diff line change
Expand Up @@ -793,7 +793,7 @@ INPUT = \
@CMAKE_CURRENT_SOURCE_DIR@/gmi/gmi_mesh.h \
@CMAKE_CURRENT_SOURCE_DIR@/gmi/gmi_analytic.h \
@CMAKE_CURRENT_SOURCE_DIR@/gmi/gmi_null.h \
@CMAKE_CURRENT_SOURCE_DIR@/pcu/pcu.c \
@CMAKE_CURRENT_SOURCE_DIR@/pcu/PCU.cc \
@CMAKE_CURRENT_SOURCE_DIR@/mth/mth.dox \
@CMAKE_CURRENT_SOURCE_DIR@/mth/mth.h \
@CMAKE_CURRENT_SOURCE_DIR@/mth/mthVector.h \
Expand Down
2 changes: 1 addition & 1 deletion Doxyfile_internal.in
Original file line number Diff line number Diff line change
Expand Up @@ -826,7 +826,7 @@ INPUT = \
@CMAKE_CURRENT_SOURCE_DIR@/gmi/gmi_mesh.h \
@CMAKE_CURRENT_SOURCE_DIR@/gmi/gmi_analytic.h \
@CMAKE_CURRENT_SOURCE_DIR@/gmi/gmi_null.h \
@CMAKE_CURRENT_SOURCE_DIR@/pcu/pcu.c \
@CMAKE_CURRENT_SOURCE_DIR@/pcu/PCU.cc \
@CMAKE_CURRENT_SOURCE_DIR@/mth/mth.dox \
@CMAKE_CURRENT_SOURCE_DIR@/mth/mth.h \
@CMAKE_CURRENT_SOURCE_DIR@/mth/mthVector.h \
Expand Down
38 changes: 38 additions & 0 deletions pcu/PCU.cc
Original file line number Diff line number Diff line change
@@ -1,3 +1,41 @@
/** \file PCU.cc
\brief The PCU communication interface */
/** \page pcu PCU
PCU (the Parallel Control Utility) is a library for parallel computation
based on MPI.
PCU provides three things to users:
1. A hybrid phased message passing system
2. Hybrid collective operations
3. Ability to have multiple PCU objects exist with different amounts of processors
Phased message passing is similar to Bulk Synchronous Parallel.
All messages are exchanged in a phase, which is a collective operation
involving all threads in the parallel program.
During a phase, the following events happen in sequence:
1. All threads send non-blocking messages to other threads
2. All threads receive all messages sent to them during this phase
PCU provides termination detection, which is the ability to detect when all
messages have been received without prior knowledge of which threads
are sending to which.
All mesh creation is tied to a PCU to operate on.
Sample:
\code{.cpp}
int main(int argc, char** argv){
const char* modelFile = argv[1];
const char* meshFile = argv[2];
MPI_Init(&argc,&argv);
pcu::PCU PCUObj = pcu::PCU(MPI_COMM_WORLD);
ma::Mesh* m = apf::loadMdsMesh(modelFile,meshFile,&PCUObj);
apf::destroyMesh(m);
MPI_Finalize();
}
\endcode
The API documentation is here: PCU.cc
*/


#include "PCU.h"
#include "noto_malloc.h"
#include "pcu_mem.h"
Expand Down

0 comments on commit 5512298

Please sign in to comment.