aGrUM 2.3.2
a C++ library for (probabilistic) graphical models
threadsOMP.h
Go to the documentation of this file.
1/****************************************************************************
2 * This file is part of the aGrUM/pyAgrum library. *
3 * *
4 * Copyright (c) 2005-2025 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-2025 *
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
47
48#ifndef GUM_THREADS_OPEMMP_H
49#define GUM_THREADS_OPEMMP_H
50
51#ifdef _OPENMP
52# include <omp.h>
53#endif
54
55#include <thread>
56#include <utility>
57#include <vector>
58
59#include <agrum/agrum.h>
60
61namespace gum {
62
63 namespace threadsOMP {
64
70 bool hasOMPSupport();
71
84 unsigned int getMaxNumberOfThreads();
85
98 unsigned int getNumberOfThreads();
99
105 unsigned int getNumberOfLogicalProcessors();
106
116 void setNumberOfThreads(unsigned int number);
117
125 unsigned int getThreadNumber();
126
134 unsigned int getNumberOfRunningThreads();
135
148 void setNestedParallelism(bool value);
149
156
169 void setDynamicThreadsNumber(bool value);
170
178
179
180 } /* namespace threadsOMP */
181
182} // namespace gum
183
184// include the inlined functions if necessary
185#ifndef GUM_NO_INLINE
187#endif /* GUM_NO_INLINE */
188
189#endif // GUM_THREADS_OPENMP_H
unsigned int getMaxNumberOfThreads()
Returns the maximum number of threads that should be used at any time.
bool getDynamicThreadsNumber()
Get the dynamic thread number adjustment status.
unsigned int getNumberOfRunningThreads()
Get the current number of running threads.
unsigned int getNumberOfLogicalProcessors()
Get the number of logical processors.
void setDynamicThreadsNumber(bool value)
Set the dynamic threads number (false by default).
bool getNestedParallelism()
Get nested parallelism status.
void setNestedParallelism(bool value)
Set nested parallelism (false bu default).
unsigned int getThreadNumber()
Get the calling thread id.
bool hasOMPSupport()
Is OMP active ?
void setNumberOfThreads(unsigned int number)
Set the number of threads to be used when entering the next parallel region.
unsigned int getNumberOfThreads()
returns the max number of threads used by default when entering the next parallel region
gum is the global namespace for all aGrUM entities
Definition agrum.h:46
OpenMP wrappers implementation.