StarPU Internal Handbook

Data Structures | Macros | Enumerations | Variables
openmp_runtime_support.h File Reference
`#include <starpu.h>`
`#include <common/list.h>`
`#include <common/starpu_spinlock.h>`
`#include <common/uthash.h>`
`#include <ucontext.h>`

Go to the source code of this file.

## Data Structures
struct | starpu_omp_numeric_place
struct | starpu_omp_place
struct | starpu_omp_data_environment_icvs
struct | starpu_omp_device_icvs
struct | starpu_omp_implicit_task_icvs
struct | starpu_omp_global_icvs
struct | starpu_omp_initial_icv_values
struct | starpu_omp_task_group
struct | starpu_omp_task_link
struct | starpu_omp_condition
struct | starpu_omp_critical

## Macros
#define | _XOPEN_SOURCE
#define | STARPU_OMP_MAX_ACTIVE_LEVELS

## Enumerations
enum | starpu_omp_place_name { starpu_omp_place_undefined , starpu_omp_place_threads , starpu_omp_place_cores , starpu_omp_place_sockets , starpu_omp_place_numerical }
enum | starpu_omp_task_state { starpu_omp_task_state_clear , starpu_omp_task_state_preempted , starpu_omp_task_state_terminated , starpu_omp_task_state_zombie , starpu_omp_task_state_target }
enum | starpu_omp_task_wait_on { starpu_omp_task_wait_on_task_childs , starpu_omp_task_wait_on_region_tasks , starpu_omp_task_wait_on_barrier , starpu_omp_task_wait_on_group , starpu_omp_task_wait_on_critical , starpu_omp_task_wait_on_ordered , starpu_omp_task_wait_on_lock , starpu_omp_task_wait_on_nest_lock }
enum | starpu_omp_task_flags { STARPU_OMP_TASK_FLAGS_IMPLICIT , STARPU_OMP_TASK_FLAGS_UNDEFERRED , STARPU_OMP_TASK_FLAGS_FINAL , STARPU_OMP_TASK_FLAGS_UNTIED }

## Variables
starpu_pthread_key_t | omp_thread_key
starpu_pthread_key_t | omp_task_key

## Data Structure Documentation

## ◆ starpu_omp_numeric_place

struct starpu_omp_numeric_place

Data Fields
int | excluded_place |
int * | included_numeric_items |
int | nb_included_numeric_items |
int * | excluded_numeric_items |
int | nb_excluded_numeric_items |

## ◆ starpu_omp_place

struct starpu_omp_place

OpenMP place for thread afinity, defined by the OpenMP spec

Data Fields
int | abstract_name |
int | abstract_excluded |
int | abstract_length |
struct starpu_omp_numeric_place * | numeric_places |
int | nb_numeric_places |

## ◆ starpu_omp_data_environment_icvs

struct starpu_omp_data_environment_icvs

Internal Control Variables (ICVs) declared following OpenMP 4.0.0 spec section 2.3.1

Data Fields
int | dyn_var | parallel region icvs
int | nest_var |
int * | nthreads_var |
int | thread_limit_var | nthreads_var ICV is a list
int | active_levels_var |
int | levels_var |
int * | bind_var |
int | run_sched_var | bind_var ICV is a list loop region icvs
unsigned long long | run_sched_chunk_var |
int | default_device_var | program execution icvs
int | max_task_priority_var |

## ◆ starpu_omp_device_icvs

struct starpu_omp_device_icvs

Data Fields
int | max_active_levels_var | parallel region icvs
int | def_sched_var | loop region icvs
unsigned long long | def_sched_chunk_var |
int | stacksize_var | program execution icvs
int | wait_policy_var |

## ◆ starpu_omp_implicit_task_icvs

struct starpu_omp_implicit_task_icvs

Data Fields
int | place_partition_var | parallel region icvs

## ◆ starpu_omp_global_icvs

struct starpu_omp_global_icvs

Data Fields
int | cancel_var | program execution icvs

## ◆ starpu_omp_initial_icv_values

struct starpu_omp_initial_icv_values

Data Fields
int | dyn_var |
int | nest_var |
int * | nthreads_var |
int | run_sched_var |
unsigned long long | run_sched_chunk_var |
int | def_sched_var |
unsigned long long | def_sched_chunk_var |
int * | bind_var |
int | stacksize_var |
int | wait_policy_var |
int | thread_limit_var |
int | max_active_levels_var |
int | active_levels_var |
int | levels_var |
int | place_partition_var |
int | cancel_var |
int | default_device_var |
int | max_task_priority_var |
struct starpu_omp_place | places | not a real ICV, but needed to store the contents of OMP_PLACES

## ◆ starpu_omp_task_group

struct starpu_omp_task_group

Data Fields
int | descendent_task_count |
struct starpu_omp_task * | leader_task |
struct starpu_omp_task_group * | p_previous_task_group |

## ◆ starpu_omp_task_link

struct starpu_omp_task_link

Data Fields
struct starpu_omp_task * | task |
struct starpu_omp_task_link * | next |

## ◆ starpu_omp_condition

struct starpu_omp_condition

Data Fields
struct starpu_omp_task_link * | contention_list_head |

## ◆ starpu_omp_critical

struct starpu_omp_critical

Data Fields
UT_hash_handle | hh |
struct _starpu_spinlock | lock |
unsigned | state |
struct starpu_omp_task_link * | contention_list_head |
const char * | name |

## Macro Definition Documentation

## ◆ _XOPEN_SOURCE

#define _XOPEN_SOURCE

ucontexts have been deprecated as of POSIX 1-2004 _XOPEN_SOURCE required at least on OS/X

TODO: add detection in configure.ac

## ◆ STARPU_OMP_MAX_ACTIVE_LEVELS

#define STARPU_OMP_MAX_ACTIVE_LEVELS

Arbitrary limit on the number of nested parallel sections

## Enumeration Type Documentation

## ◆ starpu_omp_place_name

enum starpu_omp_place_name

Possible abstract names for OpenMP places

## ◆ starpu_omp_task_state

enum starpu_omp_task_state

Enumerator
starpu_omp_task_state_target | target tasks are non-preemptible tasks, without dedicated stack and OpenMP Runtime Support context