From 4ab7cc5cab6da2893dabf13276e68c351cf21cd8 Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Fri, 6 Jan 2017 16:28:52 +0100 Subject: [PATCH] remove add_definitions from CMakeLists.txt to store definitions in morse_config.h file --- CMakeLists.txt | 65 +++++++++++------------ include/CMakeLists.txt | 6 ++- include/morse.h.in | 5 +- include/morse_config.h.in | 66 ++++++++++++++++++++++++ include/morse_struct.h | 3 +- runtime/parsec/CMakeLists.txt | 2 +- runtime/parsec/control/runtime_context.c | 2 +- runtime/starpu/CMakeLists.txt | 2 +- runtime/starpu/control/runtime_context.c | 2 +- 9 files changed, 111 insertions(+), 42 deletions(-) create mode 100644 include/morse_config.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index cbe068e25..d9800fbee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -414,7 +414,7 @@ if(NOT CHAMELEON_SIMULATION) message("-- ${Blue}Add definition CHAMELEON_USE_CUDA" " - Activate CUDA in Chameleon${ColourReset}") set(EXTRA_LIBRARIES_CUDA) - add_definitions(-DCHAMELEON_USE_CUDA) + set (CHAMELEON_USE_CUDA 1) if(CUDA_VERSION VERSION_LESS "3.0") set(CUDA_HOST_COMPILATION_CPP OFF) endif(CUDA_VERSION VERSION_LESS "3.0") @@ -443,7 +443,7 @@ if(NOT CHAMELEON_SIMULATION) if (CUDA_CUBLAS_LIBRARIES) message("-- ${Blue}Add definition CHAMELEON_USE_CUBLAS" " - Use GPU kernels from cuBLAS${ColourReset}") - add_definitions(-DCHAMELEON_USE_CUBLAS) + set( CHAMELEON_USE_CUBLAS 1) list(APPEND EXTRA_LIBRARIES_CUDA ${CUDA_CUBLAS_LIBRARIES}) list(APPEND EXTRA_LIBRARIES_CUDA ${CUDA_LIBRARIES}) # need CUDA libs to link. else() @@ -458,7 +458,7 @@ if(NOT CHAMELEON_SIMULATION) endif() #FindHeader(CUDA cublas_v2.h) #if(CUDA_cublas_v2.h_DIRS) - #add_definitions(-DCHAMELEON_USE_CUBLAS_V2) + #set (CHAMELEON_USE_CUBLAS_V2 1) #endif() endif (CUDA_FOUND) @@ -472,7 +472,7 @@ if(NOT CHAMELEON_SIMULATION) if ( MAGMA_FOUND ) message("-- ${Blue}Add definition CHAMELEON_USE_MAGMA" " - Use GPU kernels from MAGMA${ColourReset}") - add_definitions(-DCHAMELEON_USE_MAGMA) + set (CHAMELEON_USE_MAGMA 1) if(MAGMA_INCLUDE_DIRS) include_directories(${MAGMA_INCLUDE_DIRS}) endif() @@ -518,7 +518,7 @@ if(NOT CHAMELEON_SIMULATION) if (MPI_C_FOUND) message("-- ${Blue}Add definition CHAMELEON_USE_MPI" " - Activate MPI in Chameleon${ColourReset}") - add_definitions(-DCHAMELEON_USE_MPI) + set (CHAMELEON_USE_MPI 1) list(APPEND EXTRA_LIBRARIES ${MPI_C_LIBRARIES} ) include_directories( ${MPI_C_INCLUDE_PATH} ) # tests for intel mpi @@ -545,7 +545,7 @@ else (NOT CHAMELEON_SIMULATION) message("-- ${Blue}Add definition CHAMELEON_SIMULATION" " - Activate simulation mode in Chameleon (to use with StarPU+SimGrid)${ColourReset}") - add_definitions(-DCHAMELEON_SIMULATION) + set (CHAMELEON_SIMULATION 1) add_subdirectory(simucore) @@ -570,10 +570,10 @@ else (NOT CHAMELEON_SIMULATION) # Add CUDA definition if required if (CHAMELEON_USE_CUDA) - add_definitions(-DCHAMELEON_USE_CUDA) + set (CHAMELEON_USE_CUDA 1) # Add MAGMA definition if required if (CHAMELEON_USE_MAGMA) - add_definitions(-DCHAMELEON_USE_MAGMA) + set (CHAMELEON_USE_MAGMA 1) endif() endif() @@ -639,7 +639,7 @@ else (NOT CHAMELEON_SIMULATION) if (MPI_C_FOUND) message("-- ${Blue}Add definition CHAMELEON_USE_MPI" " - Activate MPI in Chameleon${ColourReset}") - add_definitions(-DCHAMELEON_USE_MPI) + set (CHAMELEON_USE_MPI 1) list(APPEND EXTRA_LIBRARIES ${MPI_C_LIBRARIES} ) include_directories( ${MPI_C_INCLUDE_PATH} ) if(MPI_C_LINK_FLAGS) @@ -682,7 +682,7 @@ if( CHAMELEON_SCHED_STARPU ) if ( STARPU_FOUND ) message("-- ${Blue}Add definition CHAMELEON_SCHED_STARPU" " - Activate StarPU in Chameleon${ColourReset}") - add_definitions(-DCHAMELEON_SCHED_STARPU) # TODO: remove that + set (CHAMELEON_SCHED_STARPU 1) include_directories(${STARPU_INCLUDE_DIRS_DEP}) if(STARPU_LINKER_FLAGS) list(APPEND CMAKE_EXE_LINKER_FLAGS "${STARPU_LINKER_FLAGS}") @@ -703,17 +703,17 @@ if( CHAMELEON_SCHED_STARPU ) string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") check_function_exists(starpu_data_idle_prefetch_on_node STARPU_IDLE_PREFETCH_FOUND) if ( STARPU_IDLE_PREFETCH_FOUND ) - add_definitions(-DCHAMELEON_USE_STARPU_IDLE_PREFETCH) + set (CHAMELEON_USE_STARPU_IDLE_PREFETCH 1) message("-- ${Blue}Add definition CHAMELEON_USE_STARPU_IDLE_PREFETCH${ColourReset}") endif() check_function_exists(starpu_data_wont_use STARPU_DATA_WONT_USE_FOUND) if ( STARPU_DATA_WONT_USE_FOUND ) - add_definitions(-DCHAMELEON_USE_STARPU_DATA_WONT_USE) + set (CHAMELEON_USE_STARPU_DATA_WONT_USE 1) message("-- ${Blue}Add definition CHAMELEON_USE_STARPU_DATA_WONT_USE${ColourReset}") endif() check_function_exists(starpu_malloc_on_node_set_default_flags STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS) if ( STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS ) - add_definitions(-DCHAMELEON_USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS) + set (CHAMELEON_USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS 1) message("-- ${Blue}Add definition CHAMELEON_USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS${ColourReset}") endif() if(CHAMELEON_ENABLE_TRACING) @@ -723,7 +723,7 @@ if( CHAMELEON_SCHED_STARPU ) if ( STARPU_FXT_START_PROFILING_FOUND ) message("-- ${Blue}Add definition HAVE_STARPU_FXT_PROFILING" " - Activate FxT profiling through StarPU${ColourReset}") - add_definitions(-DHAVE_STARPU_FXT_PROFILING) + set (HAVE_STARPU_FXT_PROFILING 1) else() message("-- ${Red}Looking for starpu with fxt" " - starpu_fxt_start_profiling() test fails in StarPU${ColourReset}") @@ -737,7 +737,7 @@ if( CHAMELEON_SCHED_STARPU ) if ( STARPU_MPI_DATA_REGISTER_FOUND ) message("-- ${Blue}Add definition HAVE_STARPU_MPI_DATA_REGISTER - Activate" " use of starpu_mpi_data_register() in Chameleon with StarPU${ColourReset}") - add_definitions(-DHAVE_STARPU_MPI_DATA_REGISTER) + set (HAVE_STARPU_MPI_DATA_REGISTER 1) else() message("-- ${Red}Looking for starpu with starpu_mpi_data_register" " - starpu_mpi_data_register() test fails in StarPU${ColourReset}") @@ -748,7 +748,7 @@ if( CHAMELEON_SCHED_STARPU ) if ( STARPU_MPI_COMM_RANK_FOUND ) message("-- ${Blue}Add definition HAVE_STARPU_MPI_COMM_RANK - Activate" " use of starpu_mpi_comm_rank() in Chameleon with StarPU${ColourReset}") - add_definitions(-DHAVE_STARPU_MPI_COMM_RANK) + set (HAVE_STARPU_MPI_COMM_RANK 1) else() message("-- ${Red}Looking for starpu with starpu_mpi_comm_rank" " - starpu_mpi_comm_rank() test fails in StarPU${ColourReset}") @@ -864,7 +864,7 @@ if( CHAMELEON_SCHED_PARSEC ) message("-- ${Blue}Add definition CHAMELEON_SCHED_PARSEC" " - Activate PaRSEC in Chameleon${ColourReset}") - add_definitions(-DCHAMELEON_SCHED_PARSEC) # TODO: remove that + set (CHAMELEON_SCHED_PARSEC 1) include_directories(${PARSEC_INCLUDE_DIRS_DEP}) include_directories(${PARSEC_INCLUDE_DIRS}/daguepp) set(CMAKE_REQUIRED_INCLUDES "${PARSEC_INCLUDE_DIRS_DEP}") @@ -940,7 +940,7 @@ if( CHAMELEON_SCHED_QUARK ) if(QUARK_FOUND) message("-- ${Blue}Add definition CHAMELEON_SCHED_QUARK" " - Activate QUARK in Chameleon${ColourReset}") - add_definitions(-DCHAMELEON_SCHED_QUARK) # TODO: remove that + set (CHAMELEON_SCHED_QUARK 1) include_directories(${QUARK_INCLUDE_DIRS}) if(QUARK_LIBRARY_DIRS) # the RPATH to be used when installing @@ -992,24 +992,25 @@ endif() # ------------------------------------------------------------------ message("-- ${Blue}Add definition ADD_" " - For Fortran mangling${ColourReset}") -add_definitions(-DADD_) +set (ADD_ 1) #------------------------------------------------------------------------------ - if(CHAMELEON_SCHED_STARPU) - link_directories(${STARPU_LIBRARY_DIRS_DEP}) - elseif(CHAMELEON_SCHED_PARSEC) - link_directories(${PARSEC_LIBRARY_DIRS_DEP}) - elseif(CHAMELEON_SCHED_QUARK) - link_directories(${QUARK_LIBRARY_DIRS}) +if(CHAMELEON_SCHED_STARPU) + link_directories(${STARPU_LIBRARY_DIRS_DEP}) +elseif(CHAMELEON_SCHED_PARSEC) + link_directories(${PARSEC_LIBRARY_DIRS_DEP}) +elseif(CHAMELEON_SCHED_QUARK) + link_directories(${QUARK_LIBRARY_DIRS}) +endif() +if(NOT CHAMELEON_SIMULATION) + if(CHAMELEON_USE_CUDA) + link_directories(${CUDA_LIBRARY_DIRS}) endif() - if(NOT CHAMELEON_SIMULATION) - if(CHAMELEON_USE_CUDA) - link_directories(${CUDA_LIBRARY_DIRS}) - endif() - if(CHAMELEON_USE_MAGMA) - link_directories(${MAGMA_LIBRARY_DIRS}) - endif() + if(CHAMELEON_USE_MAGMA) + link_directories(${MAGMA_LIBRARY_DIRS}) endif() +endif() + # Save extra dependencies (all required links) list(APPEND CHAMELEON_DEP ${EXTRA_LIBRARIES}) list(REMOVE_DUPLICATES CHAMELEON_DEP) # WARNING: is it safe, respect order? diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index c35f8aa80..704b511a3 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -40,6 +40,9 @@ set(ZHDR precisions_rules_py(CHAMELEON_HDRS_GENERATED "${ZHDR}" PRECISIONS "z;c;d;s;zc;ds") +configure_file("morse_config.h.in" + "morse_config.h" + @ONLY) configure_file("morse.h.in" "morse.h" @ONLY) @@ -52,6 +55,7 @@ set(CHAMELEON_HDRS morse_simulate.h morse_struct.h morse_types.h + morse_config.h morse.h runtime.h ${CHAMELEON_HDRS_GENERATED} @@ -79,7 +83,7 @@ set(HDR_INSTALL foreach( hdr_file ${CHAMELEON_HDRS_GENERATED} ) list(APPEND HDR_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/${hdr_file}) endforeach() -list(APPEND HDR_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/morse.h) +list(APPEND HDR_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/morse.h ${CMAKE_CURRENT_BINARY_DIR}/morse_config.h) # installation # ------------ diff --git a/include/morse.h.in b/include/morse.h.in index c5a0edfe2..ef2491519 100644 --- a/include/morse.h.in +++ b/include/morse.h.in @@ -32,14 +32,11 @@ #define MORSE_VERSION_MINOR @MORSE_VERSION_MINOR@ #define MORSE_VERSION_MICRO @MORSE_VERSION_MICRO@ -#define CHAMELEON_VERSION_MAJOR @CHAMELEON_VERSION_MAJOR@ -#define CHAMELEON_VERSION_MINOR @CHAMELEON_VERSION_MINOR@ -#define CHAMELEON_VERSION_MICRO @CHAMELEON_VERSION_MICRO@ - /* **************************************************************************** * MORSE types and constants */ +#include "morse_config.h" #include "morse_types.h" #include "morse_struct.h" #include "morse_constants.h" diff --git a/include/morse_config.h.in b/include/morse_config.h.in new file mode 100644 index 000000000..28df91bea --- /dev/null +++ b/include/morse_config.h.in @@ -0,0 +1,66 @@ +/** + * + * @copyright (c) 2009-2014 The University of Tennessee and The University + * of Tennessee Research Foundation. + * All rights reserved. + * @copyright (c) 2012-2017 Inria. All rights reserved. + * @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. + * + **/ + +/** + * + * @file chameleon.h + * + * MORSE main header + * MORSE is a software package provided by Univ. of Tennessee, + * Univ. of California Berkeley and Univ. of Colorado Denver, + * and INRIA Bordeaux Sud-Ouest + * + * @version 0.9.1 + * @author Florent Pruvost + * @date 2017-01-06 + * + **/ +#ifndef MORSE_CONFIG_H_HAS_BEEN_INCLUDED +#define MORSE_CONFIG_H_HAS_BEEN_INCLUDED + +#define CHAMELEON_VERSION_MAJOR @CHAMELEON_VERSION_MAJOR@ +#define CHAMELEON_VERSION_MINOR @CHAMELEON_VERSION_MINOR@ +#define CHAMELEON_VERSION_MICRO @CHAMELEON_VERSION_MICRO@ + +/* Scheduling engine */ +#cmakedefine CHAMELEON_SCHED_QUARK +#cmakedefine CHAMELEON_SCHED_PARSEC +#cmakedefine CHAMELEON_SCHED_STARPU + +/* Communication engine */ +#cmakedefine CHAMELEON_USE_MPI + +/* GPU Support */ +#cmakedefine CHAMELEON_USE_CUDA +#cmakedefine CHAMELEON_USE_CUBLAS +#cmakedefine CHAMELEON_USE_CUBLAS_V2 +#cmakedefine CHAMELEON_USE_MAGMA + +/* For BLAS Fortran mangling */ +#cmakedefine ADD_ + +/* Profiling */ +#cmakedefine HAVE_STARPU_FXT_PROFILING + +/* Simulating */ +#cmakedefine CHAMELEON_SIMULATION + +/* Optional functions */ +#cmakedefine CBLAS_HAS_ZGEMM3M +#cmakedefine CBLAS_HAS_CGEMM3M +#cmakedefine HAVE_MAGMA_GETRF_INCPIV_GPU +#cmakedefine CHAMELEON_USE_STARPU_IDLE_PREFETCH +#cmakedefine CHAMELEON_USE_STARPU_DATA_WONT_USE +#cmakedefine CHAMELEON_USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS +#cmakedefine HAVE_STARPU_MPI_DATA_REGISTER +#cmakedefine HAVE_STARPU_MPI_COMM_RANK + + +#endif /*MORSE_CONFIG_H_HAS_BEEN_INCLUDED */ diff --git a/include/morse_struct.h b/include/morse_struct.h index 2958ce3d0..7f866e60a 100644 --- a/include/morse_struct.h +++ b/include/morse_struct.h @@ -33,11 +33,12 @@ /** **************************************************************************** * RUNTIME headers to include types of : * - QUARK + * - PaRSEC * - StarPU **/ typedef enum morse_sched_e { - RUNTIME_SCHED_PARSEC, RUNTIME_SCHED_QUARK, + RUNTIME_SCHED_PARSEC, RUNTIME_SCHED_STARPU, } MORSE_sched_t; diff --git a/runtime/parsec/CMakeLists.txt b/runtime/parsec/CMakeLists.txt index 872c19c48..1923a1dd8 100644 --- a/runtime/parsec/CMakeLists.txt +++ b/runtime/parsec/CMakeLists.txt @@ -36,7 +36,7 @@ if ( CBLAS_FOUND AND LAPACKE_FOUND AND LAPACK_FOUND AND CUDA_FOUND AND CUDA_CUBL check_function_exists(magma_dgetrf_incpiv_gpu MAGMA_DGETRF_INCPIV_GPU_FOUND) if ( MAGMA_DGETRF_INCPIV_GPU_FOUND ) message(STATUS "Set HAVE_MAGMA_GETRF_INCPIV_GPU") - add_definitions(-DHAVE_MAGMA_GETRF_INCPIV_GPU) + set (HAVE_MAGMA_GETRF_INCPIV_GPU 1) endif() endif() diff --git a/runtime/parsec/control/runtime_context.c b/runtime/parsec/control/runtime_context.c index 364af1b1b..aba1e227d 100644 --- a/runtime/parsec/control/runtime_context.c +++ b/runtime/parsec/control/runtime_context.c @@ -16,7 +16,7 @@ void RUNTIME_context_create(MORSE_context_t *morse) { /* In case of PaRSEC, this is done in init */ - morse->scheduler = CHAMELEON_SCHED_PARSEC; + morse->scheduler = RUNTIME_SCHED_PARSEC; return; } diff --git a/runtime/starpu/CMakeLists.txt b/runtime/starpu/CMakeLists.txt index b2748379d..1823cc7ba 100644 --- a/runtime/starpu/CMakeLists.txt +++ b/runtime/starpu/CMakeLists.txt @@ -36,7 +36,7 @@ if ( CBLAS_FOUND AND LAPACKE_FOUND AND LAPACK_FOUND AND CUDA_FOUND AND CUDA_CUBL check_function_exists(magma_dgetrf_incpiv_gpu MAGMA_DGETRF_INCPIV_GPU_FOUND) if ( MAGMA_DGETRF_INCPIV_GPU_FOUND ) message(STATUS "Set HAVE_MAGMA_GETRF_INCPIV_GPU") - add_definitions(-DHAVE_MAGMA_GETRF_INCPIV_GPU) + set (HAVE_MAGMA_GETRF_INCPIV_GPU 1) endif() endif() diff --git a/runtime/starpu/control/runtime_context.c b/runtime/starpu/control/runtime_context.c index e7850f674..199f296f1 100644 --- a/runtime/starpu/control/runtime_context.c +++ b/runtime/starpu/control/runtime_context.c @@ -36,7 +36,7 @@ void RUNTIME_context_create( MORSE_context_t *morse ) { starpu_conf_t *conf; - morse->scheduler = CHAMELEON_SCHED_STARPU; + morse->scheduler = RUNTIME_SCHED_STARPU; if (! _starpu_is_initialized() ) { morse->schedopt = (void*) malloc (sizeof(struct starpu_conf)); -- GitLab