LLVM OpenMP 19.0.0git
Typedefs | Functions
Parallel (fork/join)

These functions are used for implementing #pragma omp parallel. More...

Typedefs

typedef void(* kmpc_micro) (kmp_int32 *global_tid, kmp_int32 *bound_tid,...)
 The type for a microtask which gets passed to __kmpc_fork_call().
 

Functions

void __kmpc_push_num_threads (ident_t *loc, kmp_int32 global_tid, kmp_int32 num_threads)
 
void __kmpc_fork_call (ident_t *loc, kmp_int32 argc, kmpc_micro microtask,...)
 
void __kmpc_fork_call_if (ident_t *loc, kmp_int32 argc, kmpc_micro microtask, kmp_int32 cond, void *args)
 
void __kmpc_push_num_teams (ident_t *loc, kmp_int32 global_tid, kmp_int32 num_teams, kmp_int32 num_threads)
 
void __kmpc_set_thread_limit (ident_t *loc, kmp_int32 global_tid, kmp_int32 thread_limit)
 
void __kmpc_push_num_teams_51 (ident_t *loc, kmp_int32 global_tid, kmp_int32 num_teams_lb, kmp_int32 num_teams_ub, kmp_int32 num_threads)
 
void __kmpc_fork_teams (ident_t *loc, kmp_int32 argc, kmpc_micro microtask,...)
 
void __kmpc_serialized_parallel (ident_t *loc, kmp_int32 global_tid)
 
void __kmpc_end_serialized_parallel (ident_t *loc, kmp_int32 global_tid)
 

Detailed Description

These functions are used for implementing #pragma omp parallel.

Typedef Documentation

◆ kmpc_micro

typedef void(* kmpc_micro) (kmp_int32 *global_tid, kmp_int32 *bound_tid,...)

The type for a microtask which gets passed to __kmpc_fork_call().

The arguments to the outlined function are

Parameters
global_tidthe global thread identity of the thread executing the function.
bound_tidthe local identity of the thread executing the function
...pointers to shared variables accessed by the function.

Definition at line 1743 of file kmp.h.

Function Documentation

◆ __kmpc_end_serialized_parallel()

void __kmpc_end_serialized_parallel ( ident_t loc,
kmp_int32  global_tid 
)

◆ __kmpc_fork_call()

void __kmpc_fork_call ( ident_t loc,
kmp_int32  argc,
kmpc_micro  microtask,
  ... 
)
Parameters
locsource location information
argctotal number of arguments in the ellipsis
microtaskpointer to callback routine consisting of outlined parallel construct
...pointers to shared variables that aren't global

Do the actual fork and call the microtask in the relevant number of threads.

Definition at line 263 of file kmp_csupport.cpp.

References __kmp_entry_gtid, __kmp_fork_call(), __kmp_invoke_task_func(), __kmp_join_call(), __kmp_threads, __kmpc_in_parallel(), ompt_callbacks_active_s::enabled, fork_context_intel, KMP_COUNT_BLOCK, KMP_GET_THREAD_STATE, KMP_POP_PARTITIONED_TIMER, KMP_PUSH_PARTITIONED_TIMER, KMP_SET_THREAD_STATE, kmp_va_addr_of, loc, ompt_enabled, OMPT_GET_FRAME_ADDRESS, and VOLATILE_CAST.

Referenced by __kmp_hidden_helper_threads_initz_routine(), and __kmpc_fork_call_if().

◆ __kmpc_fork_call_if()

void __kmpc_fork_call_if ( ident_t loc,
kmp_int32  argc,
kmpc_micro  microtask,
kmp_int32  cond,
void args 
)
Parameters
locsource location information
microtaskpointer to callback routine consisting of outlined parallel construct
condcondition for running in parallel
argsstruct of pointers to shared variables that aren't global

Perform a fork only if the condition is true.

Definition at line 344 of file kmp_csupport.cpp.

References __kmp_entry_gtid, __kmp_invoke_microtask(), __kmpc_end_serialized_parallel(), __kmpc_fork_call(), __kmpc_serialized_parallel(), args, loc, and VOLATILE_CAST.

◆ __kmpc_fork_teams()

void __kmpc_fork_teams ( ident_t loc,
kmp_int32  argc,
kmpc_micro  microtask,
  ... 
)
Parameters
locsource location information
argctotal number of arguments in the ellipsis
microtaskpointer to callback routine consisting of outlined teams construct
...pointers to shared variables that aren't global

