From 85ac57c52e62b04189aa28a0cc31a31446a2b533 Mon Sep 17 00:00:00 2001 From: Samuel Thibault <samuel.thibault@inria.fr> Date: Tue, 24 Mar 2015 17:53:30 +0000 Subject: [PATCH] Use starpu_data_wont_use if available --- CMakeLists.txt | 11 ++++++++++- runtime/starpu/codelets/codelet_dataflush.c | 7 +++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fdf9e3eb..10fd87987 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ # of Tennessee Research Foundation. # All rights reserved. # @copyright (c) 2012-2014 Inria. All rights reserved. -# @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. +# @copyright (c) 2012-2015 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved. # ### # @@ -563,6 +563,15 @@ if (MORSE_DISTRIB_DIR OR EXISTS "${CMAKE_SOURCE_DIR}/cmake_modules/") list(APPEND CMAKE_REQUIRED_FLAGS "-L${libdir}") endforeach() string(REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") + set(CMAKE_REQUIRED_LIBRARIES "${STARPU_SHM_LIBRARIES}") + 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) + 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) + endif() if(CHAMELEON_USE_FXT) # check if fxt profiling is accessible in starpu and activate it in chameleon set(CMAKE_REQUIRED_LIBRARIES "${STARPU_SHM_LIBRARIES}") diff --git a/runtime/starpu/codelets/codelet_dataflush.c b/runtime/starpu/codelets/codelet_dataflush.c index eea2b90fb..1debb4b67 100644 --- a/runtime/starpu/codelets/codelet_dataflush.c +++ b/runtime/starpu/codelets/codelet_dataflush.c @@ -26,7 +26,8 @@ **/ #include "runtime/starpu/include/morse_starpu.h" -#ifdef CHAMELEON_USE_STARPU_IDLE_PREFETCH +#ifdef CHAMELEON_USE_STARPU_DATA_WONT_USE +#elif defined CHAMELEON_USE_STARPU_IDLE_PREFETCH static void data_flush(void *handle) { starpu_data_idle_prefetch_on_node(handle, STARPU_MAIN_RAM, 1); @@ -62,7 +63,9 @@ void MORSE_TASK_dataflush(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_IDLE_PREFETCH +#ifdef CHAMELEON_USE_STARPU_DATA_WONT_USE + starpu_data_wont_use(*ptrtile); +#elif defined CHAMELEON_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); -- GitLab