diff --git a/runtime/src/kmp_tasking.c b/runtime/src/kmp_tasking.c index 70b67931d094b9e633d68d293d450e902ebae97d..2d29aef8f1375495156ac939ffff06fe944d73af 100644 --- a/runtime/src/kmp_tasking.c +++ b/runtime/src/kmp_tasking.c @@ -1913,6 +1913,8 @@ __kmp_steal_task( kmp_info_t *victim, kmp_int32 gtid, kmp_task_team_t *task_team taskdata = 0; #if LIBOMP_USE_AFFINITY + kmp_info_t* thread = __kmp_threads[ gtid ]; + for (int ii=0; ii<8; ++ii) { for (int i=0; i<8; ++i) @@ -1933,22 +1935,19 @@ __kmp_steal_task( kmp_info_t *victim, kmp_int32 gtid, kmp_task_team_t *task_team } victim_queue = &victim_td->td.td_tasks_queues[KMP_LEVEL_CORE]->qd; - if (!kaapi_wsqueue_empty(&(victim_queue->td_wsdeque))) + if (!kaapi_wsqueue_empty(&victim_queue->td_wsdeque)) { - taskdata = kaapi_wsqueue_steal_task( &(victim_queue->td_wsdeque) ); + taskdata = kaapi_wsqueue_steal_task( &victim_queue->td_wsdeque ); if (taskdata) goto return_from; } -#if 0 { /* random steal on NUMA node */ - int numa_victim = __kmp_get_random(thread) % kaapi_all_places_count[KAAPI_HWS_LEVELID_NUMA]; - if (!kaapi_wsqueue_empty(kaapi_all_places[KAAPI_HWS_LEVELID_NUMA][numa_victim]->queue)) - taskdata = kaapi_wsqueue_steal_task( - kaapi_all_places[KAAPI_HWS_LEVELID_NUMA][numa_victim]->queue - ); + int numa_victim = __kmp_get_random(thread) % task_team->tt.tt_nodes_count; + victim_queue = &task_team->tt.tt_nodes_tasks_queues[numa_victim]->qd; + if (!kaapi_wsqueue_empty( &victim_queue->td_wsdeque )) + taskdata = kaapi_wsqueue_steal_task( &victim_queue->td_wsdeque ); if (taskdata) goto return_from; } -#endif } #endif victim_queue = &victim_td->td.td_tasks_queues[KMP_LEVEL_CORE]->qd;