Do the actual fork and call the microtask in the relevant number of threads.

Definition at line 458 of file kmp_csupport.cpp.

References __kmp_entry_gtid, __kmp_fork_call(), __kmp_free, __kmp_invoke_teams_master(), __kmp_join_call(), __kmp_push_num_teams(), __kmp_teams_master(), __kmp_threads, __kmp_tid_from_gtid(), kmp_cg_root::cg_nthreads, ompt_callbacks_active_s::enabled, fork_context_intel, i, KA_TRACE, KMP_COUNT_BLOCK, KMP_DEBUG_ASSERT, KMP_GET_THREAD_STATE, KMP_POP_PARTITIONED_TIMER, KMP_PUSH_PARTITIONED_TIMER, KMP_SET_THREAD_STATE, kmp_va_addr_of, loc, ompt_enabled, OMPT_GET_FRAME_ADDRESS, kmp_team::t, kmp_cg_root::up, and VOLATILE_CAST.

Referenced by KMP_API_NAME_GOMP_TEAMS_REG().

◆ __kmpc_push_num_teams()

void __kmpc_push_num_teams ( ident_t loc,
kmp_int32  global_tid,
kmp_int32  num_teams,
kmp_int32  num_threads 
)
Parameters
locsource location information
global_tidglobal thread number
num_teamsnumber of teams requested for the teams construct
num_threadsnumber of threads per team requested for the teams construct

Set the number of teams to be used by the teams construct. This call is only required if the teams construct has a num_teams clause or a thread_limit clause (or both).

Definition at line 394 of file kmp_csupport.cpp.

References __kmp_assert_valid_gtid(), __kmp_push_num_teams(), KA_TRACE, and loc.

Referenced by KMP_API_NAME_GOMP_TEAMS_REG(), and main().

◆ __kmpc_push_num_teams_51()

void __kmpc_push_num_teams_51 ( ident_t loc,
kmp_int32  global_tid,
kmp_int32  num_teams_lb,
kmp_int32  num_teams_ub,
kmp_int32  num_threads 
)
Parameters
locsource location information
global_tidglobal thread number
num_teams_lblower bound on number of teams requested for the teams construct
num_teams_ubupper bound on number of teams requested for the teams construct
num_threadsnumber of threads per team requested for the teams construct

Set the number of teams to be used by the teams construct. The number of initial teams cretaed will be greater than or equal to the lower bound and less than or equal to the upper bound. This call is only required if the teams construct has a num_teams clause or a thread_limit clause (or both).

Definition at line 437 of file kmp_csupport.cpp.

References __kmp_assert_valid_gtid(), __kmp_push_num_teams_51(), KA_TRACE, and loc.

Referenced by check_num_teams().

◆ __kmpc_push_num_threads()

void __kmpc_push_num_threads ( ident_t loc,
kmp_int32  global_tid,
kmp_int32  num_threads 
)
Parameters
locsource location information
global_tidglobal thread number
num_threadsnumber of threads requested for this parallel construct

Set the number of threads to be used by the next fork spawned by this thread. This call is only required if the parallel construct has a num_threads clause.

Definition at line 232 of file kmp_csupport.cpp.

References __kmp_assert_valid_gtid(), __kmp_push_num_threads(), KA_TRACE, and loc.

◆ __kmpc_serialized_parallel()

void __kmpc_serialized_parallel ( ident_t loc,
kmp_int32  global_tid 
)
Parameters
locsource location information
global_tidglobal thread number

Enter a serialized parallel construct. This interface is used to handle a conditional parallel region, like this,

#pragma omp parallel if (condition)

when the condition is false.

Definition at line 559 of file kmp_csupport.cpp.

References __kmp_assert_valid_gtid(), __kmp_serialized_parallel(), and loc.

Referenced by __kmp_fork_in_teams(), __kmp_serial_fork_call(), and __kmpc_fork_call_if().

◆ __kmpc_set_thread_limit()

void __kmpc_set_thread_limit ( ident_t loc,
kmp_int32  global_tid,
kmp_int32  thread_limit 
)
Parameters
locsource location information
global_tidglobal thread number
thread_limitlimit on number of threads which can be created within the current task

Set the thread_limit for the current task This call is there to support thread_limit clause on the target construct

Definition at line 413 of file kmp_csupport.cpp.

References __kmp_assert_valid_gtid(), and __kmp_threads.