Browse Source

Update implicit task dependency releases according to acquisitions

Samuel Thibault 7 years ago
parent
commit
3d5576c523
1 changed files with 11 additions and 1 deletions
  1. 11 1
      src/core/dependencies/implicit_data_deps.c

+ 11 - 1
src/core/dependencies/implicit_data_deps.c

@@ -516,7 +516,17 @@ void _starpu_release_task_enforce_sequential_consistency(struct _starpu_job *j)
 	/* Release all implicit dependencies */
 	for (index = 0; index < nbuffers; index++)
 	{
-		starpu_data_handle_t handle = STARPU_TASK_GET_HANDLE(task, index);
+		starpu_data_handle_t handle = _STARPU_JOB_GET_ORDERED_BUFFER_HANDLE(j, index);
+		starpu_data_handle_t mode = _STARPU_JOB_GET_ORDERED_BUFFER_MODE(j, index);
+
+		if (index)
+		{
+			starpu_data_handle_t handle_m1 = _STARPU_JOB_GET_ORDERED_BUFFER_HANDLE(j, index - 1);
+			starpu_data_handle_t mode_m1 = _STARPU_JOB_GET_ORDERED_BUFFER_MODE(j, index - 1);
+			if (handle_m1 == handle && mode_m1 == mode)
+				/* See _starpu_detect_implicit_data_deps */
+				continue;
+		}
 
 		_starpu_release_data_enforce_sequential_consistency(task, &slots[index], handle);
 	}