Skip to content

Commit 6e69b80

Browse files
committed
#5: LB: move work model and configuration to separate files
1 parent 48ce3bb commit 6e69b80

File tree

4 files changed

+565
-301
lines changed

4 files changed

+565
-301
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
//@HEADER
3+
// *****************************************************************************
4+
//
5+
// configuration.h
6+
// DARMA/vt-lb => Virtual Transport/Load Balancers
7+
//
8+
// Copyright 2019-2024 National Technology & Engineering Solutions of Sandia, LLC
9+
// (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S.
10+
// Government retains certain rights in this software.
11+
//
12+
// Redistribution and use in source and binary forms, with or without
13+
// modification, are permitted provided that the following conditions are met:
14+
//
15+
// * Redistributions of source code must retain the above copyright notice,
16+
// this list of conditions and the following disclaimer.
17+
//
18+
// * Redistributions in binary form must reproduce the above copyright notice,
19+
// this list of conditions and the following disclaimer in the documentation
20+
// and/or other materials provided with the distribution.
21+
//
22+
// * Neither the name of the copyright holder nor the names of its
23+
// contributors may be used to endorse or promote products derived from this
24+
// software without specific prior written permission.
25+
//
26+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27+
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28+
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29+
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30+
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31+
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32+
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33+
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34+
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35+
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36+
// POSSIBILITY OF SUCH DAMAGE.
37+
//
38+
// Questions? Contact [email protected]
39+
//
40+
// *****************************************************************************
41+
//@HEADER
42+
*/
43+
44+
#if !defined INCLUDED_VT_LB_ALGO_TEMPEREDLB_CONFIGURATION_H
45+
#define INCLUDED_VT_LB_ALGO_TEMPEREDLB_CONFIGURATION_H
46+
47+
#include <vt-lb/algo/temperedlb/work_model.h>
48+
49+
#include <cmath>
50+
51+
namespace vt_lb::algo::temperedlb {
52+
53+
struct Configuration {
54+
Configuration() = default;
55+
56+
explicit Configuration(int num_ranks) {
57+
f_ = 2;
58+
k_max_ = std::ceil(std::sqrt(std::log(num_ranks)/std::log(2.0)));
59+
}
60+
61+
bool hasMemoryInfo() const { return work_model_.has_memory_info; }
62+
bool hasTaskSerializedMemoryInfo() const {
63+
return hasMemoryInfo() && work_model_.has_task_serialized_memory_info;
64+
}
65+
bool hasTaskWorkingMemoryInfo() const {
66+
return hasMemoryInfo() && work_model_.has_task_working_memory_info;
67+
}
68+
bool hasTaskFootprintMemoryInfo() const {
69+
return hasMemoryInfo() && work_model_.has_task_footprint_memory_info;
70+
}
71+
bool hasSharedBlockMemoryInfo() const {
72+
return hasMemoryInfo() && work_model_.has_shared_block_memory_info;
73+
}
74+
75+
/// @brief Number of trials to perform
76+
int num_trials_ = 1;
77+
/// @brief Number of iterations per trial
78+
int num_iters_ = 10;
79+
/// @brief Fanout for information propagation
80+
int f_ = 2;
81+
/// @brief Number of rounds of information propagation
82+
int k_max_ = 1;
83+
/// @brief Whether to use deterministic selection
84+
bool deterministic_ = true;
85+
/// @brief Seed for random number generation when deterministic_ is true
86+
int seed_ = 29;
87+
88+
/// @brief Work model parameters (rank-alpha, beta, gamma, delta)
89+
WorkModel work_model_;
90+
91+
/// @brief Whether to cluster based on shared blocks
92+
bool cluster_based_on_shared_blocks_ = false;
93+
/// @brief Whether to cluster based on communication
94+
bool cluster_based_on_communication_ = false;
95+
/// @brief Whether to visualize the task graph
96+
bool visualize_task_graph_ = false;
97+
/// @brief Whether to visualize the clusters
98+
bool visualize_clusters_ = false;
99+
100+
/// @brief Tolerance for convergence
101+
double converge_tolerance_ = 0.01;
102+
};
103+
104+
}
105+
106+
#endif /*INCLUDED_VT_LB_ALGO_TEMPEREDLB_CONFIGURATION_H*/

0 commit comments

Comments
 (0)