Browse Source

Merge pull request #3936 from martin-frbg/issue3933

Observe any stricter (OpenMP) thread count limit imposed by openblas_set_num_threads()
tags/v0.3.22^2
Martin Kroeker GitHub 2 years ago
parent
commit
19d6795122
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 1 deletions
  1. +6
    -1
      common_thread.h
  2. +2
    -0
      driver/others/blas_server_omp.c
  3. +4
    -0
      driver/others/memory.c
  4. +1
    -0
      driver/others/memory_qalloc.c

+ 6
- 1
common_thread.h View File

@@ -53,6 +53,7 @@ extern void goto_set_num_threads(int nthreads);
/* Global Parameter */
extern int blas_cpu_number;
extern int blas_num_threads;
extern int blas_num_threads_set;
extern int blas_omp_linked;

#define BLAS_LEGACY 0x8000U
@@ -137,9 +138,13 @@ typedef struct blas_queue {
extern int blas_server_avail;

static __inline int num_cpu_avail(int level) {
int openmp_nthreads;

#ifdef USE_OPENMP
int openmp_nthreads=omp_get_max_threads();
if (blas_num_threads_set == 0)
openmp_nthreads=omp_get_max_threads();
else
openmp_nthreads=blas_cpu_number;
#endif

#ifndef USE_OPENMP


+ 2
- 0
driver/others/blas_server_omp.c View File

@@ -100,6 +100,8 @@ static void adjust_thread_buffers() {

void goto_set_num_threads(int num_threads) {

blas_num_threads_set = 1;
if (num_threads < 0) blas_num_threads_set = 0;
if (num_threads < 1) num_threads = blas_num_threads;

if (num_threads > MAX_CPU_NUMBER) num_threads = MAX_CPU_NUMBER;


+ 4
- 0
driver/others/memory.c View File

@@ -422,6 +422,8 @@ This value is equal or large than blas_cpu_number. This means some threads are s
*/
int blas_num_threads = 0;

int blas_num_threads_set = 0;

int goto_get_num_procs (void) {
return blas_cpu_number;
}
@@ -1994,6 +1996,8 @@ This value is equal or large than blas_cpu_number. This means some threads are s
*/
int blas_num_threads = 0;

int blas_num_threads_set = 0;

int goto_get_num_procs (void) {
return blas_cpu_number;
}


+ 1
- 0
driver/others/memory_qalloc.c View File

@@ -283,6 +283,7 @@ The numbers of threads in the thread pool.
This value is equal or large than blas_cpu_number. This means some threads are sleep.
*/
int blas_num_threads = 0;
int blas_num_threads_set = 0;

int goto_get_num_procs (void) {
return blas_cpu_number;


Loading…
Cancel
Save