From ff6437f2d7954530ca8cd74fb4ea98631ff83398 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Sat, 11 Nov 2023 21:30:32 +0100 Subject: [PATCH] Add workaround for omp_get_max_threads hanging on FreeBSD with libomp from LLVM14 --- driver/others/blas_server_omp.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/driver/others/blas_server_omp.c b/driver/others/blas_server_omp.c index 3e2179373..fcc0d68ad 100644 --- a/driver/others/blas_server_omp.c +++ b/driver/others/blas_server_omp.c @@ -124,9 +124,18 @@ void openblas_set_num_threads(int num_threads) { } int blas_thread_init(void){ - if(blas_omp_number_max <= 0) - blas_omp_number_max = omp_get_max_threads(); - + +#if defined(__FreeBSD__) && defined(__clang__) +extern int openblas_omp_num_threads_env(); + + if(blas_omp_number_max <= 0) + blas_omp_number_max= openblas_omp_num_threads_env(); + if (blas_omp_number_max <= 0) + blas_omp_number_max=MAX_CPU_NUMBER; +#else + blas_omp_number_max = /omp_get_max_threads(); +#endif + blas_get_cpu_number(); adjust_thread_buffers();