change !ARMA_DONT_USE_STD_MUTEX to ARMA_USE_STD_MUTEX

This commit is contained in:
conrad
2024-05-03 14:42:42 +10:00
parent 2ee2b572ba
commit dbcbc65a00
11 changed files with 36 additions and 30 deletions
+2 -2
View File
@@ -62,7 +62,7 @@ class Cube : public BaseCube< eT, Cube<eT> >
#if defined(ARMA_USE_OPENMP)
using raw_mat_ptr_type = mat_type*;
using atomic_mat_ptr_type = mat_type*;
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
using raw_mat_ptr_type = mat_type*;
using atomic_mat_ptr_type = std::atomic<mat_type*>;
#else
@@ -72,7 +72,7 @@ class Cube : public BaseCube< eT, Cube<eT> >
atomic_mat_ptr_type* mat_ptrs = nullptr;
#if (!defined(ARMA_DONT_USE_STD_MUTEX))
#if defined(ARMA_USE_STD_MUTEX)
mutable std::mutex mat_mutex; // required for slice()
#endif
+2 -2
View File
@@ -610,7 +610,7 @@ Cube<eT>::get_mat_ptr(const uword in_slice) const
#pragma omp atomic read
mat_ptr = mat_ptrs[in_slice];
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
mat_ptr = mat_ptrs[in_slice].load();
}
@@ -635,7 +635,7 @@ Cube<eT>::get_mat_ptr(const uword in_slice) const
mat_ptrs[in_slice] = mat_ptr;
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(mat_mutex);
+5 -5
View File
@@ -1171,7 +1171,7 @@ SpMat_MapMat_val<eT>::operator=(const eT in_val)
(*this).set(in_val);
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(s_parent.cache_mutex);
@@ -1204,7 +1204,7 @@ SpMat_MapMat_val<eT>::operator+=(const eT in_val)
(*this).add(in_val);
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(s_parent.cache_mutex);
@@ -1237,7 +1237,7 @@ SpMat_MapMat_val<eT>::operator-=(const eT in_val)
(*this).sub(in_val);
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(s_parent.cache_mutex);
@@ -1268,7 +1268,7 @@ SpMat_MapMat_val<eT>::operator*=(const eT in_val)
(*this).mul(in_val);
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(s_parent.cache_mutex);
@@ -1299,7 +1299,7 @@ SpMat_MapMat_val<eT>::operator/=(const eT in_val)
(*this).div(in_val);
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(s_parent.cache_mutex);
+1 -1
View File
@@ -694,7 +694,7 @@ class SpMat : public SpBase< eT, SpMat<eT> >
// 1: CSC needs to be updated from cache (ie. cache has more recent data)
// 2: no update required (ie. CSC and cache contain the same data)
#if (!defined(ARMA_DONT_USE_STD_MUTEX))
#if defined(ARMA_USE_STD_MUTEX)
arma_aligned mutable std::mutex cache_mutex;
#endif
+4 -4
View File
@@ -4445,7 +4445,7 @@ SpMat<eT>::reset_cache()
sync_state = 0;
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
const std::lock_guard<std::mutex> lock(cache_mutex);
@@ -5062,7 +5062,7 @@ SpMat<eT>::init(const SpMat<eT>& x)
init_done = true;
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
if(x.sync_state == 1)
{
const std::lock_guard<std::mutex> lock(x.cache_mutex);
@@ -6659,7 +6659,7 @@ SpMat<eT>::sync_cache() const
}
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
if(sync_state == 0)
{
@@ -6710,7 +6710,7 @@ SpMat<eT>::sync_csc() const
sync_csc_simple();
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
if(sync_state == 1)
{
const std::lock_guard<std::mutex> lock(cache_mutex);
+1 -1
View File
@@ -181,7 +181,7 @@ struct arma_config
#endif
#if (!defined(ARMA_DONT_USE_STD_MUTEX))
#if defined(ARMA_USE_STD_MUTEX)
static constexpr bool std_mutex = true;
#else
static constexpr bool std_mutex = false;
+3 -3
View File
@@ -280,7 +280,7 @@ struct state_type
{
#if defined(ARMA_USE_OPENMP)
int state;
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
std::atomic<int> state;
#else
int state;
@@ -299,7 +299,7 @@ struct state_type
#if defined(ARMA_USE_OPENMP)
#pragma omp atomic read
out = state;
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
out = state.load();
#else
out = state;
@@ -315,7 +315,7 @@ struct state_type
#if defined(ARMA_USE_OPENMP)
#pragma omp atomic write
state = in_state;
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
state.store(in_state);
#else
state = in_state;
+1 -1
View File
@@ -74,7 +74,7 @@
#define ARMA_GUARD_PRODUCER
#endif
#if (defined(ARMA_DONT_GUARD_PRODUCER) || defined(ARMA_DONT_USE_STD_MUTEX))
#if (defined(ARMA_DONT_GUARD_PRODUCER) || (!defined(ARMA_USE_STD_MUTEX)))
#undef ARMA_GUARD_PRODUCER
#endif
+8 -5
View File
@@ -139,6 +139,11 @@
//// Note that ARMA_USE_OPENMP is automatically enabled when a compiler supporting OpenMP 3.1 is detected.
#endif
#if !defined(ARMA_USE_STD_MUTEX)
#define ARMA_USE_STD_MUTEX
//// Comment out the above line to disable use of std::mutex
#endif
#if !defined(ARMA_64BIT_WORD)
// #define ARMA_64BIT_WORD
//// Uncomment the above line if you require matrices/vectors capable of holding more than 4 billion elements.
@@ -282,17 +287,15 @@
#undef ARMA_USE_FORTRAN_HIDDEN_ARGS
#endif
#if !defined(ARMA_DONT_USE_STD_MUTEX)
// #define ARMA_DONT_USE_STD_MUTEX
//// Uncomment the above line to disable use of std::mutex
#if defined(ARMA_DONT_USE_STD_MUTEX)
#undef ARMA_USE_STD_MUTEX
#endif
// for compatibility with earlier versions of Armadillo
#if defined(ARMA_DONT_USE_CXX11_MUTEX)
#pragma message ("WARNING: support for ARMA_DONT_USE_CXX11_MUTEX is deprecated and will be removed;")
#pragma message ("WARNING: use ARMA_DONT_USE_STD_MUTEX instead")
#undef ARMA_DONT_USE_STD_MUTEX
#define ARMA_DONT_USE_STD_MUTEX
#undef ARMA_USE_STD_MUTEX
#endif
#if defined(ARMA_DONT_USE_OPENMP)
+8 -5
View File
@@ -139,6 +139,11 @@
//// Note that ARMA_USE_OPENMP is automatically enabled when a compiler supporting OpenMP 3.1 is detected.
#endif
#if !defined(ARMA_USE_STD_MUTEX)
#define ARMA_USE_STD_MUTEX
//// Comment out the above line to disable use of std::mutex
#endif
#if !defined(ARMA_64BIT_WORD)
// #define ARMA_64BIT_WORD
//// Uncomment the above line if you require matrices/vectors capable of holding more than 4 billion elements.
@@ -282,17 +287,15 @@
#undef ARMA_USE_FORTRAN_HIDDEN_ARGS
#endif
#if !defined(ARMA_DONT_USE_STD_MUTEX)
// #define ARMA_DONT_USE_STD_MUTEX
//// Uncomment the above line to disable use of std::mutex
#if defined(ARMA_DONT_USE_STD_MUTEX)
#undef ARMA_USE_STD_MUTEX
#endif
// for compatibility with earlier versions of Armadillo
#if defined(ARMA_DONT_USE_CXX11_MUTEX)
#pragma message ("WARNING: support for ARMA_DONT_USE_CXX11_MUTEX is deprecated and will be removed;")
#pragma message ("WARNING: use ARMA_DONT_USE_STD_MUTEX instead")
#undef ARMA_DONT_USE_STD_MUTEX
#define ARMA_DONT_USE_STD_MUTEX
#undef ARMA_USE_STD_MUTEX
#endif
#if defined(ARMA_DONT_USE_OPENMP)
+1 -1
View File
@@ -82,7 +82,7 @@ class fft_engine_fftw3
fftw3_plan = fftw3::plan_dft_1d<cx_type>(N, X_work.memptr(), Y_work.memptr(), fftw3_sign, fftw3_flags);
}
}
#elif (!defined(ARMA_DONT_USE_STD_MUTEX))
#elif defined(ARMA_USE_STD_MUTEX)
{
// NOTE: the static std::mutex approach is a "better-than-nothing" solution;
// NOTE: the mutex declaration is only common across instances of the same fft_engine_fftw3<cx_type,bool> class type;