Objet : Developers list for StarPU
Archives de la liste
- From: Samuel Pitoiset <samuel.pitoiset@gmail.com>
- To: starpu-devel@lists.gforge.inria.fr
- Cc: Samuel Pitoiset <samuel.pitoiset@inria.fr>
- Subject: [Starpu-devel] [PATCH] openmp: expose a global arbiter
- Date: Mon, 1 Jun 2015 10:04:30 +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>
This allows to assign data to this global arbiter and to improve
performance when OpenMP tasks are commuted.
---
include/starpu_openmp.h | 1 +
src/util/openmp_runtime_support.c | 8 ++++++++
src/util/openmp_runtime_support.h | 1 +
3 files changed, 10 insertions(+)
diff --git a/include/starpu_openmp.h b/include/starpu_openmp.h
index 49e1211..2f8f557 100644
--- a/include/starpu_openmp.h
+++ b/include/starpu_openmp.h
@@ -161,6 +161,7 @@ extern void starpu_omp_atomic_fallback_inline_end(void)
__STARPU_OMP_NOTHROW;
extern double starpu_omp_get_wtime(void) __STARPU_OMP_NOTHROW;
extern double starpu_omp_get_wtick(void) __STARPU_OMP_NOTHROW;
extern void starpu_omp_vector_annotate(starpu_data_handle_t handle, uint32_t
slice_base) __STARPU_OMP_NOTHROW;
+extern struct starpu_arbiter *starpu_omp_get_default_arbiter(void)
__STARPU_OMP_NOTHROW;
#ifdef __cplusplus
}
diff --git a/src/util/openmp_runtime_support.c
b/src/util/openmp_runtime_support.c
index d78f379..41e0ebc 100644
--- a/src/util/openmp_runtime_support.c
+++ b/src/util/openmp_runtime_support.c
@@ -900,6 +900,7 @@ int starpu_omp_init(void)
_global_state.initial_task = create_omp_task_struct(NULL,
_global_state.initial_thread,
_global_state.initial_region, 1);
_global_state.default_critical = create_omp_critical_struct();
+ _global_state.default_arbiter = starpu_arbiter_create();
_global_state.named_criticals = NULL;
_starpu_spin_init(&_global_state.named_criticals_lock);
_global_state.hash_workers = NULL;
@@ -929,6 +930,8 @@ void starpu_omp_shutdown(void)
_global_state.initial_device = NULL;
destroy_omp_critical_struct(_global_state.default_critical);
_global_state.default_critical = NULL;
+ starpu_arbiter_destroy(_global_state.default_arbiter);
+ _global_state.default_arbiter = NULL;
_starpu_spin_lock(&_global_state.named_criticals_lock);
{
struct starpu_omp_critical *critical, *tmp;
@@ -2480,6 +2483,11 @@ void starpu_omp_vector_annotate(starpu_data_handle_t
handle, uint32_t slice_base
vector_interface->slice_base = slice_base;
}
+struct starpu_arbiter *starpu_omp_get_default_arbiter(void)
+{
+ return _global_state.default_arbiter;
+}
+
/*
* restore deprecated diagnostics (-Wdeprecated-declarations)
*/
diff --git a/src/util/openmp_runtime_support.h
b/src/util/openmp_runtime_support.h
index 5072fa3..68094d6 100644
--- a/src/util/openmp_runtime_support.h
+++ b/src/util/openmp_runtime_support.h
@@ -366,6 +366,7 @@ struct starpu_omp_global
struct _starpu_spinlock named_criticals_lock;
struct starpu_omp_thread *hash_workers;
struct _starpu_spinlock hash_workers_lock;
+ struct starpu_arbiter *default_arbiter;;
int nb_starpu_cpu_workers;
int *starpu_cpu_worker_ids;
};
--
2.4.2
- [Starpu-devel] [PATCH] openmp: expose a global arbiter, Samuel Pitoiset, 01/06/2015
Archives gérées par MHonArc 2.6.19+.