From 723095fb3767b16ccc837acf67674c9249fa2efc Mon Sep 17 00:00:00 2001 From: Samuel Thibault <samuel.thibault@inria.fr> Date: Tue, 24 Mar 2015 16:27:34 +0000 Subject: [PATCH] Push flushed data to main memory when we have time to --- runtime/starpu/codelets/codelet_dataflush.c | 28 ++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/runtime/starpu/codelets/codelet_dataflush.c b/runtime/starpu/codelets/codelet_dataflush.c index 8f9115237..3f366f696 100644 --- a/runtime/starpu/codelets/codelet_dataflush.c +++ b/runtime/starpu/codelets/codelet_dataflush.c @@ -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. * **/ @@ -26,6 +26,19 @@ **/ #include "runtime/starpu/include/morse_starpu.h" +#ifdef CHAMELEON_USE_STARPU_IDLE_PREFETCH +static void data_flush(void *handle) +{ + starpu_data_idle_prefetch_on_node(handle, STARPU_MAIN_RAM, 1); + starpu_data_release_on_node(handle, -1); +} +#else +static void data_release(void *handle) +{ + starpu_data_release(handle); +} +#endif + void MORSE_TASK_dataflush(MORSE_option_t *options, MORSE_desc_t *A, int Am, int An) { @@ -36,15 +49,24 @@ void MORSE_TASK_dataflush(MORSE_option_t *options, * compute the handle address in starpu. We have to be careful with this if * something similar happen in Quark. */ -#if defined(CHAMELEON_USE_MPI) { starpu_data_handle_t *ptrtile = (starpu_data_handle_t*)(A->schedopt); ptrtile += ((int64_t)(A->lmt) * (int64_t)An + (int64_t)Am); if (*ptrtile != NULL) + { +#if defined(CHAMELEON_USE_MPI) starpu_mpi_cache_flush(MPI_COMM_WORLD, *ptrtile); - } #endif + + /* Push data to main memory when we have time to */ +#ifdef 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); +#endif + } + } } void MORSE_TASK_dataflush_all() -- GitLab