From 04da77e91e2cbe68da17b22098437a7a24be06fe Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Mon, 9 Jan 2017 17:16:58 +0100 Subject: [PATCH] @all - create config files to store definitions - include/chameleon_config.h: definitions exposed to the public (installed file) - control/config.h: additional definitions used internally - modify source code to call the config files when it is necessary (when the different "if defined" are used) --- CMakeLists.txt | 12 ++--- control/CMakeLists.txt | 5 +++ control/common.h | 2 + control/config.h.in | 45 +++++++++++++++++++ control/descriptor.h | 1 + cudablas/include/cudablas.h | 2 + cudablas/include/cudablas_z.h | 1 + include/CMakeLists.txt | 11 ++--- ...orse_config.h.in => chameleon_config.h.in} | 24 ++-------- include/morse.h.in | 2 +- include/morse_simulate.h | 2 + include/morse_struct.h | 1 + runtime/starpu/codelets/codelet_dataflush.c | 8 ++-- runtime/starpu/control/runtime_control.c | 2 +- runtime/starpu/include/morse_starpu.h | 2 + runtime/starpu/include/runtime_codelets.h | 1 + 16 files changed, 84 insertions(+), 37 deletions(-) create mode 100644 control/config.h.in rename include/{morse_config.h.in => chameleon_config.h.in} (65%) diff --git a/CMakeLists.txt b/CMakeLists.txt index f636274a6..a134b379a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -703,18 +703,18 @@ 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 ) - set(CHAMELEON_USE_STARPU_IDLE_PREFETCH 1) - message("-- ${Blue}Add definition CHAMELEON_USE_STARPU_IDLE_PREFETCH${ColourReset}") + set(USE_STARPU_IDLE_PREFETCH 1) + message("-- ${Blue}Add definition USE_STARPU_IDLE_PREFETCH${ColourReset}") endif() check_function_exists(starpu_data_wont_use STARPU_DATA_WONT_USE_FOUND) if ( STARPU_DATA_WONT_USE_FOUND ) - set(CHAMELEON_USE_STARPU_DATA_WONT_USE 1) - message("-- ${Blue}Add definition CHAMELEON_USE_STARPU_DATA_WONT_USE${ColourReset}") + set(USE_STARPU_DATA_WONT_USE 1) + message("-- ${Blue}Add definition 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 ) - 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}") + set(USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS 1) + message("-- ${Blue}Add definition USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS${ColourReset}") endif() if(CHAMELEON_ENABLE_TRACING) # check if fxt profiling is accessible in starpu and activate it in chameleon diff --git a/control/CMakeLists.txt b/control/CMakeLists.txt index 05a510888..dddb507e1 100644 --- a/control/CMakeLists.txt +++ b/control/CMakeLists.txt @@ -37,11 +37,16 @@ set(ZHDR precisions_rules_py(CHAMELEON_HDRS_GENERATED "${ZHDR}" PRECISIONS "s;d;c;z;ds;zc") +configure_file("config.h.in" + "config.h" + @ONLY) + # Define the list of headers # -------------------------- set(CHAMELEON_HDRS async.h auxiliary.h + config.h common.h context.h descriptor.h diff --git a/control/common.h b/control/common.h index 7f9a6beaf..f08f2712c 100644 --- a/control/common.h +++ b/control/common.h @@ -43,6 +43,8 @@ #include <unistd.h> #endif +/* need the config to get definitions */ +#include "control/config.h" /** **************************************************************************** * Implementation headers diff --git a/control/config.h.in b/control/config.h.in new file mode 100644 index 000000000..9d1e5d8a3 --- /dev/null +++ b/control/config.h.in @@ -0,0 +1,45 @@ +/** + * + * @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 config.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-09 + * + **/ +#ifndef CONFIG_H_HAS_BEEN_INCLUDED +#define CONFIG_H_HAS_BEEN_INCLUDED + +/* inherit from public chameleon's definitions */ +#include "include/chameleon_config.h" + +/* For BLAS Fortran mangling */ +#cmakedefine ADD_ + +/* Profiling */ +#cmakedefine HAVE_STARPU_FXT_PROFILING + +/* Optional functions */ +#cmakedefine HAVE_MAGMA_GETRF_INCPIV_GPU +#cmakedefine USE_STARPU_IDLE_PREFETCH +#cmakedefine USE_STARPU_DATA_WONT_USE +#cmakedefine USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS +#cmakedefine HAVE_STARPU_MPI_DATA_REGISTER +#cmakedefine HAVE_STARPU_MPI_COMM_RANK + +#endif /* CONFIG_H_HAS_BEEN_INCLUDED */ diff --git a/control/descriptor.h b/control/descriptor.h index 6070f1c07..e0ebcc936 100644 --- a/control/descriptor.h +++ b/control/descriptor.h @@ -27,6 +27,7 @@ #define _MORSE_DESCRIPTOR_H_ #include <assert.h> +#include "include/chameleon_config.h" #include "morse_struct.h" #include "control/auxiliary.h" diff --git a/cudablas/include/cudablas.h b/cudablas/include/cudablas.h index 8ff43b507..f912f315c 100644 --- a/cudablas/include/cudablas.h +++ b/cudablas/include/cudablas.h @@ -37,6 +37,8 @@ #include <cuda.h> #include <cuComplex.h> +#include "include/chameleon_config.h" + #if defined(CHAMELEON_USE_CUBLAS_V2) #include <cublas_v2.h> diff --git a/cudablas/include/cudablas_z.h b/cudablas/include/cudablas_z.h index e7a0bf44a..e73912750 100644 --- a/cudablas/include/cudablas_z.h +++ b/cudablas/include/cudablas_z.h @@ -25,6 +25,7 @@ #ifndef _MORSE_CUDA_ZBLAS_H_ #define _MORSE_CUDA_ZBLAS_H_ +#include "include/chameleon_config.h" #include "morse_types.h" #ifdef __cplusplus diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index 704b511a3..965963b85 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -3,7 +3,7 @@ # @copyright (c) 2009-2014 The University of Tennessee and The University # of Tennessee Research Foundation. # All rights reserved. -# @copyright (c) 2012-2014 Inria. All rights reserved. +# @copyright (c) 2012-2017 Inria. All rights reserved. # @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. # ### @@ -22,6 +22,7 @@ # @author Cedric Castagnede # @author Emmanuel Agullo # @author Mathieu Faverge +# @author Florent Pruvost # @date 13-07-2012 # ### @@ -40,8 +41,8 @@ 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" +configure_file("chameleon_config.h.in" + "chameleon_config.h" @ONLY) configure_file("morse.h.in" "morse.h" @@ -50,12 +51,12 @@ configure_file("morse.h.in" # Define the list of headers # -------------------------- set(CHAMELEON_HDRS + chameleon_config.h morse_constants.h morse_kernels.h morse_simulate.h morse_struct.h morse_types.h - morse_config.h morse.h runtime.h ${CHAMELEON_HDRS_GENERATED} @@ -83,7 +84,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 ${CMAKE_CURRENT_BINARY_DIR}/morse_config.h) +list(APPEND HDR_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/morse.h ${CMAKE_CURRENT_BINARY_DIR}/chameleon_config.h) # installation # ------------ diff --git a/include/morse_config.h.in b/include/chameleon_config.h.in similarity index 65% rename from include/morse_config.h.in rename to include/chameleon_config.h.in index 28df91bea..065558af0 100644 --- a/include/morse_config.h.in +++ b/include/chameleon_config.h.in @@ -10,7 +10,7 @@ /** * - * @file chameleon.h + * @file chameleon_config.h * * MORSE main header * MORSE is a software package provided by Univ. of Tennessee, @@ -22,8 +22,8 @@ * @date 2017-01-06 * **/ -#ifndef MORSE_CONFIG_H_HAS_BEEN_INCLUDED -#define MORSE_CONFIG_H_HAS_BEEN_INCLUDED +#ifndef CHAMELEON_CONFIG_H_HAS_BEEN_INCLUDED +#define CHAMELEON_CONFIG_H_HAS_BEEN_INCLUDED #define CHAMELEON_VERSION_MAJOR @CHAMELEON_VERSION_MAJOR@ #define CHAMELEON_VERSION_MINOR @CHAMELEON_VERSION_MINOR@ @@ -43,24 +43,8 @@ #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 */ +#endif /* CHAMELEON_CONFIG_H_HAS_BEEN_INCLUDED */ diff --git a/include/morse.h.in b/include/morse.h.in index ef2491519..1a01deb60 100644 --- a/include/morse.h.in +++ b/include/morse.h.in @@ -36,7 +36,7 @@ /* **************************************************************************** * MORSE types and constants */ -#include "morse_config.h" +#include "chameleon_config.h" #include "morse_types.h" #include "morse_struct.h" #include "morse_constants.h" diff --git a/include/morse_simulate.h b/include/morse_simulate.h index f66ce2318..03dd4fb40 100644 --- a/include/morse_simulate.h +++ b/include/morse_simulate.h @@ -25,6 +25,8 @@ #ifndef _MORSE_SIMULATE_H_ #define _MORSE_SIMULATE_H_ +#include "include/chameleon_config.h" + /* we need this when starpu is compiled with simgrid enabled */ #if defined(CHAMELEON_SCHED_STARPU) && defined(CHAMELEON_SIMULATION) #include <starpu_simgrid_wrap.h> diff --git a/include/morse_struct.h b/include/morse_struct.h index 7f866e60a..a710366df 100644 --- a/include/morse_struct.h +++ b/include/morse_struct.h @@ -28,6 +28,7 @@ #ifndef _MORSE_STRUCT_H_ #define _MORSE_STRUCT_H_ +#include "include/chameleon_config.h" #include "morse_types.h" /** **************************************************************************** diff --git a/runtime/starpu/codelets/codelet_dataflush.c b/runtime/starpu/codelets/codelet_dataflush.c index 84b280d03..226d4b523 100644 --- a/runtime/starpu/codelets/codelet_dataflush.c +++ b/runtime/starpu/codelets/codelet_dataflush.c @@ -26,8 +26,8 @@ **/ #include "runtime/starpu/include/morse_starpu.h" -#ifdef CHAMELEON_USE_STARPU_DATA_WONT_USE -#elif defined CHAMELEON_USE_STARPU_IDLE_PREFETCH +#ifdef USE_STARPU_DATA_WONT_USE +#elif defined USE_STARPU_IDLE_PREFETCH static void data_flush(void *handle) { starpu_data_idle_prefetch_on_node(handle, STARPU_MAIN_RAM, 1); @@ -63,9 +63,9 @@ void MORSE_TASK_dataflush(const MORSE_option_t *options, if ( A->myrank == A->get_rankof( A, Am, An ) ) { /* Push data to main memory when we have time to */ -#ifdef CHAMELEON_USE_STARPU_DATA_WONT_USE +#ifdef USE_STARPU_DATA_WONT_USE starpu_data_wont_use(*ptrtile); -#elif defined CHAMELEON_USE_STARPU_IDLE_PREFETCH +#elif defined USE_STARPU_IDLE_PREFETCH starpu_data_acquire_on_node_cb(*ptrtile, -1, STARPU_R, data_flush, *ptrtile); #else starpu_data_acquire_cb(*ptrtile, STARPU_R, data_release, *ptrtile); diff --git a/runtime/starpu/control/runtime_control.c b/runtime/starpu/control/runtime_control.c index f63e73a45..113939dd9 100644 --- a/runtime/starpu/control/runtime_control.c +++ b/runtime/starpu/control/runtime_control.c @@ -113,7 +113,7 @@ int RUNTIME_init_scheduler( MORSE_context_t *morse, int ncpus, int ncudas, int n morse->nthreads_per_worker = nthreads_per_worker; } -#ifdef CHAMELEON_USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS +#ifdef USE_STARPU_MALLOC_ON_NODE_SET_DEFAULT_FLAGS starpu_malloc_on_node_set_default_flags(STARPU_MAIN_RAM, STARPU_MALLOC_PINNED | STARPU_MALLOC_COUNT #ifdef STARPU_MALLOC_SIMULATION_FOLDED | STARPU_MALLOC_SIMULATION_FOLDED diff --git a/runtime/starpu/include/morse_starpu.h b/runtime/starpu/include/morse_starpu.h index 64edb2b18..2f0ff0356 100644 --- a/runtime/starpu/include/morse_starpu.h +++ b/runtime/starpu/include/morse_starpu.h @@ -32,6 +32,8 @@ #ifndef _MORSE_STARPU_H_ #define _MORSE_STARPU_H_ +#include "include/chameleon_config.h" + #if defined(CHAMELEON_USE_MPI) #include <starpu_mpi.h> #else diff --git a/runtime/starpu/include/runtime_codelets.h b/runtime/starpu/include/runtime_codelets.h index 14b1c8e56..ad18261bc 100644 --- a/runtime/starpu/include/runtime_codelets.h +++ b/runtime/starpu/include/runtime_codelets.h @@ -28,6 +28,7 @@ #ifndef _CODELETS_H_ #define _CODELETS_H_ +#include "include/chameleon_config.h" #include "runtime_codelet_profile.h" //#undef STARPU_CUDA_ASYNC -- GitLab