SST  11.0.0
StructuralSimulationToolkit
simplepart.h
1 // Copyright 2009-2021 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-2021, 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 #ifndef SST_CORE_IMPL_PARTITONERS_SIMPLEPART_H
12 #define SST_CORE_IMPL_PARTITONERS_SIMPLEPART_H
13 
14 #include <map>
15 
16 #include "sst/core/sst_types.h"
17 #include "sst/core/sstpart.h"
18 
19 #include "sst/core/eli/elementinfo.h"
20 #include "sst/core/configGraph.h"
21 
22 namespace SST {
23 namespace IMPL {
24 namespace Partition {
25 
27 
28 public:
29 
30  SST_ELI_REGISTER_PARTITIONER(
32  "sst",
33  "simple",
34  SST_ELI_ELEMENT_VERSION(1,0,0),
35  "Simple partitioning scheme which attempts to partition on high latency links while balancing number of components per rank.")
36 
37 private:
38  RankInfo world_size;
39  uint32_t total_parts;
40 
41  RankInfo convertPartNum(uint32_t partNum) {
42  return RankInfo(partNum / world_size.thread, partNum % world_size.thread);
43  }
44 
45  void simple_partition_step(PartitionComponentMap_t& component_map,
46  ComponentId_t* setA, const int lengthA, int rankA,
47  ComponentId_t* setB, const int lengthB, int rankB,
48  std::map<ComponentId_t, std::map<ComponentId_t, SimTime_t>*> timeTable,
49  int step);
50 public:
51 
52  SimplePartitioner(RankInfo total_ranks, RankInfo my_rank, int verbosity);
54  ~SimplePartitioner() {}
55 
56  void performPartition(PartitionGraph* graph) override;
57 
58  bool requiresConfigGraph() override { return false; }
59  bool spawnOnAllRanks() override { return false; }
60 
61 };
62 
63 } // namespace partition
64 } // namespace IMPL
65 } //namespace SST
66 #endif //SST_CORE_IMPL_PARTITONERS_SIMPLERPART_H
Definition: configGraph.h:561
Definition: simplepart.h:26
Definition: rankInfo.h:21
Base class for Partitioning graphs.
Definition: sstpart.h:32
void performPartition(PartitionGraph *graph) override
Function to be overridden by subclasses.
Definition: simplepart.cc:186