Browse Source

Add openblas_set_num_threads_local() and use of blas_omp_threads_local in OMP parallel regions

tags/v0.3.27
Martin Kroeker GitHub 1 year ago
parent
commit
2e2e538b7c
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 3 deletions
  1. +1
    -0
      cblas.h
  2. +4
    -3
      common_thread.h

+ 1
- 0
cblas.h View File

@@ -12,6 +12,7 @@ extern "C" {
/*Set the number of threads on runtime.*/
void openblas_set_num_threads(int num_threads);
void goto_set_num_threads(int num_threads);
int openblas_set_num_threads_local(int num_threads);

/*Get the number of threads on runtime.*/
int openblas_get_num_threads(void);


+ 4
- 3
common_thread.h View File

@@ -137,19 +137,20 @@ typedef struct blas_queue {

extern int blas_server_avail;
extern int blas_omp_number_max;
extern int blas_omp_threads_local;

static __inline int num_cpu_avail(int level) {

#ifdef USE_OPENMP
int openmp_nthreads;
openmp_nthreads=omp_get_max_threads();
if (omp_in_parallel()) openmp_nthreads = blas_omp_threads_local;
#endif

#ifndef USE_OPENMP
if (blas_cpu_number == 1
#endif
#ifdef USE_OPENMP
if (openmp_nthreads == 1 || omp_in_parallel()
#else
if (openmp_nthreads == 1
#endif
) return 1;



Loading…
Cancel
Save