#include "config.h"
#include "gstdint.h"
#include <pthread.h>
#include <stdbool.h>
#include "sem.h"
#include "mutex.h"
#include "bar.h"
#include "ptrlock.h"
#include "libgomp_g.h"
#include "omp-lock.h"
#include "omp.h.in"
Include dependency graph for libgomp.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
#define gomp_destroy_lock_30 omp_destroy_lock |
#define gomp_destroy_nest_lock_30 omp_destroy_nest_lock |
#define gomp_init_lock_30 omp_init_lock |
#define gomp_init_nest_lock_30 omp_init_nest_lock |
#define gomp_set_lock_30 omp_set_lock |
#define gomp_set_nest_lock_30 omp_set_nest_lock |
#define gomp_test_lock_30 omp_test_lock |
#define gomp_test_nest_lock_30 omp_test_nest_lock |
#define gomp_unset_lock_30 omp_unset_lock |
#define gomp_unset_nest_lock_30 omp_unset_nest_lock |
enum gomp_schedule_type |
enum gomp_task_kind |
void void format | ( | printf | , | |
1 | , | |||
2 | ||||
) |
void gomp_barrier_handle_tasks | ( | gomp_barrier_state_t | ) |
Definition at line 186 of file task.c.
References gomp_team::barrier, gomp_task::children, gomp_task::fn, gomp_task::fn_data, gomp_barrier_last_thread(), gomp_clear_parent(), gomp_finish_task(), gomp_mutex_lock(), gomp_mutex_unlock(), gomp_sem_post(), GOMP_TASK_TIED, gomp_team_barrier_clear_task_pending(), gomp_team_barrier_done(), gomp_team_barrier_set_waiting_for_tasks(), gomp_team_barrier_waiting_for_tasks(), gomp_team_barrier_wake(), gomp_thread(), gomp_task::in_taskwait, gomp_task::kind, gomp_task::next_child, gomp_task::next_queue, gomp_task::parent, gomp_task::prev_child, gomp_task::prev_queue, gomp_team::task_count, gomp_team::task_lock, gomp_team::task_queue, gomp_team::task_running_count, gomp_task::taskwait_sem, and thr.
Referenced by gomp_team_barrier_wait_end().
Here is the call graph for this function:
Here is the caller graph for this function:
unsigned gomp_dynamic_max_threads | ( | void | ) |
Definition at line 78 of file proc.c.
References get_num_procs(), gomp_icv(), and gomp_task_icv::nthreads_var.
Here is the call graph for this function:
void gomp_end_task | ( | void | ) |
Definition at line 51 of file task.c.
References gomp_finish_task(), gomp_thread(), gomp_task::parent, and thr.
Referenced by gomp_free_thread(), GOMP_task(), and gomp_team_end().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_error | ( | const char * | , | |
... | ||||
) |
void void gomp_fatal | ( | const char * | , | |
... | ||||
) |
void gomp_fini_work_share | ( | struct gomp_work_share * | ) |
Definition at line 124 of file work.c.
References gomp_mutex_destroy(), gomp_ptrlock_destroy(), gomp_work_share::inline_ordered_team_ids, gomp_work_share::next_ws, and gomp_work_share::ordered_team_ids.
Referenced by free_work_share(), and gomp_team_end().
Here is the call graph for this function:
Here is the caller graph for this function:
static void gomp_finish_task | ( | struct gomp_task * | task | ) | [inline, static] |
Definition at line 474 of file libgomp.h.
References gomp_sem_destroy(), and gomp_task::taskwait_sem.
Referenced by gomp_barrier_handle_tasks(), gomp_end_task(), GOMP_taskwait(), and ompc_team_end().
Here is the call graph for this function:
Here is the caller graph for this function:
static struct gomp_task_icv* gomp_icv | ( | bool | write | ) | [inline, static] |
Definition at line 378 of file libgomp.h.
References gomp_global_icv, gomp_new_icv(), gomp_thread(), gomp_task::icv, and gomp_thread::task.
Referenced by get_num_procs(), gomp_dynamic_max_threads(), GOMP_loop_ordered_runtime_start(), GOMP_loop_runtime_start(), GOMP_loop_ull_ordered_runtime_start(), GOMP_loop_ull_runtime_start(), GOMP_parallel_loop_runtime_start(), gomp_resolve_num_threads(), gomp_set_nest_lock_30(), GOMP_task(), gomp_test_nest_lock_30(), omp_get_dynamic(), omp_get_max_threads(), omp_get_nested(), omp_get_num_procs(), omp_get_schedule(), omp_set_dynamic(), omp_set_nested(), omp_set_num_threads(), and omp_set_schedule().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_init_affinity | ( | void | ) |
Definition at line 30 of file affinity.c.
Referenced by __attribute__().
Here is the caller graph for this function:
void gomp_init_num_threads | ( | void | ) |
Definition at line 62 of file proc.c.
References get_num_procs(), gomp_global_icv, and gomp_task_icv::nthreads_var.
Here is the call graph for this function:
void gomp_init_task | ( | struct gomp_task * | , | |
struct gomp_task * | , | |||
struct gomp_task_icv * | ||||
) |
Definition at line 36 of file task.c.
References gomp_task::children, gomp_sem_init(), GOMP_TASK_IMPLICIT, gomp_task::icv, gomp_task::in_taskwait, gomp_task::in_tied_task, gomp_task::kind, gomp_task::parent, and gomp_task::taskwait_sem.
Referenced by gomp_new_icv(), GOMP_task(), and gomp_team_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_init_thread_affinity | ( | pthread_attr_t * | ) |
Definition at line 35 of file affinity.c.
void gomp_init_work_share | ( | struct gomp_work_share * | , | |
bool | , | |||
unsigned | ||||
) |
Definition at line 92 of file work.c.
References gomp_malloc(), gomp_mutex_init(), gomp_ptrlock_init(), gomp_work_share::inline_ordered_team_ids, INLINE_ORDERED_TEAM_IDS_CNT, memset(), gomp_work_share::next_ws, gomp_work_share::ordered_cur, gomp_work_share::ordered_num_used, gomp_work_share::ordered_owner, gomp_work_share::ordered_team_ids, and gomp_work_share::threads_completed.
Referenced by gomp_new_team(), and gomp_work_share_start().
Here is the call graph for this function:
Here is the caller graph for this function:
bool gomp_iter_dynamic_next_locked | ( | long * | , | |
long * | ||||
) |
Definition at line 144 of file iter.c.
References gomp_work_share::chunk_size, gomp_work_share::end, gomp_thread(), gomp_work_share::incr, gomp_work_share::next, and thr.
Referenced by gomp_loop_dynamic_next(), gomp_loop_dynamic_start(), gomp_loop_ordered_dynamic_next(), gomp_loop_ordered_dynamic_start(), GOMP_sections_next(), and GOMP_sections_start().
Here is the call graph for this function:
Here is the caller graph for this function:
bool gomp_iter_guided_next_locked | ( | long * | , | |
long * | ||||
) |
Definition at line 257 of file iter.c.
References gomp_work_share::chunk_size, gomp_work_share::end, gomp_thread(), gomp_work_share::incr, n, gomp_work_share::next, gomp_team::nthreads, nthreads, q, and thr.
Referenced by gomp_loop_guided_next(), gomp_loop_guided_start(), gomp_loop_ordered_guided_next(), and gomp_loop_ordered_guided_start().
Here is the call graph for this function:
Here is the caller graph for this function:
int gomp_iter_static_next | ( | long * | , | |
long * | ||||
) |
Definition at line 38 of file iter.c.
References c, gomp_work_share::chunk_size, e, gomp_work_share::end, gomp_thread(), i, gomp_work_share::incr, n, gomp_work_share::next, gomp_team::nthreads, nthreads, q, and thr.
Referenced by gomp_loop_ordered_static_next(), gomp_loop_ordered_static_start(), gomp_loop_static_next(), and gomp_loop_static_start().
Here is the call graph for this function:
Here is the caller graph for this function:
bool gomp_iter_ull_dynamic_next_locked | ( | unsigned long long * | , | |
unsigned long long * | ||||
) |
Definition at line 146 of file iter_ull.c.
References gomp_work_share::chunk_size_ull, gomp_work_share::end, gomp_work_share::end_ull, gomp_thread(), gomp_work_share::mode, gomp_work_share::next_ull, and thr.
Referenced by gomp_loop_ull_dynamic_next(), gomp_loop_ull_dynamic_start(), gomp_loop_ull_ordered_dynamic_next(), and gomp_loop_ull_ordered_dynamic_start().
Here is the call graph for this function:
Here is the caller graph for this function:
bool gomp_iter_ull_guided_next_locked | ( | unsigned long long * | , | |
unsigned long long * | ||||
) |
Definition at line 258 of file iter_ull.c.
References gomp_work_share::chunk_size_ull, gomp_work_share::end_ull, gomp_thread(), gomp_work_share::incr_ull, gomp_work_share::mode, n, gomp_work_share::next_ull, gomp_team::nthreads, nthreads, q, and thr.
Referenced by gomp_loop_ull_guided_next(), gomp_loop_ull_guided_start(), gomp_loop_ull_ordered_guided_next(), and gomp_loop_ull_ordered_guided_start().
Here is the call graph for this function:
Here is the caller graph for this function:
int gomp_iter_ull_static_next | ( | unsigned long long * | , | |
unsigned long long * | ||||
) |
Definition at line 39 of file iter_ull.c.
References c, gomp_work_share::chunk_size_ull, e, gomp_work_share::end_ull, gomp_thread(), i, gomp_work_share::incr_ull, gomp_work_share::mode, n, gomp_work_share::next_ull, gomp_team::nthreads, nthreads, q, and thr.
Referenced by gomp_loop_ull_ordered_static_next(), gomp_loop_ull_ordered_static_start(), gomp_loop_ull_static_next(), and gomp_loop_ull_static_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void* gomp_malloc | ( | size_t | ) |
Definition at line 34 of file alloc.c.
References gomp_fatal().
Referenced by alloc_work_share(), GOMP_critical_name_start(), gomp_init_work_share(), gomp_new_icv(), gomp_new_team(), gomp_new_thread_pool(), GOMP_task(), and gomp_work_share_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void* gomp_malloc_cleared | ( | size_t | ) |
Definition at line 43 of file alloc.c.
References gomp_fatal().
Here is the call graph for this function:
struct gomp_task_icv* gomp_new_icv | ( | void | ) |
Definition at line 566 of file team.c.
References gomp_global_icv, gomp_init_task(), gomp_malloc(), gomp_thread(), gomp_thread_destructor, gomp_task::icv, and thr.
Referenced by gomp_icv().
Here is the call graph for this function:
Here is the caller graph for this function:
struct gomp_team* gomp_new_team | ( | unsigned | ) |
Definition at line 155 of file team.c.
References gomp_barrier_init(), gomp_init_work_share(), gomp_malloc(), gomp_mutex_init(), gomp_sem_init(), i, gomp_team::implicit_task, and gomp_team::ordered_release.
Referenced by gomp_parallel_loop_start(), GOMP_parallel_sections_start(), and GOMP_parallel_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_ordered_first | ( | void | ) |
Definition at line 35 of file ordered.c.
References gomp_sem_post(), gomp_thread(), gomp_team::nthreads, gomp_work_share::ordered_cur, gomp_work_share::ordered_num_used, gomp_team::ordered_release, gomp_work_share::ordered_team_ids, and thr.
Referenced by gomp_loop_ordered_dynamic_start(), gomp_loop_ordered_guided_start(), gomp_loop_ull_ordered_dynamic_start(), and gomp_loop_ull_ordered_guided_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_ordered_last | ( | void | ) |
Definition at line 66 of file ordered.c.
References gomp_sem_post(), gomp_thread(), next, gomp_team::nthreads, gomp_work_share::ordered_cur, gomp_work_share::ordered_num_used, gomp_work_share::ordered_owner, gomp_team::ordered_release, gomp_work_share::ordered_team_ids, and thr.
Referenced by gomp_loop_ordered_dynamic_next(), gomp_loop_ordered_guided_next(), gomp_loop_ull_ordered_dynamic_next(), and gomp_loop_ull_ordered_guided_next().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_ordered_next | ( | void | ) |
Definition at line 101 of file ordered.c.
References gomp_sem_post(), gomp_thread(), gomp_team::nthreads, gomp_work_share::ordered_cur, gomp_work_share::ordered_num_used, gomp_work_share::ordered_owner, gomp_team::ordered_release, gomp_work_share::ordered_team_ids, and thr.
Referenced by gomp_loop_ordered_dynamic_next(), gomp_loop_ordered_guided_next(), gomp_loop_ull_ordered_dynamic_next(), and gomp_loop_ull_ordered_guided_next().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_ordered_static_init | ( | void | ) |
Definition at line 149 of file ordered.c.
References gomp_sem_post(), gomp_thread(), gomp_team::nthreads, gomp_team::ordered_release, and thr.
Referenced by gomp_loop_ordered_static_start(), and gomp_loop_ull_ordered_static_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_ordered_static_next | ( | void | ) |
Definition at line 167 of file ordered.c.
References gomp_sem_post(), gomp_thread(), gomp_team::nthreads, gomp_work_share::ordered_owner, gomp_team::ordered_release, gomp_work_share::ordered_team_ids, and thr.
Referenced by gomp_loop_ordered_static_next(), and gomp_loop_ull_ordered_static_next().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_ordered_sync | ( | void | ) |
Definition at line 191 of file ordered.c.
References gomp_sem_wait(), gomp_thread(), gomp_team::nthreads, gomp_work_share::ordered_owner, gomp_team::ordered_release, and thr.
Referenced by gomp_loop_ordered_dynamic_next(), gomp_loop_ordered_guided_next(), gomp_loop_ordered_static_next(), gomp_loop_ull_ordered_dynamic_next(), gomp_loop_ull_ordered_guided_next(), gomp_loop_ull_ordered_static_next(), and GOMP_ordered_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void* gomp_realloc | ( | void * | , | |
size_t | ||||
) |
Definition at line 52 of file alloc.c.
References gomp_fatal().
Referenced by gomp_team_start().
Here is the call graph for this function:
Here is the caller graph for this function:
unsigned gomp_resolve_num_threads | ( | unsigned | , | |
unsigned | ||||
) |
Definition at line 38 of file parallel.c.
References gomp_team_state::active_level, gomp_task_icv::dyn_var, gomp_dynamic_max_threads(), gomp_icv(), gomp_max_active_levels_var, gomp_mutex_lock(), gomp_mutex_unlock(), gomp_remaining_threads_count, gomp_remaining_threads_lock, gomp_thread(), gomp_thread_limit_var, gomp_task_icv::nest_var, gomp_task_icv::nthreads_var, num_threads, and gomp_thread::ts.
Referenced by gomp_parallel_loop_start(), GOMP_parallel_sections_start(), and GOMP_parallel_start().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_team_end | ( | void | ) |
Definition at line 477 of file team.c.
References gomp_team::barrier, free_team(), gomp_barrier_wait(), gomp_end_task(), gomp_fini_work_share(), gomp_managed_threads, gomp_mutex_destroy(), gomp_mutex_lock(), gomp_mutex_unlock(), gomp_remaining_threads_lock, gomp_sem_destroy(), gomp_team_barrier_wait(), gomp_thread(), gomp_thread_pool::last_team, gomp_team::master_release, gomp_work_share::next_alloc, gomp_work_share::next_ws, gomp_team::nthreads, gomp_team::prev_ts, thr, gomp_team::work_share_list_free_lock, and gomp_team::work_shares.
Referenced by GOMP_parallel_end().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_team_start | ( | void(*)(void *) | , | |
void * | , | |||
unsigned | , | |||
struct gomp_team * | ||||
) |
Definition at line 271 of file team.c.
References gomp_barrier_init(), gomp_barrier_reinit(), gomp_global_icv, gomp_init_task(), gomp_new_thread_pool(), gomp_realloc(), gomp_thread(), gomp_thread_destructor, i, gomp_task::icv, gomp_team::implicit_task, gomp_team_state::level, n, nthr, gomp_team::ordered_release, gomp_team::prev_ts, thr, gomp_thread_pool::threads, gomp_thread_pool::threads_dock, gomp_thread_pool::threads_size, gomp_thread_pool::threads_used, and gomp_team::work_shares.
Referenced by gomp_parallel_loop_start(), GOMP_parallel_sections_start(), and GOMP_parallel_start().
Here is the call graph for this function:
Here is the caller graph for this function:
static struct gomp_thread* gomp_thread | ( | void | ) | [inline, static] |
Definition at line 368 of file libgomp.h.
Referenced by GOMP_barrier(), gomp_barrier_handle_tasks(), gomp_end_task(), gomp_free_thread(), gomp_icv(), gomp_iter_dynamic_next_locked(), gomp_iter_guided_next_locked(), gomp_iter_static_next(), gomp_iter_ull_dynamic_next_locked(), gomp_iter_ull_guided_next_locked(), gomp_iter_ull_static_next(), gomp_loop_dynamic_next(), gomp_loop_dynamic_start(), gomp_loop_guided_next(), gomp_loop_guided_start(), gomp_loop_init(), gomp_loop_ordered_dynamic_next(), gomp_loop_ordered_dynamic_start(), gomp_loop_ordered_guided_next(), gomp_loop_ordered_guided_start(), GOMP_loop_ordered_runtime_next(), gomp_loop_ordered_static_next(), gomp_loop_ordered_static_start(), GOMP_loop_runtime_next(), gomp_loop_static_start(), gomp_loop_ull_dynamic_next(), gomp_loop_ull_dynamic_start(), gomp_loop_ull_guided_next(), gomp_loop_ull_guided_start(), gomp_loop_ull_init(), gomp_loop_ull_ordered_dynamic_next(), gomp_loop_ull_ordered_dynamic_start(), gomp_loop_ull_ordered_guided_next(), gomp_loop_ull_ordered_guided_start(), GOMP_loop_ull_ordered_runtime_next(), gomp_loop_ull_ordered_static_next(), gomp_loop_ull_ordered_static_start(), GOMP_loop_ull_runtime_next(), gomp_loop_ull_static_start(), gomp_new_icv(), gomp_ordered_first(), gomp_ordered_last(), gomp_ordered_next(), gomp_ordered_static_init(), gomp_ordered_static_next(), gomp_ordered_sync(), GOMP_parallel_end(), gomp_resolve_num_threads(), gomp_sections_init(), GOMP_sections_next(), GOMP_sections_start(), GOMP_single_copy_end(), GOMP_single_copy_start(), GOMP_single_start(), GOMP_task(), GOMP_taskwait(), gomp_team_barrier_wait_end(), gomp_team_end(), gomp_team_start(), gomp_work_share_end(), gomp_work_share_end_nowait(), gomp_work_share_init_done(), gomp_work_share_start(), omp_get_active_level(), omp_get_ancestor_thread_num(), omp_get_level(), omp_get_num_threads(), omp_get_team_size(), omp_get_thread_num(), and omp_in_parallel().
Here is the caller graph for this function:
void gomp_work_share_end | ( | void | ) |
Definition at line 205 of file work.c.
References gomp_team::barrier, free_work_share(), gomp_barrier_last_thread(), gomp_barrier_wait_start(), gomp_team_barrier_wait_end(), gomp_thread(), and thr.
Referenced by GOMP_loop_end(), and GOMP_sections_end().
Here is the call graph for this function:
Here is the caller graph for this function:
void gomp_work_share_end_nowait | ( | void | ) |
Definition at line 235 of file work.c.
References free_work_share(), gomp_mutex_lock(), gomp_mutex_unlock(), gomp_thread(), gomp_team::nthreads, thr, and gomp_work_share::threads_completed.
Referenced by GOMP_loop_end_nowait(), GOMP_sections_end_nowait(), GOMP_single_copy_end(), GOMP_single_copy_start(), and GOMP_single_start().
Here is the call graph for this function:
Here is the caller graph for this function:
static void gomp_work_share_init_done | ( | void | ) | [inline, static] |
Definition at line 495 of file libgomp.h.
References gomp_ptrlock_set(), gomp_thread(), and thr.
Referenced by gomp_loop_dynamic_start(), gomp_loop_guided_start(), gomp_loop_ordered_dynamic_start(), gomp_loop_ordered_guided_start(), gomp_loop_ordered_static_start(), gomp_loop_static_start(), gomp_loop_ull_dynamic_start(), gomp_loop_ull_guided_start(), gomp_loop_ull_ordered_dynamic_start(), gomp_loop_ull_ordered_guided_start(), gomp_loop_ull_ordered_static_start(), gomp_loop_ull_static_start(), GOMP_sections_start(), GOMP_single_copy_start(), and GOMP_single_start().
Here is the call graph for this function:
Here is the caller graph for this function:
bool gomp_work_share_start | ( | bool | ) |
Definition at line 168 of file work.c.
References alloc_work_share(), gomp_init_work_share(), gomp_malloc(), gomp_ptrlock_get(), gomp_thread(), gomp_work_share::next_ws, gomp_team::nthreads, and thr.
Referenced by gomp_loop_dynamic_start(), gomp_loop_guided_start(), gomp_loop_ordered_dynamic_start(), gomp_loop_ordered_guided_start(), gomp_loop_ordered_static_start(), gomp_loop_static_start(), gomp_loop_ull_dynamic_start(), gomp_loop_ull_guided_start(), gomp_loop_ull_ordered_dynamic_start(), gomp_loop_ull_ordered_guided_start(), gomp_loop_ull_ordered_static_start(), gomp_loop_ull_static_start(), GOMP_sections_start(), GOMP_single_copy_start(), and GOMP_single_start().
Here is the call graph for this function:
Here is the caller graph for this function:
unsigned long gomp_available_cpus |
unsigned short* gomp_cpu_affinity |
size_t gomp_cpu_affinity_len |
struct gomp_task_icv gomp_global_icv |
Definition at line 52 of file env.c.
Referenced by __attribute__(), gomp_icv(), gomp_init_num_threads(), gomp_new_icv(), gomp_team_start(), and parse_schedule().
unsigned long gomp_managed_threads |
unsigned long gomp_max_active_levels_var |
Definition at line 62 of file env.c.
Referenced by __attribute__(), gomp_resolve_num_threads(), omp_get_max_active_levels(), and omp_set_max_active_levels().
unsigned long gomp_remaining_threads_count |
Definition at line 64 of file env.c.
Referenced by __attribute__(), GOMP_parallel_end(), and gomp_resolve_num_threads().
Definition at line 66 of file env.c.
Referenced by __attribute__(), GOMP_parallel_end(), gomp_resolve_num_threads(), and gomp_team_end().
unsigned long long gomp_spin_count_var |
pthread_attr_t gomp_thread_attr |
unsigned long gomp_thread_limit_var |
Definition at line 63 of file env.c.
Referenced by __attribute__(), GOMP_parallel_end(), gomp_resolve_num_threads(), and omp_get_thread_limit().
unsigned long long gomp_throttled_spin_count_var |
pthread_key_t gomp_tls_key |