SST 15.0
Structural Simulation Toolkit
linpart.h
1// Copyright 2009-2025 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-2025, 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 {
19class Output;
20}
21
22namespace SST::IMPL::Partition {
23
24/**
25Performs a linear partition scheme of an SST simulation configuration. In this
26scheme a list of components (supplied as a graph) are grouped by slicing the list
27into approximately equal parts. A "part" is generated for each MPI rank performing
28the simulation. This means Components with sequential ids will be placed close together.
29In general this scheme provides a very effective partition for most parallel
30simulations which generate man similar components of interest close together in the input
31Python configuration. It is also very fast to compute a linear partition scheme. For
32more aggressive partition schemes users should try the simple partitioner.
33*/
35{
36
37public:
38 SST_ELI_REGISTER_PARTITIONER(
40 "sst",
41 "linear",
42 SST_ELI_ELEMENT_VERSION(1,0,0),
43 "Partitions components by dividing Component ID space into roughly equal portions. "
44 "Components with sequential IDs will be placed close together.")
45
46protected:
47 /** Number of ranks in the simulation */
48 RankInfo rankcount;
49 /** Output object to print partitioning information */
51
52public:
53 /**
54 Creates a new linear partition scheme.
55 \param mpiRankCount Number of MPI ranks in the simulation
56 \param verbosity The level of information to output
57 */
58 SSTLinearPartition(RankInfo rankCount, RankInfo my_rank, int verbosity);
59
60 /**
61 Performs a partition of an SST simulation configuration
62 \param graph The simulation configuration to partition
63 */
64 void performPartition(PartitionGraph* graph) override;
65
66 bool requiresConfigGraph() override { return false; }
67 bool spawnOnAllRanks() override { return false; }
68};
69
70} // namespace SST::IMPL::Partition
71
72#endif
SSTLinearPartition(RankInfo rankCount, RankInfo my_rank, int verbosity)
Creates a new linear partition scheme.
Definition linpart.cc:24
void performPartition(PartitionGraph *graph) override
Performs a partition of an SST simulation configuration.
Definition linpart.cc:31
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:38
Output object provides consistent method for outputting data to stdout, stderr and/or sst debug file.
Definition output.h:54
Definition configGraph.h:692
Base class for Partitioning graphs.
Definition sstpart.h:32
Definition rankInfo.h:24