|
@@ -115,8 +115,9 @@ static void starpu_data_acquire_cb_pre_sync_callback(void *arg)
|
|
|
}
|
|
|
|
|
|
/* The data must be released by calling starpu_data_release later on */
|
|
|
-int starpu_data_acquire_on_node_cb(starpu_data_handle_t handle, unsigned node,
|
|
|
- enum starpu_data_access_mode mode, void (*callback)(void *), void *arg)
|
|
|
+int starpu_data_acquire_on_node_cb_sequential_consistency(starpu_data_handle_t handle, unsigned node,
|
|
|
+ enum starpu_data_access_mode mode, void (*callback)(void *), void *arg,
|
|
|
+ int sequential_consistency)
|
|
|
{
|
|
|
STARPU_ASSERT(handle);
|
|
|
STARPU_ASSERT_MSG(handle->nchildren == 0, "Acquiring a partitioned data (%p) is not possible", handle);
|
|
@@ -137,8 +138,8 @@ int starpu_data_acquire_on_node_cb(starpu_data_handle_t handle, unsigned node,
|
|
|
wrapper->post_sync_task = NULL;
|
|
|
|
|
|
STARPU_PTHREAD_MUTEX_LOCK(&handle->sequential_consistency_mutex);
|
|
|
- int sequential_consistency = handle->sequential_consistency;
|
|
|
- if (sequential_consistency)
|
|
|
+ int handle_sequential_consistency = handle->sequential_consistency;
|
|
|
+ if (handle_sequential_consistency && sequential_consistency)
|
|
|
{
|
|
|
struct starpu_task *new_task;
|
|
|
wrapper->pre_sync_task = starpu_task_create();
|
|
@@ -180,12 +181,25 @@ int starpu_data_acquire_on_node_cb(starpu_data_handle_t handle, unsigned node,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+int starpu_data_acquire_on_node_cb(starpu_data_handle_t handle, unsigned node,
|
|
|
+ enum starpu_data_access_mode mode, void (*callback)(void *), void *arg)
|
|
|
+{
|
|
|
+ return starpu_data_acquire_on_node_cb_sequential_consistency(handle, node, mode, callback, arg, 1);
|
|
|
+}
|
|
|
+
|
|
|
int starpu_data_acquire_cb(starpu_data_handle_t handle,
|
|
|
enum starpu_data_access_mode mode, void (*callback)(void *), void *arg)
|
|
|
{
|
|
|
return starpu_data_acquire_on_node_cb(handle, 0, mode, callback, arg);
|
|
|
}
|
|
|
|
|
|
+int starpu_data_acquire_cb_sequential_consistency(starpu_data_handle_t handle,
|
|
|
+ enum starpu_data_access_mode mode, void (*callback)(void *), void *arg, int sequential_consistency)
|
|
|
+{
|
|
|
+ return starpu_data_acquire_on_node_cb_sequential_consistency(handle, 0, mode, callback, arg, sequential_consistency);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Block data request from application
|
|
|
*/
|