diff --git a/driver/others/blas_server_omp.c b/driver/others/blas_server_omp.c index 4d3d1e0de..f6dbeaaf1 100644 --- a/driver/others/blas_server_omp.c +++ b/driver/others/blas_server_omp.c @@ -48,6 +48,7 @@ #else +#include #ifndef likely #ifdef __GNUC__ #define likely(x) __builtin_expect(!!(x), 1) @@ -158,6 +159,9 @@ int BLASFUNC(blas_thread_shutdown)(void){ } } } +#if defined(_OPENMP) && _OPENMP >= 201811 + omp_pause_resource_all(omp_pause_hard); +#endif return 0; } diff --git a/utest/Makefile b/utest/Makefile index 0e3f2b8a7..a9242baec 100644 --- a/utest/Makefile +++ b/utest/Makefile @@ -44,10 +44,7 @@ endif #this does not work with OpenMP nor with native Windows or Android threads # FIXME TBD if this works on OSX, SunOS, POWER and zarch ifeq ($(OSNAME), $(filter $(OSNAME),Linux CYGWIN_NT)) -ifneq ($(USE_OPENMP), 1) -OBJS += test_fork.o -endif -OBJS += test_post_fork.o +OBJS += test_fork.o test_post_fork.o endif ifeq ($(C_COMPILER), PGI) diff --git a/utest/test_fork.c b/utest/test_fork.c index bd531e7fb..b1cd380e6 100644 --- a/utest/test_fork.c +++ b/utest/test_fork.c @@ -64,7 +64,7 @@ static void check_dgemm(double *a, double *b, double *result, double *expected, CTEST(fork, safety) { -#ifndef BUILD_DOUBLE +#if !defined(BUILD_DOUBLE) || (defined(_OPENMP) && _OPENMP < 201811) exit(0); #else blasint n = 1000;