瀏覽代碼

Avoid a race condition when updating the number of tasks previously executed in
the job queue.

Cédric Augonnet 15 年之前
父節點
當前提交
c2d9d95b6d
共有 3 個文件被更改,包括 3 次插入3 次删除
  1. 1 1
      src/drivers/cpu/driver_cpu.c
  2. 1 1
      src/drivers/cuda/driver_cuda.c
  3. 1 1
      src/drivers/opencl/driver_opencl.c

+ 1 - 1
src/drivers/cpu/driver_cpu.c

@@ -90,7 +90,7 @@ static int execute_job_on_cpu(starpu_job_t j, struct starpu_worker_s *cpu_args)
 	}
 //#endif
 
-	cpu_args->jobq->total_job_performed++;
+	STARPU_ATOMIC_ADD(&cpu_args->jobq->total_job_performed, 1);
 
 	return 0;
 }

+ 1 - 1
src/drivers/cuda/driver_cuda.c

@@ -157,7 +157,7 @@ static int execute_job_on_cuda(starpu_job_t j, struct starpu_worker_s *args)
 			_starpu_update_perfmodel_history(j, args->perf_arch, (unsigned)args->devid, measured);
 	}
 
-	args->jobq->total_job_performed++;
+	STARPU_ATOMIC_ADD(&args->jobq->total_job_performed, 1);
 
 	_starpu_push_task_output(task, mask);
 

+ 1 - 1
src/drivers/opencl/driver_opencl.c

@@ -405,7 +405,7 @@ static int _starpu_opencl_execute_job(starpu_job_t j, struct starpu_worker_s *ar
 			_starpu_update_perfmodel_history(j, args->perf_arch, (unsigned)args->devid, measured);
 	}
 
-	args->jobq->total_job_performed++;
+	STARPU_ATOMIC_ADD(&args->jobq->total_job_performed, 1);
 
 	_starpu_push_task_output(task, mask);