Loading...
Searching...
No Matches
Parallel (fork/join)

## Typedefs

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

## Functions

void | __kmpc_push_num_threads (ident_t *loc, kmp_int32 global_tid, kmp_int32 num_threads)
void | __kmpc_push_num_threads_list (ident_t *loc, kmp_int32 global_tid, kmp_uint32 list_length, kmp_int32 *num_threads_list)
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_tid | the global thread identity of the thread executing the function.
  bound_tid | the local identity of the thread executing the function
  ... | pointers to shared variables accessed by the function.

Definition at line 1752 of file kmp.h.

## Function Documentation

## __kmpc_end_serialized_parallel()

void __kmpc_end_serialized_parallel | ( | ident_t * | loc,
|  | kmp_int32 | global_tid )

Parameters

  loc | source location information
  global_tid | global thread number

Leave a serialized parallel construct.

Definition at line 621 of file kmp_csupport.cpp.

Referenced by __kmpc_fork_call_if().

## __kmpc_fork_call()

void __kmpc_fork_call | ( | ident_t * | loc,
|  | kmp_int32 | argc,
|  | kmpc_micro | microtask,
|  |  | ... )

Parameters

  loc | source location information
  argc | total number of arguments in the ellipsis
  microtask | pointer 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 307 of file kmp_csupport.cpp.

Referenced by __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

  loc | source location information
  microtask | pointer to callback routine consisting of outlined parallel construct
  cond | condition for running in parallel
  args | struct of pointers to shared variables that aren't global

Perform a fork only if the condition is true.

Definition at line 388 of file kmp_csupport.cpp.

## __kmpc_fork_teams()

void __kmpc_fork_teams | ( | ident_t * | loc,
|  | kmp_int32 | argc,
|  | kmpc_micro | microtask,
|  |  | ... )

Parameters

  loc | source location information
  argc | total number of arguments in the ellipsis
  microtask | pointer 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 502 of file kmp_csupport.cpp.

## __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

  loc | source location information
  global_tid | global thread number
  num_teams | number of teams requested for the teams construct
  num_threads | number 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 438 of file kmp_csupport.cpp.

## __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

  loc | source location information
  global_tid | global thread number
  num_teams_lb | lower bound on number of teams requested for the teams construct
  num_teams_ub | upper bound on number of teams requested for the teams construct
  num_threads | number 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 481 of file kmp_csupport.cpp.

## __kmpc_push_num_threads()

void __kmpc_push_num_threads | ( | ident_t * | loc,
|  | kmp_int32 | global_tid,
|  | kmp_int32 | num_threads )

Parameters

  loc | source location information
  global_tid | global thread number
  num_threads | number 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.

## __kmpc_push_num_threads_list()

void __kmpc_push_num_threads_list | ( | ident_t * | loc,
|  | kmp_int32 | global_tid,
|  | kmp_uint32 | list_length,
|  | kmp_int32 * | num_threads_list )

Parameters

  loc | source location information
  global_tid | global thread number
  list_length | number of entries in the num_threads_list array
  num_threads_list | array of numbers of threads requested for this parallel construct and subsequent nested parallel constructs

Set the number of threads to be used by the next fork spawned by this thread, and some nested forks as well. This call is only required if the parallel construct has a num_threads clause that has a list of integers as the argument.

Definition at line 260 of file kmp_csupport.cpp.

## __kmpc_serialized_parallel()

void __kmpc_serialized_parallel | ( | ident_t * | loc,
|  | kmp_int32 | global_tid )

Parameters

  loc | source location information
  global_tid | global 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 603 of file kmp_csupport.cpp.

Referenced by __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

  loc | source location information
  global_tid | global thread number
  thread_limit | limit 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 457 of file kmp_csupport.cpp.