From 143e3551fcaea72a769357786b2aea98b9db5973 Mon Sep 17 00:00:00 2001 From: Florent Pruvost <florent.pruvost@inria.fr> Date: Wed, 9 Dec 2015 14:44:38 +0000 Subject: [PATCH] adapt chameleon to bu used with starpu+simgrid+mpi --- CMakeLists.txt | 37 +++++++++++++++----------- control/common.h | 2 +- example/basic_zposv/CMakeLists.txt | 15 +++-------- example/lapack_to_morse/CMakeLists.txt | 15 +++-------- include/morse_simulate.h | 5 +++- testing/CMakeLists.txt | 15 +++-------- testing/lin/CMakeLists.txt | 2 +- timing/CMakeLists.txt | 15 +++-------- 8 files changed, 43 insertions(+), 63 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6fefe0240..560ffbc8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -523,6 +523,9 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") "numerical correctness of algorithms and kernels.${ColourReset}") endif () + # Simulation mode: we depend on SimGrid + find_package(SIMGRID REQUIRED) + # CHAMELEON depends on MPI #------------------------- if (CHAMELEON_USE_MPI) @@ -534,7 +537,11 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") set(MPI_C_COMPILER smpicc) endif() if(NOT MPI_C_LIBRARIES) - set(MPI_C_LIBRARIES -lsimgrid) + set(MPI_C_LIBRARIES "${SIMGRID_LIBRARIES}") + endif() + if(NOT MPI_C_INCLUDE_PATH) + set(MPI_C_INCLUDE_PATH "${SIMGRID_INCLUDE_DIRS}") + list(APPEND MPI_C_INCLUDE_PATH "${SIMGRID_INCLUDE_DIRS}/smpi") endif() find_package(MPI REQUIRED) @@ -559,7 +566,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") if( CHAMELEON_SCHED_STARPU ) - set(CHAMELEON_STARPU_VERSION "1.1" CACHE STRING "oldest STARPU version desired") + set(CHAMELEON_STARPU_VERSION "1.1" CACHE STRING "oldest STARPU version desired") # create list of components in order to make a single call to find_package(starpu...) if(NOT CHAMELEON_SIMULATION) @@ -595,7 +602,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") endforeach() list(APPEND CMAKE_REQUIRED_FLAGS "-include" "starpu_simgrid_wrap.h") string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") - set(CMAKE_REQUIRED_LIBRARIES "${STARPU_SHM_LIBRARIES}") + set(CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES_DEP}") 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) @@ -606,7 +613,7 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") endif() if(CHAMELEON_ENABLE_TRACING) # check if fxt profiling is accessible in starpu and activate it in chameleon - set(CMAKE_REQUIRED_LIBRARIES "${STARPU_SHM_LIBRARIES}") + set(CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES_DEP}") unset(STARPU_FXT_START_PROFILING_FOUND CACHE) check_function_exists(starpu_fxt_start_profiling STARPU_FXT_START_PROFILING_FOUND) if ( STARPU_FXT_START_PROFILING_FOUND ) @@ -623,7 +630,12 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") # Check if a specific function exist list(APPEND CMAKE_REQUIRED_INCLUDES "${MPI_C_INCLUDE_PATH}") list(APPEND CMAKE_REQUIRED_FLAGS "${MPI_C_LINK_FLAGS}") - set(CMAKE_REQUIRED_LIBRARIES "${STARPU_MPI_LIBRARIES} -lmpi") + set(CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES_DEP}") +# if (CHAMELEON_SIMULATION) +# set(CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES_DEP}") +# else() +# set(CMAKE_REQUIRED_LIBRARIES "${STARPU_LIBRARIES_DEP} -lmpi") +# endif() unset(STARPU_MPI_DATA_REGISTER_FOUND CACHE) check_function_exists(starpu_mpi_data_register_comm STARPU_MPI_DATA_REGISTER_FOUND) if ( STARPU_MPI_DATA_REGISTER_FOUND ) @@ -869,17 +881,10 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") # Save all dependencies (all required links) set(CHAMELEON_DEP -lchameleon) if(CHAMELEON_SCHED_STARPU) - if ( CHAMELEON_USE_MPI ) - list(APPEND CHAMELEON_DEP - -lchameleon_starpu - ${STARPU_MPI_LIBRARIES} - ) - else() - list(APPEND CHAMELEON_DEP - -lchameleon_starpu - ${STARPU_SHM_LIBRARIES} - ) - endif() + list(APPEND CHAMELEON_DEP + -lchameleon_starpu + ${STARPU_LIBRARIES_DEP} + ) elseif(CHAMELEON_SCHED_PARSEC) list(APPEND CHAMELEON_DEP -lchameleon_parsec diff --git a/control/common.h b/control/common.h index 97420296e..0caa6f3a3 100644 --- a/control/common.h +++ b/control/common.h @@ -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-2015 Inria. All rights reserved. * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. * **/ diff --git a/example/basic_zposv/CMakeLists.txt b/example/basic_zposv/CMakeLists.txt index 4e62def44..deb984ae5 100644 --- a/example/basic_zposv/CMakeLists.txt +++ b/example/basic_zposv/CMakeLists.txt @@ -47,17 +47,10 @@ list(APPEND libs_for_examples ) if(CHAMELEON_SCHED_STARPU) - if ( CHAMELEON_USE_MPI ) - list(APPEND libs_for_examples - chameleon_starpu - ${STARPU_MPI_LIBRARIES} - ) - else() - list(APPEND libs_for_examples - chameleon_starpu - ${STARPU_SHM_LIBRARIES} - ) - endif() + list(APPEND libs_for_examples + chameleon_starpu + ${STARPU_LIBRARIES_DEP} + ) link_directories(${STARPU_LIBRARY_DIRS}) elseif(CHAMELEON_SCHED_PARSEC) list(APPEND libs_for_examples diff --git a/example/lapack_to_morse/CMakeLists.txt b/example/lapack_to_morse/CMakeLists.txt index bbcbdf744..c303a1f51 100644 --- a/example/lapack_to_morse/CMakeLists.txt +++ b/example/lapack_to_morse/CMakeLists.txt @@ -42,17 +42,10 @@ list(APPEND libs_for_ltm ) if(CHAMELEON_SCHED_STARPU) - if ( CHAMELEON_USE_MPI ) - list(APPEND libs_for_ltm - chameleon_starpu - ${STARPU_MPI_LIBRARIES} - ) - else() - list(APPEND libs_for_ltm - chameleon_starpu - ${STARPU_SHM_LIBRARIES} - ) - endif() + list(APPEND libs_for_ltm + chameleon_starpu + ${STARPU_LIBRARIES_DEP} + ) link_directories(${STARPU_LIBRARY_DIRS}) elseif(CHAMELEON_SCHED_PARSEC) list(APPEND libs_for_ltm diff --git a/include/morse_simulate.h b/include/morse_simulate.h index e02e625ad..50f512128 100644 --- a/include/morse_simulate.h +++ b/include/morse_simulate.h @@ -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-2015 Inria. All rights reserved. * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. * **/ @@ -28,6 +28,9 @@ /* we need this when starpu is compiled with simgrid enabled */ #if defined(CHAMELEON_SCHED_STARPU) && defined(CHAMELEON_SIMULATION) #include <starpu_simgrid_wrap.h> +#if defined(CHAMELEON_USE_MPI) +#define main smpi_simulated_main_ +#endif #endif #endif diff --git a/testing/CMakeLists.txt b/testing/CMakeLists.txt index 50716e2ff..a22a932a4 100644 --- a/testing/CMakeLists.txt +++ b/testing/CMakeLists.txt @@ -102,17 +102,10 @@ unset(libs_for_tests) list(APPEND libs_for_tests chameleon) if(CHAMELEON_SCHED_STARPU) - if ( CHAMELEON_USE_MPI ) - list(APPEND libs_for_tests - chameleon_starpu - ${STARPU_MPI_LIBRARIES} - ) - else() - list(APPEND libs_for_tests - chameleon_starpu - ${STARPU_SHM_LIBRARIES} - ) - endif() + list(APPEND libs_for_tests + chameleon_starpu + ${STARPU_LIBRARIES_DEP} + ) link_directories(${STARPU_LIBRARY_DIRS}) elseif(CHAMELEON_SCHED_PARSEC) list(APPEND libs_for_tests diff --git a/testing/lin/CMakeLists.txt b/testing/lin/CMakeLists.txt index 3d72982ae..da3f049c4 100644 --- a/testing/lin/CMakeLists.txt +++ b/testing/lin/CMakeLists.txt @@ -145,7 +145,7 @@ set(libs_for_tests "chameleon") # TODO: Check for name of following libraries (it certainly changed between morse and new_chameleon) if(MORSE_SCHED_STARPU) list(APPEND libs_for_tests chameleon_starpu) - list(APPEND libs_for_tests ${STARPU_LIBRARIES}) + list(APPEND libs_for_tests ${STARPU_LIBRARIES_DEP}) list(APPEND libs_for_tests coreblas) elseif(MORSE_SCHED_QUARK) list(APPEND libs_for_tests chameleon_starpu) diff --git a/timing/CMakeLists.txt b/timing/CMakeLists.txt index c00145e85..1183d0348 100644 --- a/timing/CMakeLists.txt +++ b/timing/CMakeLists.txt @@ -147,17 +147,10 @@ list(APPEND libs_for_timings ) if(CHAMELEON_SCHED_STARPU) - if ( CHAMELEON_USE_MPI ) - list(APPEND libs_for_timings - chameleon_starpu - ${STARPU_MPI_LIBRARIES} - ) - else() - list(APPEND libs_for_timings - chameleon_starpu - ${STARPU_SHM_LIBRARIES} - ) - endif() + list(APPEND libs_for_timings + chameleon_starpu + ${STARPU_LIBRARIES_DEP} + ) link_directories(${STARPU_LIBRARY_DIRS}) elseif(CHAMELEON_SCHED_PARSEC) list(APPEND libs_for_timings -- GitLab