瀏覽代碼

Use the _starpu_data_descr index instead of adding a sequential_consistency field there

Samuel Thibault 6 年之前
父節點
當前提交
01cbb5c946
共有 4 個文件被更改,包括 4 次插入9 次删除
  1. 1 1
      include/starpu_task.h
  2. 0 3
      src/core/dependencies/data_concurrency.c
  3. 3 2
      src/core/dependencies/implicit_data_deps.c
  4. 0 3
      src/core/jobs.h

+ 1 - 1
include/starpu_task.h

@@ -153,7 +153,7 @@ struct starpu_task
 	void *interfaces[STARPU_NMAXBUFS];
 	enum starpu_data_access_mode modes[STARPU_NMAXBUFS];
 
-	char *handles_sequential_consistency;
+	unsigned char *handles_sequential_consistency;
 
 	void *cl_arg;
 	size_t cl_arg_size;

+ 0 - 3
src/core/dependencies/data_concurrency.c

@@ -358,9 +358,6 @@ void _starpu_job_set_ordered_buffers(struct _starpu_job *j)
 		if (task->cl->specific_nodes)
 			node = STARPU_CODELET_GET_NODE(task->cl, i);
 		_STARPU_JOB_SET_ORDERED_BUFFER_NODE(j, node, i);
-
-		unsigned sequential_consistency = task->handles_sequential_consistency ? task->handles_sequential_consistency[i] : handle->sequential_consistency;
-		_STARPU_JOB_SET_ORDERED_BUFFER_SEQUENTIAL_CONSISTENCY(j, sequential_consistency, i);
 	}
 	_starpu_sort_task_handles(_STARPU_JOB_GET_ORDERED_BUFFERS(j), nbuffers);
 }

+ 3 - 2
src/core/dependencies/implicit_data_deps.c

@@ -414,8 +414,9 @@ void _starpu_detect_implicit_data_deps(struct starpu_task *task)
 		}
 
 		STARPU_PTHREAD_MUTEX_LOCK(&handle->sequential_consistency_mutex);
-		unsigned task_handle_sequential_consistency = _STARPU_JOB_GET_ORDERED_BUFFER_SEQUENTIAL_CONSISTENCY(j, buffer);
-		if (!handle->sequential_consistency || !task_handle_sequential_consistency)
+		unsigned index = _STARPU_JOB_GET_ORDERED_BUFFER_INDEX(j, buffer);
+		unsigned task_handle_sequential_consistency = task->handles_sequential_consistency ? task->handles_sequential_consistency[index] : handle->sequential_consistency;
+		if (!task_handle_sequential_consistency)
 			j->sequential_consistency = 0;
 		new_task = _starpu_detect_implicit_data_deps_with_handle(task, task, &dep_slots[buffer], handle, mode, task_handle_sequential_consistency);
 		STARPU_PTHREAD_MUTEX_UNLOCK(&handle->sequential_consistency_mutex);

+ 0 - 3
src/core/jobs.h

@@ -63,7 +63,6 @@ struct _starpu_data_descr
 	enum starpu_data_access_mode mode;
 	int node;
 	int index;
-	unsigned sequential_consistency;
 };
 
 #ifdef STARPU_DEBUG
@@ -272,13 +271,11 @@ int _starpu_push_local_task(struct _starpu_worker *worker, struct starpu_task *t
 #define _STARPU_JOB_GET_ORDERED_BUFFER_HANDLE(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].handle : job->ordered_buffers[i].handle)
 #define _STARPU_JOB_GET_ORDERED_BUFFER_MODE(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].mode : job->ordered_buffers[i].mode)
 #define _STARPU_JOB_GET_ORDERED_BUFFER_NODE(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].node : job->ordered_buffers[i].node)
-#define _STARPU_JOB_GET_ORDERED_BUFFER_SEQUENTIAL_CONSISTENCY(job, i) ((job->dyn_ordered_buffers) ? job->dyn_ordered_buffers[i].sequential_consistency : job->ordered_buffers[i].sequential_consistency)
 
 #define _STARPU_JOB_SET_ORDERED_BUFFER_INDEX(job, __index, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].index = (__index); else job->ordered_buffers[i].index = (__index);} while(0)
 #define _STARPU_JOB_SET_ORDERED_BUFFER_HANDLE(job, __handle, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].handle = (__handle); else job->ordered_buffers[i].handle = (__handle);} while(0)
 #define _STARPU_JOB_SET_ORDERED_BUFFER_MODE(job, __mode, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].mode = __mode; else job->ordered_buffers[i].mode = __mode;} while(0)
 #define _STARPU_JOB_SET_ORDERED_BUFFER_NODE(job, __node, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].node = __node; else job->ordered_buffers[i].node = __node;} while(0)
-#define _STARPU_JOB_SET_ORDERED_BUFFER_SEQUENTIAL_CONSISTENCY(job, __sequential_consistency, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i].sequential_consistency = (__sequential_consistency); else job->ordered_buffers[i].sequential_consistency = (__sequential_consistency);} while(0)
 
 #define _STARPU_JOB_SET_ORDERED_BUFFER(job, buffer, i) do { if (job->dyn_ordered_buffers) job->dyn_ordered_buffers[i] = buffer; else job->ordered_buffers[i] = buffer;} while(0)
 #define _STARPU_JOB_GET_ORDERED_BUFFERS(job) (job->dyn_ordered_buffers) ? job->dyn_ordered_buffers : job->ordered_buffers