/** * \file v1.hpp * \brief * * \author * Christos Choutouridis AEM:8997 * <cchoutou@ece.auth.gr> */ #include "v1.hpp" /*! * \fn void init_workers() * * Initialize worker settings */ void init_workers() { #if defined CILK size_t cilk_w = __cilkrts_get_nworkers(); if (!session.max_threads) session.max_threads = (session.slices) ? (session.slices) : cilk_w; // else if (session.max_threads < cilk_w) // __cilkrts_set_param("nworkers", "4"); // else ignored by cilk #elif defined OMP // omp_set_dynamic(1); size_t omp_w = (size_t)omp_get_max_threads(); if (!session.max_threads) { session.max_threads = (session.slices) ? (session.slices) : omp_w; // omp_set_dynamic(1); } else if (session.max_threads < omp_w) { // omp_set_dynamic(0); omp_set_num_threads(session.max_threads); } // else ignored by omp #elif defined PTHREADS size_t pth_w = std::thread::hardware_concurrency(); if (!session.max_threads) session.max_threads = (session.slices) ? (session.slices) : pth_w; #else #endif if (!session.slices) session.slices = session.max_threads; openblas_set_num_threads(1); // Limit OpenBLAS to 1 thread }