瀏覽代碼

do not make _starpu_prefetch_data_on_node_with_mode wait for the request when async is true

Samuel Thibault 13 年之前
父節點
當前提交
6f253ca156
共有 1 個文件被更改,包括 6 次插入6 次删除
  1. 6 6
      src/datawizard/user_interactions.c

+ 6 - 6
src/datawizard/user_interactions.c

@@ -293,13 +293,13 @@ static void _prefetch_data_on_node(void *arg)
 	ret = _starpu_fetch_data_on_node(handle, replicate, STARPU_R, wrapper->async, NULL, NULL);
 	ret = _starpu_fetch_data_on_node(handle, replicate, STARPU_R, wrapper->async, NULL, NULL);
         STARPU_ASSERT(!ret);
         STARPU_ASSERT(!ret);
 
 
-        PTHREAD_MUTEX_LOCK(&wrapper->lock);
-	wrapper->finished = 1;
-	PTHREAD_COND_SIGNAL(&wrapper->cond);
-	PTHREAD_MUTEX_UNLOCK(&wrapper->lock);
-
 	if (!wrapper->async)
 	if (!wrapper->async)
 	{
 	{
+		PTHREAD_MUTEX_LOCK(&wrapper->lock);
+		wrapper->finished = 1;
+		PTHREAD_COND_SIGNAL(&wrapper->cond);
+		PTHREAD_MUTEX_UNLOCK(&wrapper->lock);
+
 		_starpu_spin_lock(&handle->header_lock);
 		_starpu_spin_lock(&handle->header_lock);
 		_starpu_notify_data_dependencies(handle);
 		_starpu_notify_data_dependencies(handle);
 		_starpu_spin_unlock(&handle->header_lock);
 		_starpu_spin_unlock(&handle->header_lock);
@@ -340,7 +340,7 @@ int _starpu_prefetch_data_on_node_with_mode(starpu_data_handle handle, unsigned
 			_starpu_spin_unlock(&handle->header_lock);
 			_starpu_spin_unlock(&handle->header_lock);
 		}
 		}
 	}
 	}
-	else {
+	else if (!async) {
 		PTHREAD_MUTEX_LOCK(&wrapper.lock);
 		PTHREAD_MUTEX_LOCK(&wrapper.lock);
 		while (!wrapper.finished)
 		while (!wrapper.finished)
 			PTHREAD_COND_WAIT(&wrapper.cond, &wrapper.lock);
 			PTHREAD_COND_WAIT(&wrapper.cond, &wrapper.lock);