Objet : Developers list for StarPU
Archives de la liste
- From: Sylvain HENRY <sylvain.henry@inria.fr>
- To: "starpu-devel@lists.gforge.inria.fr" <starpu-devel@lists.gforge.inria.fr>
- Subject: [Starpu-devel] Lazy data unregistering
- Date: Tue, 29 May 2012 20:09:15 +0200
- List-archive: <http://lists.gforge.inria.fr/pipermail/starpu-devel>
- List-id: "Developers list. For discussion of new features, code changes, etc." <starpu-devel.lists.gforge.inria.fr>
Hey!
I want to be able to tell StarPU when a data is no longer required by host code, so that it can destroy it once every task that may use it has completed.
Does the attached patch seem correct? I tried to reuse lazy unregistering used internally by the reduction mode but I may have missed something.
Cheers
Sylvain
>From 619e2574cb656d9c4f318304a634ad4d26595058 Mon Sep 17 00:00:00 2001 From: Sylvain HENRY <sylvain.henry@inria.fr> Date: Tue, 29 May 2012 19:58:13 +0200 Subject: [PATCH] Add starpu_data_unregister_lazy(handle) Sometimes applications want to be able to tell StarPU to destroy a data once every task submitted that may use it has completed. This new API allows it. --- include/starpu_data.h | 5 +++++ src/datawizard/interfaces/data_interface.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/include/starpu_data.h b/include/starpu_data.h index b1ef5ef..9b656d6 100644 --- a/include/starpu_data.h +++ b/include/starpu_data.h @@ -52,6 +52,11 @@ struct starpu_data_interface_ops; void starpu_data_unregister(starpu_data_handle_t handle); void starpu_data_unregister_no_coherency(starpu_data_handle_t handle); +/* Destroy the data handle once it is not needed anymore by any submitted task. + * No coherency is assumed. + */ +void starpu_data_unregister_lazy(starpu_data_handle_t handle); + /* Destroy all data replicates. After data invalidation, the first access to * the handle must be performed in write-only mode. */ void starpu_data_invalidate(starpu_data_handle_t handle); diff --git a/src/datawizard/interfaces/data_interface.c b/src/datawizard/interfaces/data_interface.c index aa895e8..50dafa9 100644 --- a/src/datawizard/interfaces/data_interface.c +++ b/src/datawizard/interfaces/data_interface.c @@ -586,6 +586,13 @@ void starpu_data_unregister_no_coherency(starpu_data_handle_t handle) _starpu_data_unregister(handle, 0); } +void starpu_data_unregister_lazy(starpu_data_handle_t handle) { + _starpu_spin_lock(&handle->header_lock); + handle->lazy_unregister = 1; + _starpu_spin_unlock(&handle->header_lock); + _starpu_data_unregister(handle, 0); +} + void starpu_data_invalidate(starpu_data_handle_t handle) { STARPU_ASSERT(handle); -- 1.7.10.2
- [Starpu-devel] Lazy data unregistering, Sylvain HENRY, 29/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Samuel Thibault, 29/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Cyril Roelandt, 30/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Sylvain HENRY, 31/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Samuel Thibault, 31/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Sylvain HENRY, 31/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Cyril Roelandt, 30/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Samuel Thibault, 30/05/2012
- Re: [Starpu-devel] Lazy data unregistering, Samuel Thibault, 29/05/2012
Archives gérées par MHonArc 2.6.19+.