aGrUM 3.2.0
a C++ library for (probabilistic) graphical models
scheduledInference.cpp
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2026 by *
5 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
6 * - Christophe GONZALES(_at_AMU) *
7 * *
8 * The aGrUM/pyAgrum library is free software; you can redistribute it *
9 * and/or modify it under the terms of either : *
10 * *
11 * - the GNU Lesser General Public License as published by *
12 * the Free Software Foundation, either version 3 of the License, *
13 * or (at your option) any later version, *
14 * - the MIT license (MIT), *
15 * - or both in dual license, as here. *
16 * *
17 * (see https://agrum.gitlab.io/articles/dual-licenses-lgplv3mit.html) *
18 * *
19 * This aGrUM/pyAgrum library is distributed in the hope that it will be *
20 * useful, but WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
21 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE *
23 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
24 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
25 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
26 * OTHER DEALINGS IN THE SOFTWARE. *
27 * *
28 * See LICENCES for more details. *
29 * *
30 * SPDX-FileCopyrightText: Copyright 2005-2026 *
31 * - Pierre-Henri WUILLEMIN(_at_LIP6) *
32 * - Christophe GONZALES(_at_AMU) *
33 * SPDX-License-Identifier: LGPL-3.0-or-later OR MIT *
34 * *
35 * Contact : info_at_agrum_dot_org *
36 * homepage : http://agrum.gitlab.io *
37 * gitlab : https://gitlab.com/agrumery/agrum *
38 * *
39 ****************************************************************************/
40
41
43
44#ifdef GUM_NO_INLINE
46#endif // GUM_NO_INLINE
47
48namespace gum {
49
50 // default constructor
51 ScheduledInference::ScheduledInference(Size max_nb_threads, double max_megabyte_memory) :
52 ThreadNumberManager(max_nb_threads),
53 _scheduler_parallel_(max_nb_threads, max_megabyte_memory),
54 _scheduler_sequential_(1, max_megabyte_memory) {
55 this->setMaxMemory(max_megabyte_memory);
56
57 // for debugging purposes
58 GUM_CONSTRUCTOR(ScheduledInference);
59 }
60
61 // copy constructor
68
69 // move constructor
76
77 // copy operator
89
90 // move operator
92 if (this != &from) {
94 _scheduler_parallel_.setMaxMemory(from._scheduler_parallel_.maxMemory());
97 : 0);
98 _scheduler_sequential_.setMaxMemory(from._scheduler_sequential_.maxMemory());
99 }
100 return *this;
101 }
102
103 // virtual copy constructor
105
106 // destructor
108 // for debugging purposes
109 GUM_DESTRUCTOR(ScheduledInference);
110 }
111
112 // sets a new scheduler
113 /*
114 void ScheduledInference::setScheduler(const Scheduler& scheduler) {
115 const auto max_nb_threads = this->isGumNumberOfThreadsOverriden() ? this->getNumberOfThreads() :
116 0; const auto max_memory = _scheduler_->maxMemory();
117
118 delete _scheduler_;
119
120 _scheduler_ = scheduler.clone();
121 _scheduler_->setNumberOfThreads(max_nb_threads);
122 _scheduler_->setMaxMemory(max_memory);
123 }
124 */
125
126} // namespace gum
SchedulerParallel _scheduler_parallel_
~ScheduledInference() override
destructor
virtual ScheduledInference * clone() const
virtual copy constructor
void setMaxMemory(double megabytes)
sets an upper bound on the memory consumption admissible
SchedulerSequential _scheduler_sequential_
ScheduledInference & operator=(const ScheduledInference &from)
copy operator
ScheduledInference(Size max_nb_threads=0, double max_megabyte_memory=0.0)
default constructor
void setMaxMemory(double megabytes) final
sets an upper bound on the memory consumption admissible
void setNumberOfThreads(Size nb) final
sets the number of threads that can be used by the scheduler
void setMaxMemory(double megabytes) final
sets an upper bound on the memory consumption admissible
virtual double maxMemory() const
returns the Max memory (in megabytes) available for executing schedules
bool isGumNumberOfThreadsOverriden() const override
indicates whether the class containing this ThreadNumberManager set its own number of threads
Size getNumberOfThreads() const override
returns the current max number of threads used by the class containing this ThreadNumberManager
ThreadNumberManager(Size nb_threads=0)
default constructor
ThreadNumberManager & operator=(const ThreadNumberManager &from)
copy operator
std::size_t Size
In aGrUM, hashed values are unsigned long int.
Definition types.h:74
gum is the global namespace for all aGrUM entities
Definition agrum.h:46
STL namespace.
The class enabling flexible inferences using schedules.