SST 12.1.0
Structural Simulation Toolkit
linpart.h
1// Copyright 2009-2022 NTESS. Under the terms
2// of Contract DE-NA0003525 with NTESS, the U.S.
3// Government retains certain rights in this software.
4//
5// Copyright (c) 2009-2022, NTESS
6// All rights reserved.
7//
8// This file is part of the SST software package. For license
9// information, see the LICENSE file in the top level directory of the
10// distribution.
11
12#ifndef SST_CORE_IMPL_PARTITONERS_LINPART_H
13#define SST_CORE_IMPL_PARTITONERS_LINPART_H
14
15#include "sst/core/eli/elementinfo.h"
16#include "sst/core/sstpart.h"
17
18namespace SST {
19
20class Output;
21
22namespace IMPL {
23namespace Partition {
24
25/**
26Performs a linear partition scheme of an SST simulation configuration. In this
27scheme a list of components (supplied as a graph) are grouped by slicing the list
28into approximately equal parts. A "part" is generated for each MPI rank performing
29the simulation. This means Components with sequential ids will be placed close together.
30In general this scheme provides a very effective partition for most parallel
31simulations which generate man similar components of interest close together in the input
32Python configuration. It is also very fast to compute a linear partition scheme. For
33more aggressive partition schemes users should try the simple partitioner.
34*/
36{
37
38public:
39 SST_ELI_REGISTER_PARTITIONER(
41 "sst",
42 "linear",
43 SST_ELI_ELEMENT_VERSION(1,0,0),
44 "Partitions components by dividing Component ID space into roughly equal portions. "
45 "Components with sequential IDs will be placed close together.")
46
47protected:
48 /** Number of ranks in the simulation */
49 RankInfo rankcount;
50 /** Output object to print partitioning information */
52
53public:
54 /**
55 Creates a new linear partition scheme.
56 \param mpiRankCount Number of MPI ranks in the simulation
57 \param verbosity The level of information to output
58 */
59 SSTLinearPartition(RankInfo rankCount, RankInfo my_rank, int verbosity);
60
61 /**
62 Performs a partition of an SST simulation configuration
63 \param graph The simulation configuration to partition
64 */
65 void performPartition(PartitionGraph* graph) override;
66
67 bool requiresConfigGraph() override { return false; }
68 bool spawnOnAllRanks() override { return false; }
69};
70
71} // namespace Partition
72} // namespace IMPL
73} // namespace SST
74
75#endif
Performs a linear partition scheme of an SST simulation configuration.
Definition: linpart.h:36
void performPartition(PartitionGraph *graph) override
Performs a partition of an SST simulation configuration.
Definition: linpart.cc:30
SST_ELI_REGISTER_PARTITIONER(SSTLinearPartition, "sst", "linear", SST_ELI_ELEMENT_VERSION(1, 0, 0), "Partitions components by dividing Component ID space into roughly equal portions. " "Components with sequential IDs will be placed close together.") protected Output * partOutput
Number of ranks in the simulation.
Definition: linpart.h:39
Output object provides consistent method for outputting data to stdout, stderr and/or sst debug file.
Definition: output.h:52
Definition: configGraph.h:619
Base class for Partitioning graphs.
Definition: sstpart.h:32
Definition: rankInfo.h:22