|
@@ -98,6 +98,7 @@ static int execute_job_on_cpu(starpu_job_t j, struct starpu_worker_s *cpu_args)
|
|
|
void *_starpu_cpu_worker(void *arg)
|
|
|
{
|
|
|
struct starpu_worker_s *cpu_arg = arg;
|
|
|
+ struct starpu_jobq_s *jobq = cpu_arg->jobq;
|
|
|
|
|
|
#ifdef STARPU_USE_FXT
|
|
|
_starpu_fxt_register_thread(cpu_arg->bindid);
|
|
@@ -112,22 +113,26 @@ void *_starpu_cpu_worker(void *arg)
|
|
|
|
|
|
_starpu_set_local_memory_node_key(&cpu_arg->memory_node);
|
|
|
|
|
|
- _starpu_set_local_queue(cpu_arg->jobq);
|
|
|
+ _starpu_set_local_queue(jobq);
|
|
|
|
|
|
_starpu_set_local_worker_key(cpu_arg);
|
|
|
|
|
|
snprintf(cpu_arg->name, 32, "CPU %d", cpu_arg->devid);
|
|
|
|
|
|
+ PTHREAD_MUTEX_LOCK(&jobq->activity_mutex);
|
|
|
+
|
|
|
/* this is only useful (and meaningful) is there is a single
|
|
|
memory node "related" to that queue */
|
|
|
- cpu_arg->jobq->memory_node = cpu_arg->memory_node;
|
|
|
+ jobq->memory_node = cpu_arg->memory_node;
|
|
|
|
|
|
- cpu_arg->jobq->total_computation_time = 0.0;
|
|
|
- cpu_arg->jobq->total_communication_time = 0.0;
|
|
|
- cpu_arg->jobq->total_computation_time_error = 0.0;
|
|
|
- cpu_arg->jobq->total_job_performed = 0;
|
|
|
+ jobq->total_computation_time = 0.0;
|
|
|
+ jobq->total_communication_time = 0.0;
|
|
|
+ jobq->total_computation_time_error = 0.0;
|
|
|
+ jobq->total_job_performed = 0;
|
|
|
|
|
|
cpu_arg->status = STATUS_UNKNOWN;
|
|
|
+
|
|
|
+ PTHREAD_MUTEX_UNLOCK(&jobq->activity_mutex);
|
|
|
|
|
|
STARPU_TRACE_WORKER_INIT_END
|
|
|
|
|
@@ -205,17 +210,17 @@ void *_starpu_cpu_worker(void *arg)
|
|
|
_starpu_free_all_automatically_allocated_buffers(memnode);
|
|
|
|
|
|
#ifdef STARPU_DATA_STATS
|
|
|
- fprintf(stderr, "CPU #%d computation %le comm %le (%lf \%%)\n", cpu_arg->devid, cpu_arg->jobq->total_computation_time, cpu_arg->jobq->total_communication_time, cpu_arg->jobq->total_communication_time*100.0/cpu_arg->jobq->total_computation_time);
|
|
|
+ fprintf(stderr, "CPU #%d computation %le comm %le (%lf \%%)\n", cpu_arg->devid, jobq->total_computation_time, jobq->total_communication_time, jobq->total_communication_time*100.0/jobq->total_computation_time);
|
|
|
#endif
|
|
|
|
|
|
#ifdef STARPU_VERBOSE
|
|
|
double ratio = 0;
|
|
|
- if (cpu_arg->jobq->total_job_performed != 0)
|
|
|
+ if (jobq->total_job_performed != 0)
|
|
|
{
|
|
|
- ratio = cpu_arg->jobq->total_computation_time_error/cpu_arg->jobq->total_computation_time;
|
|
|
+ ratio = jobq->total_computation_time_error/jobq->total_computation_time;
|
|
|
}
|
|
|
|
|
|
- _starpu_print_to_logfile("MODEL ERROR: CPU %d ERROR %lf EXEC %lf RATIO %lf NTASKS %d\n", cpu_arg->devid, cpu_arg->jobq->total_computation_time_error, cpu_arg->jobq->total_computation_time, ratio, cpu_arg->jobq->total_job_performed);
|
|
|
+ _starpu_print_to_logfile("MODEL ERROR: CPU %d ERROR %lf EXEC %lf RATIO %lf NTASKS %d\n", cpu_arg->devid, jobq->total_computation_time_error, jobq->total_computation_time, ratio, jobq->total_job_performed);
|
|
|
#endif
|
|
|
|
|
|
STARPU_TRACE_WORKER_DEINIT_END(STARPU_FUT_CPU_KEY);
|