Kaynağa Gözat

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

Cédric Augonnet 15 yıl önce
ebeveyn
işleme
c2d9d95b6d

+ 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);