Make thread safety tests available to CMAKE and support running only the GEMV versiontags/v0.3.11^2
| @@ -29,6 +29,8 @@ option(NO_AFFINITY "Disable support for CPU affinity masks to avoid binding proc | |||||
| else() | else() | ||||
| set(NO_AFFINITY 1) | set(NO_AFFINITY 1) | ||||
| endif() | endif() | ||||
| option(CPP_THREAD_SAFETY_TEST "Run a massively parallel DGEMM test to confirm thread safety of the library (requires OpenMP and about 1.3GB of RAM)" OFF) | |||||
| option(CPP_THREAD_SAFETY_GEMV "Run a massively parallel DGEMV test to confirm thread safety of the library (requires OpenMP)" OFF) | |||||
| # Add a prefix or suffix to all exported symbol names in the shared library. | # Add a prefix or suffix to all exported symbol names in the shared library. | ||||
| # Avoids conflicts with other BLAS libraries, especially when using | # Avoids conflicts with other BLAS libraries, especially when using | ||||
| @@ -234,6 +236,9 @@ if (NOT MSVC AND NOT NOFORTRAN) | |||||
| add_subdirectory(ctest) | add_subdirectory(ctest) | ||||
| endif() | endif() | ||||
| add_subdirectory(lapack-netlib/TESTING) | add_subdirectory(lapack-netlib/TESTING) | ||||
| if (CPP_THREAD_SAFETY_TEST OR CPP_THREAD_SAFETY_GEMV) | |||||
| add_subdirectory(cpp_thread_test) | |||||
| endif() | |||||
| endif() | endif() | ||||
| set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES | set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES | ||||
| @@ -146,6 +146,9 @@ ifneq ($(NO_CBLAS), 1) | |||||
| ifeq ($(CPP_THREAD_SAFETY_TEST), 1) | ifeq ($(CPP_THREAD_SAFETY_TEST), 1) | ||||
| $(MAKE) -C cpp_thread_test all | $(MAKE) -C cpp_thread_test all | ||||
| endif | endif | ||||
| ifeq ($(CPP_THREAD_SAFETY_GEMV), 1) | |||||
| $(MAKE) -C cpp_thread_test dgemv_tester | |||||
| endif | |||||
| endif | endif | ||||
| endif | endif | ||||
| @@ -272,6 +272,9 @@ COMMON_PROF = -pg | |||||
| # work at all. | # work at all. | ||||
| # | # | ||||
| # CPP_THREAD_SAFETY_TEST = 1 | # CPP_THREAD_SAFETY_TEST = 1 | ||||
| # | |||||
| # use this to run only the less memory-hungry GEMV test | |||||
| # CPP_THREAD_SAFETY_GEMV = 1 | |||||
| # If you want to enable the experimental BFLOAT16 support | # If you want to enable the experimental BFLOAT16 support | ||||
| @@ -0,0 +1,23 @@ | |||||
| include_directories(${PROJECT_SOURCE_DIR}) | |||||
| include_directories(${PROJECT_BINARY_DIR}) | |||||
| enable_language(CXX) | |||||
| set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DADD${BU} -DCBLAS") | |||||
| if (USE_OPENMP) | |||||
| if (CPP_THREAD_SAFETY_TEST) | |||||
| message(STATUS building thread safety test) | |||||
| add_executable(dgemm_thread_safety dgemm_thread_safety.cpp) | |||||
| target_link_libraries(dgemm_thread_safety ${OpenBLAS_LIBNAME}) | |||||
| add_test( dgemm_thread_safety ${CMAKE_CURRENT_BINARY_DIR}/dgemm_thread_safety) | |||||
| endif() | |||||
| if (CPP_THREAD_SAFETY_TEST OR CPP_THREAD_SAFETY_GEMV) | |||||
| add_executable(dgemv_thread_safety dgemv_thread_safety.cpp) | |||||
| target_link_libraries(dgemv_thread_safety ${OpenBLAS_LIBNAME}) | |||||
| add_test(dgemv_thread_safety ${CMAKE_CURRENT_BINARY_DIR}/dgemv_thread_safety) | |||||
| endif() | |||||
| endif() | |||||