Blaze 3.9
Functions.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_SMP_OPENMP_FUNCTIONS_H_
36#define _BLAZE_MATH_SMP_OPENMP_FUNCTIONS_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
43#include <omp.h>
45#include <blaze/system/Inline.h>
46#include <blaze/system/SMP.h>
48#include <blaze/util/Types.h>
49
50
51namespace blaze {
52
53//=================================================================================================
54//
55// SMP UTILITY FUNCTIONS
56//
57//=================================================================================================
58
59//*************************************************************************************************
71{
72 return omp_get_max_threads();
73}
75//*************************************************************************************************
76
77
78//*************************************************************************************************
91BLAZE_ALWAYS_INLINE void setNumThreads( size_t number )
92{
93 if( number == 0UL ) {
94 BLAZE_THROW_INVALID_ARGUMENT( "Invalid number of threads" );
95 }
96
97 omp_set_num_threads( static_cast<int>( number ) );
98}
100//*************************************************************************************************
101
102
103//*************************************************************************************************
129{}
131//*************************************************************************************************
132
133
134
135
136//=================================================================================================
137//
138// COMPILE TIME CONSTRAINTS
139//
140//=================================================================================================
141
142//*************************************************************************************************
144namespace {
145
147
148}
150//*************************************************************************************************
151
152} // namespace blaze
153
154#endif
Compile time assertion.
BLAZE_ALWAYS_INLINE size_t getNumThreads()
Returns the number of threads used for thread parallel operations.
Definition: Functions.h:77
BLAZE_ALWAYS_INLINE void setNumThreads(size_t number)
Sets the number of threads to be used for thread parallel operations.
Definition: Functions.h:97
BLAZE_ALWAYS_INLINE void shutDownThreads()
Provides a reliable shutdown of C++11 threads for Visual Studio compilers.
Definition: Functions.h:128
#define BLAZE_STATIC_ASSERT(expr)
Compile time assertion macro.
Definition: StaticAssert.h:112
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
#define BLAZE_OPENMP_PARALLEL_MODE
Compilation switch for the OpenMP parallelization.
Definition: SMP.h:68
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.
Definition: Exception.h:235
Header file for the exception macros of the math module.
System settings for the inline keywords.
System settings for the shared-memory parallelization.
Header file for basic type definitions.