for calling from concurrent threadstags/v0.3.7
| @@ -56,7 +56,13 @@ VERSION = 0.3.7.dev | |||||
| # specify it. | # specify it. | ||||
| # For force setting for single threaded, specify USE_THREAD = 0 | # For force setting for single threaded, specify USE_THREAD = 0 | ||||
| # For force setting for multi threaded, specify USE_THREAD = 1 | # For force setting for multi threaded, specify USE_THREAD = 1 | ||||
| # USE_THREAD = 0 | |||||
| USE_THREAD = 0 | |||||
| # If you want to build a single-threaded OpenBLAS, but expect to call this | |||||
| # from several concurrent threads in some other program, comment this in for | |||||
| # thread safety. (This is done automatically for USE_THREAD=1 , and should not | |||||
| # be necessary when USE_OPENMP=1) | |||||
| # USE_LOCKING = 1 | |||||
| # If you're going to use this library with OpenMP, please comment it in. | # If you're going to use this library with OpenMP, please comment it in. | ||||
| # This flag is always set for POWER8. Don't set USE_OPENMP = 0 if you're targeting POWER8. | # This flag is always set for POWER8. Don't set USE_OPENMP = 0 if you're targeting POWER8. | ||||
| @@ -220,7 +226,7 @@ NO_AFFINITY = 1 | |||||
| COMMON_PROF = -pg | COMMON_PROF = -pg | ||||
| # Build Debug version | # Build Debug version | ||||
| # DEBUG = 1 | |||||
| DEBUG = 1 | |||||
| # Set maximum stack allocation. | # Set maximum stack allocation. | ||||
| # The default value is 2048. 0 disable stack allocation a may reduce GER and GEMV | # The default value is 2048. 0 disable stack allocation a may reduce GER and GEMV | ||||
| @@ -237,6 +237,10 @@ SMP = 1 | |||||
| endif | endif | ||||
| endif | endif | ||||
| ifeq ($(SMP), 1) | |||||
| USE_LOCKING = | |||||
| endif | |||||
| ifndef NEED_PIC | ifndef NEED_PIC | ||||
| NEED_PIC = 1 | NEED_PIC = 1 | ||||
| endif | endif | ||||
| @@ -388,6 +392,12 @@ ifneq ($(MAX_STACK_ALLOC), 0) | |||||
| CCOMMON_OPT += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC) | CCOMMON_OPT += -DMAX_STACK_ALLOC=$(MAX_STACK_ALLOC) | ||||
| endif | endif | ||||
| ifdef USE_LOCKING | |||||
| ifneq ($(USE_LOCKING), 0) | |||||
| CCOMMON_OPT += -DUSE_LOCKING | |||||
| endif | |||||
| endif | |||||
| # | # | ||||
| # Architecture dependent settings | # Architecture dependent settings | ||||
| # | # | ||||
| @@ -744,6 +754,8 @@ CCOMMON_OPT += -DF_INTERFACE_GFORT | |||||
| FCOMMON_OPT += -Wall | FCOMMON_OPT += -Wall | ||||
| # make single-threaded LAPACK calls thread-safe #1847 | # make single-threaded LAPACK calls thread-safe #1847 | ||||
| FCOMMON_OPT += -frecursive | FCOMMON_OPT += -frecursive | ||||
| # work around ABI changes in gfortran 9 that break calls from C code | |||||
| FCOMMON_OPT += -fno-optimize-sibling-calls | |||||
| #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc | #Don't include -lgfortran, when NO_LAPACK=1 or lsbcc | ||||
| ifneq ($(NO_LAPACK), 1) | ifneq ($(NO_LAPACK), 1) | ||||
| EXTRALIB += -lgfortran | EXTRALIB += -lgfortran | ||||
| @@ -131,7 +131,7 @@ extern "C" { | |||||
| #include <time.h> | #include <time.h> | ||||
| #include <unistd.h> | #include <unistd.h> | ||||
| #include <math.h> | #include <math.h> | ||||
| #ifdef SMP | |||||
| #if defined(SMP) || defined(USE_LOCKING) | |||||
| #include <pthread.h> | #include <pthread.h> | ||||
| #endif | #endif | ||||
| #endif | #endif | ||||
| @@ -200,7 +200,7 @@ extern "C" { | |||||
| #error "You can't specify both LOCK operation!" | #error "You can't specify both LOCK operation!" | ||||
| #endif | #endif | ||||
| #ifdef SMP | |||||
| #if defined(SMP) || defined(USE_LOCKING) | |||||
| #define USE_PTHREAD_LOCK | #define USE_PTHREAD_LOCK | ||||
| #undef USE_PTHREAD_SPINLOCK | #undef USE_PTHREAD_SPINLOCK | ||||
| #endif | #endif | ||||