1+ /*
2+ //@HEADER
3+ // *****************************************************************************
4+ //
5+ // driver.cc
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_DRIVER_DRIVER_IMPL_H
45+ #define INCLUDED_VT_LB_ALGO_DRIVER_DRIVER_IMPL_H
46+
47+ #include < vt-lb/algo/temperedlb/temperedlb.h>
48+ #include " vt-lb/algo/driver/driver.h"
49+
50+ namespace vt_lb {
51+
52+ template <typename CommT, typename ConfigT>
53+ void runLB (DriverAlgoEnum algo, CommT& comm, ConfigT config, std::unique_ptr<model::PhaseData> phase_data) {
54+ switch (algo) {
55+ case DriverAlgoEnum::None:
56+ // No load balancing
57+ break ;
58+ case DriverAlgoEnum::TemperedLB:
59+ {
60+ // Run TemperedLB algorithm
61+ auto lb = std::make_unique<algo::temperedlb::TemperedLB<CommT>>(comm, config);
62+ lb->makeHandle ();
63+ lb->inputData (std::move (phase_data));
64+ lb->run ();
65+ }
66+ break ;
67+ default :
68+ throw std::runtime_error (" Invalid load balancer algorithm" );
69+ }
70+ }
71+
72+ } /* end namespace vt_lb */
73+
74+ #endif /* INCLUDED_VT_LB_ALGO_DRIVER_DRIVER_IMPL_H*/
0 commit comments