#include "kmp.h"
#include "kmp_i18n.h"
#include "kmp_io.h"
#include "kmp_error.h"
Go to the source code of this file.
Defines | |
#define | KMP_DEBUG_REF_CTS(x) KF_TRACE(1, x); |
#define | MAX_MESSAGE 512 |
#define | THREAD_ALLOC_FOR_TASKQ |
Functions | |
static kmpc_task_queue_t * | __kmp_alloc_taskq (kmp_taskq_t *tq, int in_parallel, kmp_int32 nslots, kmp_int32 nthunks, kmp_int32 nshareds, kmp_int32 nproc, size_t sizeof_thunk, size_t sizeof_shareds, kmpc_thunk_t **new_taskq_thunk, kmp_int32 global_tid) |
static kmpc_thunk_t * | __kmp_alloc_thunk (kmpc_task_queue_t *queue, int in_parallel, kmp_int32 global_tid) |
static void | __kmp_aux_dump_task_queue_tree (kmp_taskq_t *tq, kmpc_task_queue_t *curr_queue, kmp_int32 level, kmp_int32 global_tid) |
static kmpc_thunk_t * | __kmp_dequeue_task (kmp_int32 global_tid, kmpc_task_queue_t *queue, int in_parallel) |
static void | __kmp_dump_task_queue (kmp_taskq_t *tq, kmpc_task_queue_t *queue, kmp_int32 global_tid) |
static void | __kmp_dump_task_queue_tree (kmp_taskq_t *tq, kmpc_task_queue_t *tqroot, kmp_int32 global_tid) |
static void | __kmp_dump_thunk (kmp_taskq_t *tq, kmpc_thunk_t *thunk, kmp_int32 global_tid) |
static void | __kmp_dump_thunk_stack (kmpc_thunk_t *thunk, kmp_int32 thread_num) |
static void | __kmp_dump_TQF (kmp_int32 flags) |
static kmp_int32 | __kmp_enqueue_task (kmp_taskq_t *tq, kmp_int32 global_tid, kmpc_task_queue_t *queue, kmpc_thunk_t *thunk, int in_parallel) |
static void | __kmp_execute_task_from_queue (kmp_taskq_t *tq, ident_t *loc, kmp_int32 global_tid, kmpc_thunk_t *thunk, int in_parallel) |
static void | __kmp_find_and_remove_finished_child_taskq (kmp_taskq_t *tq, kmp_int32 global_tid, kmpc_task_queue_t *curr_queue) |
static kmpc_thunk_t * | __kmp_find_task_in_ancestor_queue (kmp_taskq_t *tq, kmp_int32 global_tid, kmpc_task_queue_t *curr_queue) |
static kmpc_thunk_t * | __kmp_find_task_in_descendant_queue (kmp_int32 global_tid, kmpc_task_queue_t *curr_queue) |
static kmpc_thunk_t * | __kmp_find_task_in_queue (kmp_int32 global_tid, kmpc_task_queue_t *queue) |
static void | __kmp_free_taskq (kmp_taskq_t *tq, kmpc_task_queue_t *p, int in_parallel, kmp_int32 global_tid) |
static void | __kmp_free_thunk (kmpc_task_queue_t *queue, kmpc_thunk_t *p, int in_parallel, kmp_int32 global_tid) |
static void | __kmp_remove_all_child_taskq (kmp_taskq_t *tq, kmp_int32 global_tid, kmpc_task_queue_t *queue) |
static void | __kmp_remove_queue_from_tree (kmp_taskq_t *tq, kmp_int32 global_tid, kmpc_task_queue_t *queue, int in_parallel) |
static void | __kmp_static_delay (int arg) |
static void | __kmp_static_yield (int arg) |
static void * | __kmp_taskq_allocate (size_t size, kmp_int32 global_tid) |
static void | __kmp_taskq_check_ordered (kmp_int32 gtid, kmpc_thunk_t *thunk) |
static void | __kmp_taskq_eo (int *gtid_ref, int *cid_ref, ident_t *loc_ref) |
static int | __kmp_taskq_has_any_children (kmpc_task_queue_t *queue) |
static int | __kmp_taskq_tasks_finished (kmpc_task_queue_t *queue) |
static void | __kmp_taskq_xo (int *gtid_ref, int *cid_ref, ident_t *loc_ref) |
void | __kmpc_end_taskq (ident_t *loc, kmp_int32 global_tid, kmpc_thunk_t *taskq_thunk) |
void | __kmpc_end_taskq_task (ident_t *loc, kmp_int32 global_tid, kmpc_thunk_t *thunk) |
kmp_int32 | __kmpc_task (ident_t *loc, kmp_int32 global_tid, kmpc_thunk_t *thunk) |
kmpc_thunk_t * | __kmpc_task_buffer (ident_t *loc, kmp_int32 global_tid, kmpc_thunk_t *taskq_thunk, kmpc_task_t task) |
kmpc_thunk_t * | __kmpc_taskq (ident_t *loc, kmp_int32 global_tid, kmpc_task_t taskq_task, size_t sizeof_thunk, size_t sizeof_shareds, kmp_int32 flags, kmpc_shared_vars_t **shareds) |
static void | __kmpc_taskq_free (void *p, kmp_int32 global_tid) |
void | __kmpc_taskq_task (ident_t *loc, kmp_int32 global_tid, kmpc_thunk_t *thunk, kmp_int32 status) |
static int | in_parallel_context (kmp_team_t *team) |
#define KMP_DEBUG_REF_CTS | ( | x | ) | KF_TRACE(1, x); |
Definition at line 61 of file kmp_taskq.c.
Referenced by __kmp_dequeue_task(), __kmp_execute_task_from_queue(), __kmp_find_and_remove_finished_child_taskq(), __kmp_find_task_in_ancestor_queue(), __kmp_find_task_in_descendant_queue(), __kmp_remove_queue_from_tree(), and __kmpc_taskq().
#define MAX_MESSAGE 512 |
Definition at line 52 of file kmp_taskq.c.
#define THREAD_ALLOC_FOR_TASKQ |
Definition at line 63 of file kmp_taskq.c.
static kmpc_task_queue_t* __kmp_alloc_taskq | ( | kmp_taskq_t * | tq, | |
int | in_parallel, | |||
kmp_int32 | nslots, | |||
kmp_int32 | nthunks, | |||
kmp_int32 | nshareds, | |||
kmp_int32 | nproc, | |||
size_t | sizeof_thunk, | |||
size_t | sizeof_shareds, | |||
kmpc_thunk_t ** | new_taskq_thunk, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 491 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_init_lock(), __kmp_release_lock(), __kmp_taskq_allocate(), kmpc_aligned_int32_t::ai_data, kmpc_aligned_shared_vars_t::ai_data, CACHE_LINE, i, KMP_DEBUG_ASSERT, KMP_MB, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th_next_free, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_free_thunks, kmpc_task_queue_t::tq_free_thunks_lck, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_next_free, kmpc_task_queue_t::tq_nproc, kmpc_task_queue_t::tq_queue, kmpc_task_queue_t::tq_queue_lck, kmpc_task_queue_t::tq_shareds, kmpc_task_queue_t::tq_th_thunks, kmpc_task_queue_t::tq_thunk_space, and TQF_DEALLOCATED.
Referenced by __kmpc_taskq().
static kmpc_thunk_t* __kmp_alloc_thunk | ( | kmpc_task_queue_t * | queue, | |
int | in_parallel, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 661 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_release_lock(), KMP_DEBUG_ASSERT, KMP_MB, kmpc_thunk_t::th, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_next_free, kmpc_task_queue_t::tq_free_thunks, and kmpc_task_queue_t::tq_free_thunks_lck.
Referenced by __kmpc_task_buffer().
static void __kmp_aux_dump_task_queue_tree | ( | kmp_taskq_t * | tq, | |
kmpc_task_queue_t * | curr_queue, | |||
kmp_int32 | level, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 357 of file kmp_taskq.c.
References __kmp_printf(), __kmp_threads, i, KMP_MB, kmpc_aligned_queue_slot_t::qs_thunk, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_queue, and kmpc_task_queue_t::tq_tail.
Referenced by __kmp_dump_task_queue_tree().
static kmpc_thunk_t* __kmp_dequeue_task | ( | kmp_int32 | global_tid, | |
kmpc_task_queue_t * | queue, | |||
int | in_parallel | |||
) | [static] |
Definition at line 767 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_release_lock(), __KMP_TASKQ_THUNKS_PER_TH, __kmp_tid_from_gtid, kmpc_aligned_int32_t::ai_data, KF_TRACE, KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_MB, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_parent, kmpc_task_queue_t::tq_queue, kmpc_task_queue_t::tq_ref_count, kmpc_task_queue_t::tq_tail, and kmpc_task_queue_t::tq_th_thunks.
Referenced by __kmp_find_task_in_queue(), __kmpc_end_taskq(), and __kmpc_task().
static void __kmp_dump_task_queue | ( | kmp_taskq_t * | tq, | |
kmpc_task_queue_t * | queue, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 240 of file kmp_taskq.c.
References __kmp_dump_thunk(), __kmp_dump_TQF(), __kmp_env_consistency_check, __kmp_printf(), i, KMP_MB, kmpc_thunk_t::th, kmpc_thunk_t::th_next_free, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_next_free, kmpc_task_queue_t::tq_parent, kmpc_task_queue_t::tq_prev_child, kmpc_task_queue_t::tq_ref_count, and TQF_PARALLEL_CONTEXT.
Referenced by __kmp_execute_task_from_queue(), __kmp_remove_queue_from_tree(), __kmpc_end_taskq(), __kmpc_task(), and __kmpc_taskq().
static void __kmp_dump_task_queue_tree | ( | kmp_taskq_t * | tq, | |
kmpc_task_queue_t * | tqroot, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 416 of file kmp_taskq.c.
References __kmp_aux_dump_task_queue_tree(), and __kmp_printf().
Referenced by __kmp_remove_queue_from_tree(), __kmpc_end_taskq(), and __kmpc_taskq().
static void __kmp_dump_thunk | ( | kmp_taskq_t * | tq, | |
kmpc_thunk_t * | thunk, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 202 of file kmp_taskq.c.
References __kmp_dump_TQF(), __kmp_printf(), __kmp_threads, i, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_thunk_t::th_status, kmpc_thunk_t::th_task, and kmpc_thunk_t::th_tasknum.
Referenced by __kmp_dump_task_queue(), __kmp_execute_task_from_queue(), __kmpc_task(), __kmpc_task_buffer(), __kmpc_taskq(), and __kmpc_taskq_task().
static void __kmp_dump_thunk_stack | ( | kmpc_thunk_t * | thunk, | |
kmp_int32 | thread_num | |||
) | [static] |
Definition at line 227 of file kmp_taskq.c.
References __kmp_printf(), and kmpc_thunk_t::th_encl_thunk.
Referenced by __kmp_execute_task_from_queue(), __kmpc_end_taskq_task(), __kmpc_taskq(), and __kmpc_taskq_task().
static void __kmp_dump_TQF | ( | kmp_int32 | flags | ) | [static] |
Definition at line 167 of file kmp_taskq.c.
References __kmp_printf(), TQF_ALL_TASKS_QUEUED, TQF_DEALLOCATED, TQF_HEURISTICS, TQF_INTERFACE_FLAGS, TQF_INTERFACE_RESERVED1, TQF_INTERFACE_RESERVED2, TQF_INTERFACE_RESERVED3, TQF_INTERFACE_RESERVED4, TQF_INTERNAL_FLAGS, TQF_IS_LAST_TASK, TQF_IS_LASTPRIVATE, TQF_IS_NOWAIT, TQF_IS_ORDERED, TQF_PARALLEL_CONTEXT, TQF_RELEASE_WORKERS, and TQF_TASKQ_TASK.
Referenced by __kmp_dump_task_queue(), and __kmp_dump_thunk().
static kmp_int32 __kmp_enqueue_task | ( | kmp_taskq_t * | tq, | |
kmp_int32 | global_tid, | |||
kmpc_task_queue_t * | queue, | |||
kmpc_thunk_t * | thunk, | |||
int | in_parallel | |||
) | [static] |
Definition at line 719 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_release_lock(), __kmpc_end_barrier_master(), FALSE, KMP_DEBUG_ASSERT, KMP_MB, kmpc_task_queue_t::tq_head, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_queue, kmpc_task_queue_t::tq_queue_lck, and TQF_RELEASE_WORKERS.
Referenced by __kmpc_task().
static void __kmp_execute_task_from_queue | ( | kmp_taskq_t * | tq, | |
ident_t * | loc, | |||
kmp_int32 | global_tid, | |||
kmpc_thunk_t * | thunk, | |||
int | in_parallel | |||
) | [static] |
Definition at line 1276 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_dump_task_queue(), __kmp_dump_thunk(), __kmp_dump_thunk_stack(), __kmp_env_consistency_check, __kmp_free_thunk(), __kmp_pop_workshare(), __kmp_push_workshare(), __kmp_release_lock(), __kmp_taskq_check_ordered(), __kmp_tid_from_gtid, kmpc_aligned_int32_t::ai_data, kmpc_aligned_shared_vars_t::ai_data, ct_task, ct_task_ordered, ct_taskq, if(), KF_DUMP, KF_TRACE, KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_MB, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_thunk_t::th_task, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_loc, kmpc_task_queue_t::tq_parent, kmpc_task_queue_t::tq_ref_count, kmpc_task_queue_t::tq_shareds, kmpc_task_queue_t::tq_th_thunks, TQF_IS_ORDERED, and TQF_TASKQ_TASK.
Referenced by __kmpc_end_taskq(), and __kmpc_task().
static void __kmp_find_and_remove_finished_child_taskq | ( | kmp_taskq_t * | tq, | |
kmp_int32 | global_tid, | |||
kmpc_task_queue_t * | curr_queue | |||
) | [static] |
Definition at line 1177 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_release_lock(), __kmp_remove_queue_from_tree(), __kmp_taskq_has_any_children(), __kmp_taskq_tasks_finished(), __kmp_test_lock(), if(), KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_MB, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_queue_lck, kmpc_task_queue_t::tq_ref_count, TQF_ALL_TASKS_QUEUED, TQF_DEALLOCATED, TQF_IS_NOWAIT, and TRUE.
Referenced by __kmpc_end_taskq().
static kmpc_thunk_t* __kmp_find_task_in_ancestor_queue | ( | kmp_taskq_t * | tq, | |
kmp_int32 | global_tid, | |||
kmpc_task_queue_t * | curr_queue | |||
) | [static] |
Definition at line 999 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_find_task_in_descendant_queue(), __kmp_find_task_in_queue(), __kmp_release_lock(), KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_MB, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_parent, and kmpc_task_queue_t::tq_ref_count.
Referenced by __kmpc_end_taskq().
static kmpc_thunk_t* __kmp_find_task_in_descendant_queue | ( | kmp_int32 | global_tid, | |
kmpc_task_queue_t * | curr_queue | |||
) | [static] |
Definition at line 902 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_find_task_in_queue(), __kmp_release_lock(), if(), KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_MB, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_next_child, and kmpc_task_queue_t::tq_ref_count.
Referenced by __kmp_find_task_in_ancestor_queue(), and __kmpc_end_taskq().
static kmpc_thunk_t* __kmp_find_task_in_queue | ( | kmp_int32 | global_tid, | |
kmpc_task_queue_t * | queue | |||
) | [static] |
Definition at line 839 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_dequeue_task(), __kmp_release_lock(), __KMP_TASKQ_THUNKS_PER_TH, __kmp_tid_from_gtid, kmpc_aligned_int32_t::ai_data, KMP_MB, kmpc_thunk_t::th_flags, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_hiwat, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_queue_lck, kmpc_task_queue_t::tq_taskq_slot, kmpc_task_queue_t::tq_th_thunks, TQF_DEALLOCATED, TQF_IS_LAST_TASK, TQF_IS_LASTPRIVATE, and TRUE.
Referenced by __kmp_find_task_in_ancestor_queue(), __kmp_find_task_in_descendant_queue(), and __kmpc_end_taskq().
static void __kmp_free_taskq | ( | kmp_taskq_t * | tq, | |
kmpc_task_queue_t * | p, | |||
int | in_parallel, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 593 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_destroy_lock(), __kmp_env_consistency_check, __kmp_release_lock(), __kmpc_taskq_free(), kmpc_aligned_int32_t::ai_data, kmpc_aligned_shared_vars_t::ai_data, i, KMP_DEBUG_ASSERT, KMP_MB, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_free_thunks, kmpc_task_queue_t::tq_free_thunks_lck, kmpc_task_queue_t::tq_head, kmpc_task_queue_t::tq_hiwat, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_loc, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_next_free, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nproc, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_prev_child, kmpc_task_queue_t::tq_queue, kmpc_task_queue_t::tq_queue_lck, kmpc_task_queue_t::tq_ref_count, kmpc_task_queue_t::tq_shareds, kmpc_task_queue_t::tq_tail, kmpc_task_queue_t::tq_tasknum_queuing, kmpc_task_queue_t::tq_tasknum_serving, kmpc_task_queue_t::tq_taskq_slot, kmpc_task_queue_t::tq_th_thunks, kmpc_task_queue_t::tq_thunk_space, and TQF_DEALLOCATED.
Referenced by __kmp_remove_queue_from_tree(), and __kmpc_end_taskq().
static void __kmp_free_thunk | ( | kmpc_task_queue_t * | queue, | |
kmpc_thunk_t * | p, | |||
int | in_parallel, | |||
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 686 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_release_lock(), KMP_MB, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_next_free, kmpc_thunk_t::th_status, kmpc_thunk_t::th_task, kmpc_thunk_t::th_tasknum, kmpc_task_queue_t::tq_free_thunks, kmpc_task_queue_t::tq_free_thunks_lck, and TQF_DEALLOCATED.
Referenced by __kmp_execute_task_from_queue().
static void __kmp_remove_all_child_taskq | ( | kmp_taskq_t * | tq, | |
kmp_int32 | global_tid, | |||
kmpc_task_queue_t * | queue | |||
) | [static] |
Definition at line 1259 of file kmp_taskq.c.
References __kmp_remove_queue_from_tree(), FALSE, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_next_child, and TQF_DEALLOCATED.
Referenced by __kmpc_end_taskq().
static void __kmp_remove_queue_from_tree | ( | kmp_taskq_t * | tq, | |
kmp_int32 | global_tid, | |||
kmpc_task_queue_t * | queue, | |||
int | in_parallel | |||
) | [static] |
Definition at line 1090 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_dump_task_queue(), __kmp_dump_task_queue_tree(), __kmp_free_taskq(), __kmp_release_lock(), __KMP_TASKQ_THUNKS_PER_TH, kmpc_aligned_int32_t::ai_data, i, KF_DUMP, KF_TRACE, KMP_ASSERT, KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_LE, KMP_MB, KMP_WAIT_YIELD, kmpc_thunk_t::th, kmpc_thunk_t::th_next_free, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_free_thunks, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nproc, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_parent, kmpc_task_queue_t::tq_prev_child, kmpc_task_queue_t::tq_ref_count, kmpc_task_queue_t::tq_th_thunks, TQF_ALL_TASKS_QUEUED, and TRUE.
Referenced by __kmp_find_and_remove_finished_child_taskq(), __kmp_remove_all_child_taskq(), and __kmpc_end_taskq().
static void __kmp_static_delay | ( | int | arg | ) | [static] |
Definition at line 66 of file kmp_taskq.c.
References KMP_ASSERT.
static void __kmp_static_yield | ( | int | arg | ) | [static] |
Definition at line 77 of file kmp_taskq.c.
References __kmp_yield().
static void* __kmp_taskq_allocate | ( | size_t | size, | |
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 434 of file kmp_taskq.c.
References __kmp_thread_from_gtid, __kmp_thread_malloc, CACHE_LINE, KB_TRACE, KE_TRACE, KMP_FATAL, and KMP_INTERNAL_MALLOC.
Referenced by __kmp_alloc_taskq().
static void __kmp_taskq_check_ordered | ( | kmp_int32 | gtid, | |
kmpc_thunk_t * | thunk | |||
) | [static] |
Definition at line 144 of file kmp_taskq.c.
References KMP_GE, KMP_MB, KMP_WAIT_YIELD, kmpc_thunk_t::th_shareds, and kmpc_task_queue_t::tq_tasknum_serving.
Referenced by __kmp_execute_task_from_queue().
static void __kmp_taskq_eo | ( | int * | gtid_ref, | |
int * | cid_ref, | |||
ident_t * | loc_ref | |||
) | [static] |
Definition at line 89 of file kmp_taskq.c.
References __kmp_env_consistency_check, __kmp_push_sync(), __kmp_threads, __kmp_tid_from_gtid, ct_ordered_in_taskq, KMP_EQ, KMP_MB, KMP_WAIT_YIELD, and kmpc_task_queue_t::tq_tasknum_serving.
Referenced by __kmpc_taskq().
static int __kmp_taskq_has_any_children | ( | kmpc_task_queue_t * | queue | ) | [static] |
Definition at line 1084 of file kmp_taskq.c.
References kmpc_task_queue_t::tq_first_child.
Referenced by __kmp_find_and_remove_finished_child_taskq(), and __kmpc_end_taskq().
static int __kmp_taskq_tasks_finished | ( | kmpc_task_queue_t * | queue | ) | [static] |
Definition at line 1069 of file kmp_taskq.c.
References kmpc_aligned_int32_t::ai_data, FALSE, i, kmpc_task_queue_t::tq_nproc, kmpc_task_queue_t::tq_th_thunks, and TRUE.
Referenced by __kmp_find_and_remove_finished_child_taskq(), and __kmpc_end_taskq().
static void __kmp_taskq_xo | ( | int * | gtid_ref, | |
int * | cid_ref, | |||
ident_t * | loc_ref | |||
) | [static] |
Definition at line 117 of file kmp_taskq.c.
References __kmp_env_consistency_check, __kmp_pop_sync(), __kmp_threads, __kmp_tid_from_gtid, ct_ordered_in_taskq, and KMP_MB.
Referenced by __kmpc_taskq().
void __kmpc_end_taskq | ( | ident_t * | loc, | |
kmp_int32 | global_tid, | |||
kmpc_thunk_t * | taskq_thunk | |||
) |
Definition at line 1589 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_barrier(), __kmp_dequeue_task(), __kmp_dump_task_queue(), __kmp_dump_task_queue_tree(), __kmp_end_split_barrier(), __kmp_execute_task_from_queue(), __kmp_find_and_remove_finished_child_taskq(), __kmp_find_task_in_ancestor_queue(), __kmp_find_task_in_descendant_queue(), __kmp_find_task_in_queue(), __kmp_free_taskq(), __kmp_release_lock(), __kmp_remove_all_child_taskq(), __kmp_remove_queue_from_tree(), __kmp_static_delay, __kmp_taskq_has_any_children(), __kmp_taskq_tasks_finished(), __KMP_TASKQ_THUNKS_PER_TH, __kmp_threads, kmpc_aligned_int32_t::ai_data, bs_plain_barrier, i, KE_TRACE, KF_DUMP, KF_TRACE, KMP_DEBUG_ASSERT, KMP_INIT_YIELD, KMP_MASTER_GTID, KMP_YIELD_WHEN, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_next_free, kmpc_thunk_t::th_shareds, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_free_thunks, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_parent, kmpc_task_queue_t::tq_queue_lck, kmpc_task_queue_t::tq_ref_count, kmpc_task_queue_t::tq_taskq_slot, kmpc_task_queue_t::tq_th_thunks, TQF_ALL_TASKS_QUEUED, TQF_DEALLOCATED, TQF_IS_LAST_TASK, TQF_IS_NOWAIT, TQF_PARALLEL_CONTEXT, TQF_RELEASE_WORKERS, and TRUE.
void __kmpc_end_taskq_task | ( | ident_t * | loc, | |
kmp_int32 | global_tid, | |||
kmpc_thunk_t * | thunk | |||
) |
Definition at line 1951 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_dump_thunk_stack(), __kmp_env_consistency_check, __kmp_pop_workshare(), __kmp_release_lock(), __kmp_test_then_or32(), __kmp_threads, __kmp_tid_from_gtid, ct_taskq, KE_TRACE, KF_DUMP, KMP_MB, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_queue_lck, TQF_ALL_TASKS_QUEUED, TQF_IS_LAST_TASK, TQF_IS_LASTPRIVATE, and TQF_PARALLEL_CONTEXT.
kmp_int32 __kmpc_task | ( | ident_t * | loc, | |
kmp_int32 | global_tid, | |||
kmpc_thunk_t * | thunk | |||
) |
Definition at line 1853 of file kmp_taskq.c.
References __kmp_dequeue_task(), __kmp_dump_task_queue(), __kmp_dump_thunk(), __kmp_enqueue_task(), __kmp_execute_task_from_queue(), __kmp_threads, if(), KE_TRACE, KF_DUMP, KF_TRACE, KMP_DEBUG_ASSERT, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_thunk_t::th_tasknum, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_tasknum_queuing, TQF_IS_ORDERED, TQF_PARALLEL_CONTEXT, and TQF_TASKQ_TASK.
kmpc_thunk_t* __kmpc_task_buffer | ( | ident_t * | loc, | |
kmp_int32 | global_tid, | |||
kmpc_thunk_t * | taskq_thunk, | |||
kmpc_task_t | task | |||
) |
Definition at line 2039 of file kmp_taskq.c.
References __kmp_alloc_thunk(), __kmp_dump_thunk(), __kmp_threads, kmpc_aligned_shared_vars_t::ai_data, KE_TRACE, KF_DUMP, KF_TRACE, KMP_DEBUG_ASSERT, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_thunk_t::th_status, kmpc_thunk_t::th_task, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_shareds, TQF_INTERFACE_FLAGS, TQF_PARALLEL_CONTEXT, and TQF_TASKQ_TASK.
kmpc_thunk_t* __kmpc_taskq | ( | ident_t * | loc, | |
kmp_int32 | global_tid, | |||
kmpc_task_t | taskq_task, | |||
size_t | sizeof_thunk, | |||
size_t | sizeof_shareds, | |||
kmp_int32 | flags, | |||
kmpc_shared_vars_t ** | shareds | |||
) |
Definition at line 1377 of file kmp_taskq.c.
References __kmp_acquire_lock(), __kmp_alloc_taskq(), __kmp_allocate, __kmp_barrier(), __kmp_dump_task_queue(), __kmp_dump_task_queue_tree(), __kmp_dump_thunk(), __kmp_dump_thunk_stack(), __kmp_env_consistency_check, __kmp_free, __kmp_init_lock(), __kmp_push_workshare(), __kmp_release_lock(), __kmp_taskq_eo(), __KMP_TASKQ_THUNKS_PER_TH, __kmp_taskq_xo(), __kmp_threads, __kmp_tid_from_gtid, kmpc_aligned_shared_vars_t::ai_data, bs_plain_barrier, ct_taskq, HIGH_WATER_MARK, i, if(), in_parallel_context(), KE_TRACE, KF_DUMP, KF_TRACE, KMP_DEBUG_ASSERT, KMP_DEBUG_REF_CTS, KMP_MB, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_thunk_t::th_status, kmpc_thunk_t::th_task, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_first_child, kmpc_task_queue_t::tq_flags, kmpc_task_queue_t::tq_head, kmpc_task_queue_t::tq_hiwat, kmpc_task_queue_t::tq_link_lck, kmpc_task_queue_t::tq_loc, kmpc_task_queue_t::tq_next_child, kmpc_task_queue_t::tq_nfull, kmpc_task_queue_t::tq_nslots, kmpc_task_queue_t::tq_parent, kmpc_task_queue_t::tq_prev_child, kmpc_task_queue_t::tq_ref_count, kmpc_task_queue_t::tq_shareds, kmpc_task_queue_t::tq_tail, kmpc_task_queue_t::tq_tasknum_queuing, kmpc_task_queue_t::tq_tasknum_serving, kmpc_task_queue_t::tq_taskq_slot, TQF_INTERFACE_FLAGS, TQF_IS_ORDERED, TQF_PARALLEL_CONTEXT, TQF_RELEASE_WORKERS, TQF_TASKQ_TASK, and TRUE.
static void __kmpc_taskq_free | ( | void * | p, | |
kmp_int32 | global_tid | |||
) | [static] |
Definition at line 470 of file kmp_taskq.c.
References __kmp_thread_free, __kmp_thread_from_gtid, KB_TRACE, and KMP_INTERNAL_FREE.
Referenced by __kmp_free_taskq().
void __kmpc_taskq_task | ( | ident_t * | loc, | |
kmp_int32 | global_tid, | |||
kmpc_thunk_t * | thunk, | |||
kmp_int32 | status | |||
) |
Definition at line 1908 of file kmp_taskq.c.
References __kmp_dump_thunk(), __kmp_dump_thunk_stack(), __kmp_env_consistency_check, __kmp_pop_workshare(), __kmp_threads, __kmp_tid_from_gtid, ct_taskq, KE_TRACE, KF_DUMP, KF_TRACE, KMP_DEBUG_ASSERT, KMP_MB, kmpc_shared_vars_t::sv_queue, kmpc_thunk_t::th, kmpc_thunk_t::th_encl_thunk, kmpc_thunk_t::th_flags, kmpc_thunk_t::th_shareds, kmpc_thunk_t::th_status, kmpc_task_queue_t::tq, kmpc_task_queue_t::tq_taskq_slot, and TQF_TASKQ_TASK.
static int in_parallel_context | ( | kmp_team_t * | team | ) | [static] |
Definition at line 83 of file kmp_taskq.c.
Referenced by __kmpc_taskq().