Fix typos and use CMake OpenMP support.

This commit is contained in:
Sacha Refshauge 2017-08-17 17:27:01 +10:00
parent 7c1acc07f0
commit 6aac06587d
3 changed files with 42 additions and 53 deletions

View File

@ -3,14 +3,12 @@
## ##
cmake_minimum_required(VERSION 2.8.5) cmake_minimum_required(VERSION 2.8.5)
project(OpenBLAS C) project(OpenBLAS C ASM)
set(OpenBLAS_MAJOR_VERSION 0) set(OpenBLAS_MAJOR_VERSION 0)
set(OpenBLAS_MINOR_VERSION 3) set(OpenBLAS_MINOR_VERSION 3)
set(OpenBLAS_PATCH_VERSION 0.dev) set(OpenBLAS_PATCH_VERSION 0.dev)
set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}") set(OpenBLAS_VERSION "${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.${OpenBLAS_PATCH_VERSION}")
enable_language(ASM)
# Adhere to GNU filesystem layout conventions # Adhere to GNU filesystem layout conventions
include(GNUInstallDirs) include(GNUInstallDirs)
@ -176,6 +174,11 @@ add_subdirectory(utest)
if (USE_THREAD) if (USE_THREAD)
# Add threading library to linker # Add threading library to linker
find_package(Threads) find_package(Threads)
if (THREADS_HAVE_PTHREAD_ARG)
set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY COMPILE_OPTIONS "-pthread")
set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
endif()
message("PTHREAD: ${CMAKE_THREAD_LIBS_INIT}")
target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT})
endif() endif()
@ -231,6 +234,7 @@ install(TARGETS ${OpenBLAS_LIBNAME}
install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install (FILES ${CMAKE_BINARY_DIR}/openblas_config.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
if(NOT NOFORTRAN)
message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}") message(STATUS "Generating f77blas.h in ${CMAKE_INSTALL_INCLUDEDIR}")
file(WRITE ${CMAKE_BINARY_DIR}/f77blas.h "") file(WRITE ${CMAKE_BINARY_DIR}/f77blas.h "")
@ -239,6 +243,7 @@ install(TARGETS ${OpenBLAS_LIBNAME}
file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "${COMMON_INTERFACE_H_CONTENTS}") file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "${COMMON_INTERFACE_H_CONTENTS}")
file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#endif") file(APPEND ${CMAKE_BINARY_DIR}/f77blas.h "#endif")
install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install (FILES ${CMAKE_BINARY_DIR}/f77blas.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
endif()
if(NOT NO_CBLAS) if(NOT NO_CBLAS)
message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}") message (STATUS "Generating cblas.h in ${CMAKE_INSTALL_INCLUDEDIR}")

View File

@ -33,31 +33,14 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
endif () endif ()
if (USE_OPENMP) if (USE_OPENMP)
# USE_SIMPLE_THREADED_LEVEL3 = 1
if (${CMAKE_C_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_C_COMPILER_ID} STREQUAL "LSB") # NO_AFFINITY = 1
set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp") find_package(OpenMP)
endif () if (OpenMP_FOUND)
set(CCOMMON_OPT "${CCOMMON_OPT} ${OpenMP_C_FLAGS} -DUSE_OPENMP")
if (${CMAKE_C_COMPILER_ID} STREQUAL "Clang") set(FCOMMON_OPT "${FCOMMON_OPT} ${OpenMP_Fortran_FLAGS}")
message(WARNING "Clang doesn't support OpenMP yet.") elseif (UNIX)
set(CCOMMON_OPT "${CCOMMON_OPT} -fopenmp") set(USE_OPENMP 0)
endif ()
if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
set(CCOMMON_OPT "${CCOMMON_OPT} -openmp")
endif ()
if (${CMAKE_C_COMPILER_ID} STREQUAL "PGI")
set(CCOMMON_OPT "${CCOMMON_OPT} -mp")
endif ()
if (${CMAKE_C_COMPILER_ID} STREQUAL "OPEN64")
set(CCOMMON_OPT "${CCOMMON_OPT} -mp")
set(CEXTRALIB "${CEXTRALIB} -lstdc++")
endif ()
if (${CMAKE_C_COMPILER_ID} STREQUAL "PATHSCALE")
set(CCOMMON_OPT "${CCOMMON_OPT} -mp")
endif() endif()
endif () endif ()

View File

@ -27,7 +27,7 @@ if (DEFINED BINARY AND DEFINED TARGET AND BINARY EQUAL 32)
endif () endif ()
if (DEFINED TARGET) if (DEFINED TARGET)
message(STATUS "Targetting the ${TARGET} architecture.") message(STATUS "Targeting the ${TARGET} architecture.")
set(GETARCH_FLAGS "-DFORCE_${TARGET}") set(GETARCH_FLAGS "-DFORCE_${TARGET}")
endif () endif ()
@ -92,6 +92,12 @@ elseif(NOT DEFINED USE_THREAD)
set(USE_THREAD 1) set(USE_THREAD 1)
endif () endif ()
# TODO: Fix. Isn't working. Was never working in CMake.
# Undefined reference to get_num_procs, blas_thread_shutdown, ...
if (UNIX)
set(USE_THREAD 0)
endif()
if (USE_THREAD) if (USE_THREAD)
message(STATUS "Multi-threading enabled with ${NUM_THREADS} threads.") message(STATUS "Multi-threading enabled with ${NUM_THREADS} threads.")
endif () endif ()
@ -166,6 +172,8 @@ if (NO_AVX2)
endif () endif ()
if (USE_THREAD) if (USE_THREAD)
# USE_SIMPLE_THREADED_LEVEL3 = 1
# NO_AFFINITY = 1
set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER") set(CCOMMON_OPT "${CCOMMON_OPT} -DSMP_SERVER")
if (${ARCH} STREQUAL "mips64") if (${ARCH} STREQUAL "mips64")
@ -174,16 +182,9 @@ if (USE_THREAD)
endif () endif ()
endif () endif ()
if (USE_OPENMP)
# USE_SIMPLE_THREADED_LEVEL3 = 1
# NO_AFFINITY = 1
set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP")
endif ()
if (BIGNUMA) if (BIGNUMA)
set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA") set(CCOMMON_OPT "${CCOMMON_OPT} -DBIGNUMA")
endif () endif ()
endif () endif ()
if (NO_WARMUP) if (NO_WARMUP)
@ -298,7 +299,7 @@ set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}")
#Disable -fopenmp for LAPACK Fortran codes on Windows. #Disable -fopenmp for LAPACK Fortran codes on Windows.
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parralel") set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel")
foreach (FILTER_FLAG ${FILTER_FLAGS}) foreach (FILTER_FLAG ${FILTER_FLAGS})
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS}) string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS}) string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})