Преглед на файлове

Make drivers wait for all transfer completions, to make sure not to free some data which is still being transferred

Samuel Thibault преди 13 години
родител
ревизия
30302c54d6
променени са 4 файла, в които са добавени 8 реда и са изтрити 0 реда
  1. 2 0
      src/drivers/cpu/driver_cpu.c
  2. 2 0
      src/drivers/cuda/driver_cuda.c
  3. 2 0
      src/drivers/gordon/driver_gordon.c
  4. 2 0
      src/drivers/opencl/driver_opencl.c

+ 2 - 0
src/drivers/cpu/driver_cpu.c

@@ -208,6 +208,8 @@ void *_starpu_cpu_worker(void *arg)
 
 	STARPU_TRACE_WORKER_DEINIT_START
 
+	_starpu_handle_all_pending_node_data_requests(memnode);
+
 	/* In case there remains some memory that was automatically
 	 * allocated by StarPU, we release it now. Note that data
 	 * coherency is not maintained anymore at that point ! */

+ 2 - 0
src/drivers/cuda/driver_cuda.c

@@ -344,6 +344,8 @@ void *_starpu_cuda_worker(void *arg)
 
 	STARPU_TRACE_WORKER_DEINIT_START
 
+	_starpu_handle_all_pending_node_data_requests(memnode);
+
 	/* In case there remains some memory that was automatically
 	 * allocated by StarPU, we release it now. Note that data
 	 * coherency is not maintained anymore at that point ! */

+ 2 - 0
src/drivers/gordon/driver_gordon.c

@@ -467,6 +467,8 @@ void *_starpu_gordon_worker(void *arg)
 
 	gordon_worker_inject(gordon_set_arg);
 
+	_starpu_handle_all_pending_node_data_requests(memnode);
+
 	_STARPU_DEBUG("gordon deinit...\n");
 	gordon_deinit();
 	_STARPU_DEBUG("gordon was deinited\n");

+ 2 - 0
src/drivers/opencl/driver_opencl.c

@@ -514,6 +514,8 @@ void *_starpu_opencl_worker(void *arg)
 
 	STARPU_TRACE_WORKER_DEINIT_START
 
+	_starpu_handle_all_pending_node_data_requests(memnode);
+
         _starpu_opencl_deinit_context(devid);
 
 	pthread_exit(NULL);