Przeglądaj źródła

add sched_data field in data_handle

Samuel Thibault 4 lat temu
rodzic
commit
0aa1b64a79

+ 12 - 0
include/starpu_data.h

@@ -606,6 +606,18 @@ void starpu_data_set_user_data(starpu_data_handle_t handle, void* user_data);
 void *starpu_data_get_user_data(starpu_data_handle_t handle);
 
 /**
+   Set the field \c sched_data for the \p handle to \p sched_data . It can
+   then be retrieved with starpu_data_get_sched_data(). \p sched_data can be any
+   scheduler-defined value.
+*/
+void starpu_data_set_sched_data(starpu_data_handle_t handle, void* sched_data);
+
+/**
+   Retrieve the field \c sched_data previously set for the \p handle.
+*/
+void *starpu_data_get_sched_data(starpu_data_handle_t handle);
+
+/**
   Check whether data \p handle can be evicted now from node \p node
 */
 int starpu_data_can_evict(starpu_data_handle_t handle, unsigned node, enum starpu_is_prefetch is_prefetch);

+ 4 - 0
src/datawizard/coherency.h

@@ -317,6 +317,10 @@ struct _starpu_data_state
 	/** A generic pointer to data in the user land (could be anything and this
 	 * is not manage by StarPU) */
 	void *user_data;
+
+	/** A generic pointer to data in the scheduler (could be anything and this
+	 * is managed by the scheduler) */
+	void *sched_data;
 };
 
 /** This does not take a reference on the handle, the caller has to do it,

+ 1 - 0
src/datawizard/interfaces/data_interface.c

@@ -542,6 +542,7 @@ int _starpu_data_handle_init(starpu_data_handle_t handle, struct starpu_data_int
 	//handle->coordinates = {};
 
 	//handle->user_data = NULL;
+	//handle->sched_data = NULL;
 
 
 	return 0;

+ 10 - 0
src/datawizard/memalloc.c

@@ -1924,3 +1924,13 @@ void *starpu_data_get_user_data(starpu_data_handle_t handle)
 {
 	return handle->user_data;
 }
+
+void starpu_data_set_sched_data(starpu_data_handle_t handle, void* sched_data)
+{
+	handle->sched_data = sched_data;
+}
+
+void *starpu_data_get_sched_data(starpu_data_handle_t handle)
+{
+	return handle->sched_data;
+}