Commit 04da77e9 authored by PRUVOST Florent's avatar PRUVOST Florent
Browse files

@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)
parent d443b96f
......@@ -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
......
......@@ -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
......
......@@ -43,6 +43,8 @@
#include <unistd.h>
#endif
/* need the config to get definitions */
#include "control/config.h"
/** ****************************************************************************
* Implementation headers
......
/**
*
* @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 */
......@@ -27,6 +27,7 @@
#define _MORSE_DESCRIPTOR_H_
#include <assert.h>
#include "include/chameleon_config.h"
#include "morse_struct.h"
#include "control/auxiliary.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>
......
......@@ -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
......
......@@ -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
# ------------
......
......@@ -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 */
......@@ -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"
......
......@@ -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>
......
......@@ -28,6 +28,7 @@
#ifndef _MORSE_STRUCT_H_
#define _MORSE_STRUCT_H_
#include "include/chameleon_config.h"
#include "morse_types.h"
/** ****************************************************************************
......
......@@ -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);
......
......@@ -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
......
......@@ -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
......
......@@ -28,6 +28,7 @@
#ifndef _CODELETS_H_
#define _CODELETS_H_
#include "include/chameleon_config.h"
#include "runtime_codelet_profile.h"
//#undef STARPU_CUDA_ASYNC
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment