Intel® OpenMP* Runtime Library
|
Enumerations | |
enum | sched_type { kmp_sch_lower = 32 , kmp_sch_static = 34 , kmp_sch_guided_chunked = 36 , kmp_sch_auto = 38 , kmp_sch_static_steal = 44, kmp_sch_upper = 45, kmp_ord_lower = 64 , kmp_ord_static = 66 , kmp_ord_auto = 70 , kmp_ord_upper = 72, kmp_distribute_static_chunked = 91, kmp_distribute_static = 92, kmp_nm_lower = 160 , kmp_nm_static = 162 , kmp_nm_guided_chunked = 164 , kmp_nm_auto = 166 , kmp_nm_ord_static = 194 , kmp_nm_ord_auto = 198 , kmp_nm_upper = 200, kmp_sch_default = kmp_sch_static } |
Functions | |
kmp_int32 | __kmpc_master (ident_t *loc, kmp_int32 global_tid) |
void | __kmpc_end_master (ident_t *loc, kmp_int32 global_tid) |
void | __kmpc_ordered (ident_t *loc, kmp_int32 gtid) |
void | __kmpc_end_ordered (ident_t *loc, kmp_int32 gtid) |
void | __kmpc_critical (ident_t *loc, kmp_int32 global_tid, kmp_critical_name *crit) |
void | __kmpc_end_critical (ident_t *loc, kmp_int32 global_tid, kmp_critical_name *crit) |
kmp_int32 | __kmpc_single (ident_t *loc, kmp_int32 global_tid) |
void | __kmpc_end_single (ident_t *loc, kmp_int32 global_tid) |
void | __kmpc_for_static_fini (ident_t *loc, kmp_int32 global_tid) |
void | __kmpc_dispatch_init_4 (ident_t *loc, kmp_int32 gtid, enum sched_type schedule, kmp_int32 lb, kmp_int32 ub, kmp_int32 st, kmp_int32 chunk) |
void | __kmpc_dispatch_init_4u (ident_t *loc, kmp_int32 gtid, enum sched_type schedule, kmp_uint32 lb, kmp_uint32 ub, kmp_int32 st, kmp_int32 chunk) |
void | __kmpc_dispatch_init_8 (ident_t *loc, kmp_int32 gtid, enum sched_type schedule, kmp_int64 lb, kmp_int64 ub, kmp_int64 st, kmp_int64 chunk) |
void | __kmpc_dispatch_init_8u (ident_t *loc, kmp_int32 gtid, enum sched_type schedule, kmp_uint64 lb, kmp_uint64 ub, kmp_int64 st, kmp_int64 chunk) |
int | __kmpc_dispatch_next_4 (ident_t *loc, kmp_int32 gtid, kmp_int32 *p_last, kmp_int32 *p_lb, kmp_int32 *p_ub, kmp_int32 *p_st) |
int | __kmpc_dispatch_next_4u (ident_t *loc, kmp_int32 gtid, kmp_int32 *p_last, kmp_uint32 *p_lb, kmp_uint32 *p_ub, kmp_int32 *p_st) |
int | __kmpc_dispatch_next_8 (ident_t *loc, kmp_int32 gtid, kmp_int32 *p_last, kmp_int64 *p_lb, kmp_int64 *p_ub, kmp_int64 *p_st) |
int | __kmpc_dispatch_next_8u (ident_t *loc, kmp_int32 gtid, kmp_int32 *p_last, kmp_uint64 *p_lb, kmp_uint64 *p_ub, kmp_int64 *p_st) |
void | __kmpc_dispatch_fini_4 (ident_t *loc, kmp_int32 gtid) |
void | __kmpc_dispatch_fini_8 (ident_t *loc, kmp_int32 gtid) |
void | __kmpc_dispatch_fini_4u (ident_t *loc, kmp_int32 gtid) |
void | __kmpc_dispatch_fini_8u (ident_t *loc, kmp_int32 gtid) |
void | __kmpc_for_static_init_4 (ident_t *loc, kmp_int32 gtid, kmp_int32 schedtype, kmp_int32 *plastiter, kmp_int32 *plower, kmp_int32 *pupper, kmp_int32 *pstride, kmp_int32 incr, kmp_int32 chunk) |
void | __kmpc_for_static_init_4u (ident_t *loc, kmp_int32 gtid, kmp_int32 schedtype, kmp_int32 *plastiter, kmp_uint32 *plower, kmp_uint32 *pupper, kmp_int32 *pstride, kmp_int32 incr, kmp_int32 chunk) |
void | __kmpc_for_static_init_8 (ident_t *loc, kmp_int32 gtid, kmp_int32 schedtype, kmp_int32 *plastiter, kmp_int64 *plower, kmp_int64 *pupper, kmp_int64 *pstride, kmp_int64 incr, kmp_int64 chunk) |
void | __kmpc_for_static_init_8u (ident_t *loc, kmp_int32 gtid, kmp_int32 schedtype, kmp_int32 *plastiter, kmp_uint64 *plower, kmp_uint64 *pupper, kmp_int64 *pstride, kmp_int64 incr, kmp_int64 chunk) |
These functions are used for implementing #pragma omp for
, #pragma omp sections
, #pragma omp single
and #pragma omp master
constructs.
When handling loops, there are different functions for each of the signed and unsigned 32 and 64 bit integer types which have the name suffixes _4
, _4u
, _8
and _8u
. The semantics of each of the functions is the same, so they are only described once.
Static loop scheduling is handled by __kmpc_for_static_init_4 and friends. Only a single call is needed, since the iterations to be executed by any give thread can be determined as soon as the loop parameters are known.
Dynamic scheduling is handled by the __kmpc_dispatch_init_4 and __kmpc_dispatch_next_4 functions. The init function is called once in each thread outside the loop, while the next function is called each time that the previous chunk of work has been exhausted.
enum sched_type |
Describes the loop schedule to be used for a parallel for loop.
void __kmpc_critical | ( | ident_t * | loc, |
kmp_int32 | global_tid, | ||
kmp_critical_name * | crit | ||
) |
loc | source location information. |
global_tid | global thread number . |
crit | identity of the critical section. This could be a pointer to a lock associated with the critical section, or some other suitably unique value. |
Enter code protected by a critical
construct. This function blocks until the executing thread can enter the critical section.
Definition at line 1090 of file kmp_csupport.c.
void __kmpc_dispatch_fini_4 | ( | ident_t * | loc, |
kmp_int32 | gtid | ||
) |
loc | Source code location |
gtid | Global thread id |
Mark the end of a dynamic loop.
Definition at line 2207 of file kmp_dispatch.cpp.
void __kmpc_dispatch_fini_4u | ( | ident_t * | loc, |
kmp_int32 | gtid | ||
) |
Definition at line 2225 of file kmp_dispatch.cpp.
void __kmpc_dispatch_fini_8 | ( | ident_t * | loc, |
kmp_int32 | gtid | ||
) |
Definition at line 2216 of file kmp_dispatch.cpp.
void __kmpc_dispatch_fini_8u | ( | ident_t * | loc, |
kmp_int32 | gtid | ||
) |
Definition at line 2234 of file kmp_dispatch.cpp.
void __kmpc_dispatch_init_4 | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
enum sched_type | schedule, | ||
kmp_int32 | lb, | ||
kmp_int32 | ub, | ||
kmp_int32 | st, | ||
kmp_int32 | chunk | ||
) |
loc | Source location |
gtid | Global thread id |
schedule | Schedule type |
lb | Lower bound |
ub | Upper bound |
st | Step (or increment if you prefer) |
chunk | The chunk size to block with |
This function prepares the runtime to start a dynamically scheduled for loop, saving the loop arguments. These functions are all identical apart from the types of the arguments.
Definition at line 2110 of file kmp_dispatch.cpp.
void __kmpc_dispatch_init_4u | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
enum sched_type | schedule, | ||
kmp_uint32 | lb, | ||
kmp_uint32 | ub, | ||
kmp_int32 | st, | ||
kmp_int32 | chunk | ||
) |
Definition at line 2120 of file kmp_dispatch.cpp.
void __kmpc_dispatch_init_8 | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
enum sched_type | schedule, | ||
kmp_int64 | lb, | ||
kmp_int64 | ub, | ||
kmp_int64 | st, | ||
kmp_int64 | chunk | ||
) |
Definition at line 2131 of file kmp_dispatch.cpp.
void __kmpc_dispatch_init_8u | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
enum sched_type | schedule, | ||
kmp_uint64 | lb, | ||
kmp_uint64 | ub, | ||
kmp_int64 | st, | ||
kmp_int64 | chunk | ||
) |
Definition at line 2143 of file kmp_dispatch.cpp.
int __kmpc_dispatch_next_4 | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 * | p_last, | ||
kmp_int32 * | p_lb, | ||
kmp_int32 * | p_ub, | ||
kmp_int32 * | p_st | ||
) |
loc | Source code location |
gtid | Global thread id |
p_last | Pointer to a flag set to one if this is the last chunk or zero otherwise |
p_lb | Pointer to the lower bound for the next chunk of work |
p_ub | Pointer to the upper bound for the next chunk of work |
p_st | Pointer to the stride for the next chunk of work |
Get the next dynamically allocated chunk of work for this thread. If there is no more work, then the lb,ub and stride need not be modified.
Definition at line 2164 of file kmp_dispatch.cpp.
int __kmpc_dispatch_next_4u | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 * | p_last, | ||
kmp_uint32 * | p_lb, | ||
kmp_uint32 * | p_ub, | ||
kmp_int32 * | p_st | ||
) |
Definition at line 2174 of file kmp_dispatch.cpp.
int __kmpc_dispatch_next_8 | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 * | p_last, | ||
kmp_int64 * | p_lb, | ||
kmp_int64 * | p_ub, | ||
kmp_int64 * | p_st | ||
) |
Definition at line 2184 of file kmp_dispatch.cpp.
int __kmpc_dispatch_next_8u | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 * | p_last, | ||
kmp_uint64 * | p_lb, | ||
kmp_uint64 * | p_ub, | ||
kmp_int64 * | p_st | ||
) |
Definition at line 2194 of file kmp_dispatch.cpp.
void __kmpc_end_critical | ( | ident_t * | loc, |
kmp_int32 | global_tid, | ||
kmp_critical_name * | crit | ||
) |
loc | source location information. |
global_tid | global thread number . |
crit | identity of the critical section. This could be a pointer to a lock associated with the critical section, or some other suitably unique value. |
Leave a critical section, releasing any lock that was held during its execution.
Definition at line 1147 of file kmp_csupport.c.
void __kmpc_end_master | ( | ident_t * | loc, |
kmp_int32 | global_tid | ||
) |
loc | source location information. |
global_tid | global thread number . |
Mark the end of a master
region. This should only be called by the thread that executes the master
region.
Definition at line 944 of file kmp_csupport.c.
void __kmpc_end_ordered | ( | ident_t * | loc, |
kmp_int32 | gtid | ||
) |
loc | source location information. |
gtid | global thread number. |
End execution of an ordered
construct.
Definition at line 1003 of file kmp_csupport.c.
void __kmpc_end_single | ( | ident_t * | loc, |
kmp_int32 | global_tid | ||
) |
loc | source location information |
global_tid | global thread number |
Mark the end of a single
construct. This function should only be called by the thread that executed the block of code protected by the single
construct.
Definition at line 1303 of file kmp_csupport.c.
void __kmpc_for_static_fini | ( | ident_t * | loc, |
kmp_int32 | global_tid | ||
) |
loc | Source location |
global_tid | Global thread id |
Mark the end of a statically scheduled loop.
Definition at line 1316 of file kmp_csupport.c.
void __kmpc_for_static_init_4 | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 | schedtype, | ||
kmp_int32 * | plastiter, | ||
kmp_int32 * | plower, | ||
kmp_int32 * | pupper, | ||
kmp_int32 * | pstride, | ||
kmp_int32 | incr, | ||
kmp_int32 | chunk | ||
) |
loc | Source code location |
gtid | Global thread id of this thread |
schedtype | Scheduling type |
plastiter | Pointer to the "last iteration" flag |
plower | Pointer to the lower bound |
pupper | Pointer to the upper bound |
pstride | Pointer to the stride |
incr | Loop increment |
chunk | The chunk size |
Each of the four functions here are identical apart from the argument types.
The functions compute the upper and lower bounds and stride to be used for the set of iterations to be executed by the current thread from the statically scheduled loop that is described by the initial values of the bround, stride, increment and chunk size.
Definition at line 337 of file kmp_sched.cpp.
void __kmpc_for_static_init_4u | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 | schedtype, | ||
kmp_int32 * | plastiter, | ||
kmp_uint32 * | plower, | ||
kmp_uint32 * | pupper, | ||
kmp_int32 * | pstride, | ||
kmp_int32 | incr, | ||
kmp_int32 | chunk | ||
) |
Definition at line 349 of file kmp_sched.cpp.
void __kmpc_for_static_init_8 | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 | schedtype, | ||
kmp_int32 * | plastiter, | ||
kmp_int64 * | plower, | ||
kmp_int64 * | pupper, | ||
kmp_int64 * | pstride, | ||
kmp_int64 | incr, | ||
kmp_int64 | chunk | ||
) |
Definition at line 361 of file kmp_sched.cpp.
void __kmpc_for_static_init_8u | ( | ident_t * | loc, |
kmp_int32 | gtid, | ||
kmp_int32 | schedtype, | ||
kmp_int32 * | plastiter, | ||
kmp_uint64 * | plower, | ||
kmp_uint64 * | pupper, | ||
kmp_int64 * | pstride, | ||
kmp_int64 | incr, | ||
kmp_int64 | chunk | ||
) |
Definition at line 373 of file kmp_sched.cpp.
kmp_int32 __kmpc_master | ( | ident_t * | loc, |
kmp_int32 | global_tid | ||
) |
loc | source location information. |
global_tid | global thread number . |
master
block, 0 otherwise. Definition at line 913 of file kmp_csupport.c.
Referenced by __kmpc_barrier_master_nowait().
void __kmpc_ordered | ( | ident_t * | loc, |
kmp_int32 | gtid | ||
) |
loc | source location information. |
gtid | global thread number. |
Start execution of an ordered
construct.
Definition at line 967 of file kmp_csupport.c.
kmp_int32 __kmpc_single | ( | ident_t * | loc, |
kmp_int32 | global_tid | ||
) |
loc | source location information |
global_tid | global thread number |
Test whether to execute a single
construct. There are no implicit barriers in the two "single" calls, rather the compiler should introduce an explicit barrier if it is required.
Definition at line 1287 of file kmp_csupport.c.