Nektar++
|
Classes | |
struct | array |
struct | comm |
struct | pw_comm_data |
struct | pw_data |
struct | cr_stage |
struct | cr_data |
struct | allreduce_data |
struct | gs_remote |
struct | gs_data |
Typedefs | |
typedef array | buffer |
typedef int | comm_ext |
typedef int | comm_req |
typedef void | exec_fun (void *data, gs_mode mode, unsigned vn, gs_dom dom, gs_op op, unsigned transpose, const void *execdata, const struct comm *comm, char *buf) |
typedef void | fin_fun (void *data) |
Enumerations | |
enum | gs_dom { gs_double, gs_float, gs_int, gs_long, gs_dom_n } |
enum | gs_op { gs_add, gs_mul, gs_min, gs_max, gs_bpr, gs_op_n } |
enum | gs_mode { mode_plain, mode_vec, mode_many, mode_dry_run } |
enum | gs_method { gs_auto, gs_pairwise, gs_crystal_router, gs_all_reduce } |
Functions | |
void | nektar_gs (void *u, gs_dom dom, gs_op op, unsigned transpose, gs_data *gsh, buffer *buf) |
gs_data * | nektar_gs_setup (const long *id, unsigned int n, const struct comm *comm, int unique, gs_method method, int verbose) |
void | nektar_gs_free (gs_data *gsh) |
void | nektar_gs_unique (const long *id, unsigned int n, const struct comm *comm) |
static gs_data * | Init (const Nektar::Array< OneD, long > pId, const LibUtilities::CommSharedPtr &pComm) |
Initialise Gather-Scatter map. | |
static void | Unique (const Nektar::Array< OneD, long > pId, const LibUtilities::CommSharedPtr &pComm) |
Updates pId to negate all-but-one references to each universal ID. | |
static void | Finalise (gs_data *pGsh) |
Deallocates the GSLib mapping data. | |
static void | Gather (Nektar::Array< OneD, NekDouble > pU, gs_op pOp, gs_data *pGsh, Nektar::Array< OneD, NekDouble > pBuffer=NullNekDouble1DArray) |
Performs a gather-scatter operation of the provided values. |
typedef array Gs::buffer |
typedef int Gs::comm_ext |
typedef int Gs::comm_req |
enum Gs::gs_dom |
enum Gs::gs_method |
enum Gs::gs_mode |
enum Gs::gs_op |
|
inlinestatic |
Deallocates the GSLib mapping data.
Definition at line 202 of file GsLib.hpp.
References nektar_gs_free().
Referenced by Nektar::LibUtilities::SessionReader::PartitionMesh(), and Nektar::MultiRegions::GlobalLinSysXxt::~GlobalLinSysXxt().
|
inlinestatic |
Performs a gather-scatter operation of the provided values.
The
Definition at line 218 of file GsLib.hpp.
References gs_double, Gs::array::n, nektar_gs(), and Gs::array::ptr.
Referenced by Nektar::MultiRegions::PreconditionerBlock::BlockPreconditioner2D(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditioner3D(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditionerHDG(), Nektar::MultiRegions::AssemblyMapCG::CreateGraph(), Nektar::MultiRegions::AssemblyMap::UniversalAssembleBnd(), Nektar::MultiRegions::AssemblyMapDG::UniversalTraceAssemble(), Nektar::MultiRegions::PreconditionerLowEnergy::v_BuildPreconditioner(), Nektar::MultiRegions::AssemblyMapCG::v_LocalToGlobal(), Nektar::MultiRegions::AssemblyMapDG::v_UniversalAssemble(), and Nektar::MultiRegions::AssemblyMapCG::v_UniversalAssemble().
|
inlinestatic |
Initialise Gather-Scatter map.
On each process an array of IDs for each global degree of freedom is supplied which corresponds to a unique numbering of universal degrees of freedom. This is used to initialise the GSLib mapping between process- boundary degrees of freedom on different processes.
pId | Array of integers providing universal IDs for each global DOF on the process. |
pComm | Communication object used for inter-process communication. |
Definition at line 150 of file GsLib.hpp.
References ASSERTL1, Gs::comm::c, gs_auto, Gs::comm::id, nektar_gs_setup(), and Gs::comm::np.
Referenced by Nektar::MultiRegions::GlobalLinSysXxtFull::AssembleMatrixArrays(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditioner2D(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditioner3D(), Nektar::MultiRegions::PreconditionerBlock::BlockPreconditionerHDG(), Nektar::MultiRegions::AssemblyMapCG::CreateGraph(), Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalDGMap(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalTraceMap(), Nektar::MultiRegions::GlobalLinSysXxtStaticCond::v_AssembleSchurComplement(), Nektar::MultiRegions::PreconditionerLowEnergy::v_BuildPreconditioner(), and Nektar::MultiRegions::AssemblyMapCG::v_LinearSpaceMap().
void Gs::nektar_gs | ( | void * | u, |
gs_dom | dom, | ||
gs_op | op, | ||
unsigned | transpose, | ||
gs_data * | gsh, | ||
buffer * | buf | ||
) |
Referenced by Gather().
void Gs::nektar_gs_free | ( | gs_data * | gsh | ) |
Referenced by Finalise().
gs_data* Gs::nektar_gs_setup | ( | const long * | id, |
unsigned int | n, | ||
const struct comm * | comm, | ||
int | unique, | ||
gs_method | method, | ||
int | verbose | ||
) |
Referenced by Init().
void Gs::nektar_gs_unique | ( | const long * | id, |
unsigned int | n, | ||
const struct comm * | comm | ||
) |
Referenced by Unique().
|
inlinestatic |
Updates pId to negate all-but-one references to each universal ID.
The array of universal IDs corresponding to the process-local DOF are updated such that the ID of only one instance of each universal ID remains positive. This allows the consistent formulation of universally -distributed dot products, for which the contributions of each DOF must be included only once.
Definition at line 180 of file GsLib.hpp.
References ASSERTL1, Gs::comm::c, Gs::comm::id, nektar_gs_unique(), and Gs::comm::np.
Referenced by Nektar::MultiRegions::AssemblyMapCG::SetUpUniversalC0ContMap(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalDGMap(), Nektar::MultiRegions::AssemblyMapDG::SetUpUniversalTraceMap(), and Nektar::MultiRegions::AssemblyMapCG::v_LinearSpaceMap().