Home | History | Annotate | Line # | Download | only in libgomp
libgomp.info revision 1.1.1.1
      1  1.1  mrg This is libgomp.info, produced by makeinfo version 4.12 from
      2  1.1  mrg /space/rguenther/gcc-4.5.4/gcc-4.5.4/libgomp/libgomp.texi.
      3  1.1  mrg 
      4  1.1  mrg Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
      5  1.1  mrg 
      6  1.1  mrg    Permission is granted to copy, distribute and/or modify this document
      7  1.1  mrg under the terms of the GNU Free Documentation License, Version 1.2 or
      8  1.1  mrg any later version published by the Free Software Foundation; with the
      9  1.1  mrg Invariant Sections being "Funding Free Software", the Front-Cover texts
     10  1.1  mrg being (a) (see below), and with the Back-Cover Texts being (b) (see
     11  1.1  mrg below).  A copy of the license is included in the section entitled "GNU
     12  1.1  mrg Free Documentation License".
     13  1.1  mrg 
     14  1.1  mrg    (a) The FSF's Front-Cover Text is:
     15  1.1  mrg 
     16  1.1  mrg    A GNU Manual
     17  1.1  mrg 
     18  1.1  mrg    (b) The FSF's Back-Cover Text is:
     19  1.1  mrg 
     20  1.1  mrg    You have freedom to copy and modify this GNU Manual, like GNU
     21  1.1  mrg software.  Copies published by the Free Software Foundation raise
     22  1.1  mrg funds for GNU development.
     23  1.1  mrg 
     24  1.1  mrg INFO-DIR-SECTION GNU Libraries
     25  1.1  mrg START-INFO-DIR-ENTRY
     26  1.1  mrg * libgomp: (libgomp).                    GNU OpenMP runtime library
     27  1.1  mrg END-INFO-DIR-ENTRY
     28  1.1  mrg 
     29  1.1  mrg    This manual documents the GNU implementation of the OpenMP API for
     30  1.1  mrg multi-platform shared-memory parallel programming in C/C++ and Fortran.
     31  1.1  mrg 
     32  1.1  mrg    Published by the Free Software Foundation 51 Franklin Street, Fifth
     33  1.1  mrg Floor Boston, MA 02110-1301 USA
     34  1.1  mrg 
     35  1.1  mrg    Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
     36  1.1  mrg 
     37  1.1  mrg    Permission is granted to copy, distribute and/or modify this document
     38  1.1  mrg under the terms of the GNU Free Documentation License, Version 1.2 or
     39  1.1  mrg any later version published by the Free Software Foundation; with the
     40  1.1  mrg Invariant Sections being "Funding Free Software", the Front-Cover texts
     41  1.1  mrg being (a) (see below), and with the Back-Cover Texts being (b) (see
     42  1.1  mrg below).  A copy of the license is included in the section entitled "GNU
     43  1.1  mrg Free Documentation License".
     44  1.1  mrg 
     45  1.1  mrg    (a) The FSF's Front-Cover Text is:
     46  1.1  mrg 
     47  1.1  mrg    A GNU Manual
     48  1.1  mrg 
     49  1.1  mrg    (b) The FSF's Back-Cover Text is:
     50  1.1  mrg 
     51  1.1  mrg    You have freedom to copy and modify this GNU Manual, like GNU
     52  1.1  mrg software.  Copies published by the Free Software Foundation raise
     53  1.1  mrg funds for GNU development.
     54  1.1  mrg 
     55  1.1  mrg 
     56  1.1  mrg File: libgomp.info,  Node: Top,  Next: Enabling OpenMP,  Up: (dir)
     57  1.1  mrg 
     58  1.1  mrg Introduction
     59  1.1  mrg ************
     60  1.1  mrg 
     61  1.1  mrg This manual documents the usage of libgomp, the GNU implementation of
     62  1.1  mrg the OpenMP (http://www.openmp.org) Application Programming Interface
     63  1.1  mrg (API) for multi-platform shared-memory parallel programming in C/C++
     64  1.1  mrg and Fortran.
     65  1.1  mrg 
     66  1.1  mrg * Menu:
     67  1.1  mrg 
     68  1.1  mrg * Enabling OpenMP::            How to enable OpenMP for your applications.
     69  1.1  mrg * Runtime Library Routines::   The OpenMP runtime application programming
     70  1.1  mrg                                interface.
     71  1.1  mrg * Environment Variables::      Influencing runtime behavior with environment
     72  1.1  mrg                                variables.
     73  1.1  mrg * The libgomp ABI::            Notes on the external ABI presented by libgomp.
     74  1.1  mrg * Reporting Bugs::             How to report bugs in GNU OpenMP.
     75  1.1  mrg * Copying::                    GNU general public license says
     76  1.1  mrg                                how you can copy and share libgomp.
     77  1.1  mrg * GNU Free Documentation License::
     78  1.1  mrg                                How you can copy and share this manual.
     79  1.1  mrg * Funding::                    How to help assure continued work for free
     80  1.1  mrg                                software.
     81  1.1  mrg * Index::                      Index of this documentation.
     82  1.1  mrg 
     83  1.1  mrg 
     84  1.1  mrg File: libgomp.info,  Node: Enabling OpenMP,  Next: Runtime Library Routines,  Prev: Top,  Up: Top
     85  1.1  mrg 
     86  1.1  mrg 1 Enabling OpenMP
     87  1.1  mrg *****************
     88  1.1  mrg 
     89  1.1  mrg To activate the OpenMP extensions for C/C++ and Fortran, the
     90  1.1  mrg compile-time flag `-fopenmp' must be specified. This enables the OpenMP
     91  1.1  mrg directive `#pragma omp' in C/C++ and `!$omp' directives in free form,
     92  1.1  mrg `c$omp', `*$omp' and `!$omp' directives in fixed form, `!$' conditional
     93  1.1  mrg compilation sentinels in free form and `c$', `*$' and `!$' sentinels in
     94  1.1  mrg fixed form, for Fortran. The flag also arranges for automatic linking
     95  1.1  mrg of the OpenMP runtime library (*note Runtime Library Routines::).
     96  1.1  mrg 
     97  1.1  mrg    A complete description of all OpenMP directives accepted may be
     98  1.1  mrg found in the OpenMP Application Program Interface
     99  1.1  mrg (http://www.openmp.org) manual, version 3.0.
    100  1.1  mrg 
    101  1.1  mrg 
    102  1.1  mrg File: libgomp.info,  Node: Runtime Library Routines,  Next: Environment Variables,  Prev: Enabling OpenMP,  Up: Top
    103  1.1  mrg 
    104  1.1  mrg 2 Runtime Library Routines
    105  1.1  mrg **************************
    106  1.1  mrg 
    107  1.1  mrg The runtime routines described here are defined by section 3 of the
    108  1.1  mrg OpenMP specifications in version 3.0. The routines are structured in
    109  1.1  mrg following three parts:
    110  1.1  mrg 
    111  1.1  mrg    Control threads, processors and the parallel environment.
    112  1.1  mrg 
    113  1.1  mrg * Menu:
    114  1.1  mrg 
    115  1.1  mrg * omp_get_active_level::        Number of active parallel regions
    116  1.1  mrg * omp_get_ancestor_thread_num:: Ancestor thread ID
    117  1.1  mrg * omp_get_dynamic::             Dynamic teams setting
    118  1.1  mrg * omp_get_level::               Number of parallel regions
    119  1.1  mrg * omp_get_max_active_levels::   Maximal number of active regions
    120  1.1  mrg * omp_get_max_threads::         Maximal number of threads of parallel region
    121  1.1  mrg * omp_get_nested::              Nested parallel regions
    122  1.1  mrg * omp_get_num_procs::           Number of processors online
    123  1.1  mrg * omp_get_num_threads::         Size of the active team
    124  1.1  mrg * omp_get_schedule::            Obtain the runtime scheduling method
    125  1.1  mrg * omp_get_team_size::           Number of threads in a team
    126  1.1  mrg * omp_get_thread_limit::        Maximal number of threads
    127  1.1  mrg * omp_get_thread_num::          Current thread ID
    128  1.1  mrg * omp_in_parallel::             Whether a parallel region is active
    129  1.1  mrg * omp_set_dynamic::             Enable/disable dynamic teams
    130  1.1  mrg * omp_set_max_active_levels::   Limits the number of active parallel regions
    131  1.1  mrg * omp_set_nested::              Enable/disable nested parallel regions
    132  1.1  mrg * omp_set_num_threads::         Set upper team size limit
    133  1.1  mrg * omp_set_schedule::            Set the runtime scheduling method
    134  1.1  mrg 
    135  1.1  mrg    Initialize, set, test, unset and destroy simple and nested locks.
    136  1.1  mrg 
    137  1.1  mrg * Menu:
    138  1.1  mrg 
    139  1.1  mrg * omp_init_lock::            Initialize simple lock
    140  1.1  mrg * omp_set_lock::             Wait for and set simple lock
    141  1.1  mrg * omp_test_lock::            Test and set simple lock if available
    142  1.1  mrg * omp_unset_lock::           Unset simple lock
    143  1.1  mrg * omp_destroy_lock::         Destroy simple lock
    144  1.1  mrg * omp_init_nest_lock::       Initialize nested lock
    145  1.1  mrg * omp_set_nest_lock::        Wait for and set simple lock
    146  1.1  mrg * omp_test_nest_lock::       Test and set nested lock if available
    147  1.1  mrg * omp_unset_nest_lock::      Unset nested lock
    148  1.1  mrg * omp_destroy_nest_lock::    Destroy nested lock
    149  1.1  mrg 
    150  1.1  mrg    Portable, thread-based, wall clock timer.
    151  1.1  mrg 
    152  1.1  mrg * Menu:
    153  1.1  mrg 
    154  1.1  mrg * omp_get_wtick::            Get timer precision.
    155  1.1  mrg * omp_get_wtime::            Elapsed wall clock time.
    156  1.1  mrg 
    157  1.1  mrg 
    158  1.1  mrg File: libgomp.info,  Node: omp_get_active_level,  Next: omp_get_ancestor_thread_num,  Up: Runtime Library Routines
    159  1.1  mrg 
    160  1.1  mrg 2.1 `omp_get_active_level' - Number of parallel regions
    161  1.1  mrg =======================================================
    162  1.1  mrg 
    163  1.1  mrg _Description_:
    164  1.1  mrg      This function returns the nesting level for the active parallel
    165  1.1  mrg      blocks, which enclose the calling call.
    166  1.1  mrg 
    167  1.1  mrg _C/C++_
    168  1.1  mrg      _Prototype_:  `int omp_get_active_level();'
    169  1.1  mrg 
    170  1.1  mrg _Fortran_:
    171  1.1  mrg      _Interface_:  `integer omp_get_active_level()'
    172  1.1  mrg 
    173  1.1  mrg _See also_:
    174  1.1  mrg      *note omp_get_level::, *note omp_get_max_active_levels::, *note
    175  1.1  mrg      omp_set_max_active_levels::
    176  1.1  mrg 
    177  1.1  mrg _Reference_:
    178  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    179  1.1  mrg      3.2.19.
    180  1.1  mrg 
    181  1.1  mrg 
    182  1.1  mrg File: libgomp.info,  Node: omp_get_ancestor_thread_num,  Next: omp_get_dynamic,  Prev: omp_get_active_level,  Up: Runtime Library Routines
    183  1.1  mrg 
    184  1.1  mrg 2.2 `omp_get_ancestor_thread_num' - Ancestor thread ID
    185  1.1  mrg ======================================================
    186  1.1  mrg 
    187  1.1  mrg _Description_:
    188  1.1  mrg      This function returns the thread identification number for the
    189  1.1  mrg      given nesting level of the current thread. For values of LEVEL
    190  1.1  mrg      outside zero to `omp_get_level' -1 is returned; if LEVEL is
    191  1.1  mrg      `omp_get_level' the result is identical to `omp_get_thread_num'.
    192  1.1  mrg 
    193  1.1  mrg _C/C++_
    194  1.1  mrg      _Prototype_:  `int omp_get_ancestor_thread_num(int level);'
    195  1.1  mrg 
    196  1.1  mrg _Fortran_:
    197  1.1  mrg      _Interface_:  `integer omp_ancestor_thread_num(level)'
    198  1.1  mrg                    `integer level'
    199  1.1  mrg 
    200  1.1  mrg _See also_:
    201  1.1  mrg      *note omp_get_level::, *note omp_get_thread_num::, *note
    202  1.1  mrg      omp_get_team_size::
    203  1.1  mrg 
    204  1.1  mrg _Reference_:
    205  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    206  1.1  mrg      3.2.17.
    207  1.1  mrg 
    208  1.1  mrg 
    209  1.1  mrg File: libgomp.info,  Node: omp_get_dynamic,  Next: omp_get_level,  Prev: omp_get_ancestor_thread_num,  Up: Runtime Library Routines
    210  1.1  mrg 
    211  1.1  mrg 2.3 `omp_get_dynamic' - Dynamic teams setting
    212  1.1  mrg =============================================
    213  1.1  mrg 
    214  1.1  mrg _Description_:
    215  1.1  mrg      This function returns `true' if enabled, `false' otherwise.  Here,
    216  1.1  mrg      `true' and `false' represent their language-specific counterparts.
    217  1.1  mrg 
    218  1.1  mrg      The dynamic team setting may be initialized at startup by the
    219  1.1  mrg      `OMP_DYNAMIC' environment variable or at runtime using
    220  1.1  mrg      `omp_set_dynamic'. If undefined, dynamic adjustment is disabled by
    221  1.1  mrg      default.
    222  1.1  mrg 
    223  1.1  mrg _C/C++_:
    224  1.1  mrg      _Prototype_:  `int omp_get_dynamic();'
    225  1.1  mrg 
    226  1.1  mrg _Fortran_:
    227  1.1  mrg      _Interface_:  `logical function omp_get_dynamic()'
    228  1.1  mrg 
    229  1.1  mrg _See also_:
    230  1.1  mrg      *note omp_set_dynamic::, *note OMP_DYNAMIC::
    231  1.1  mrg 
    232  1.1  mrg _Reference_:
    233  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.8.
    234  1.1  mrg 
    235  1.1  mrg 
    236  1.1  mrg File: libgomp.info,  Node: omp_get_level,  Next: omp_get_max_active_levels,  Prev: omp_get_dynamic,  Up: Runtime Library Routines
    237  1.1  mrg 
    238  1.1  mrg 2.4 `omp_get_level' - Obtain the current nesting level
    239  1.1  mrg ======================================================
    240  1.1  mrg 
    241  1.1  mrg _Description_:
    242  1.1  mrg      This function returns the nesting level for the parallel blocks,
    243  1.1  mrg      which enclose the calling call.
    244  1.1  mrg 
    245  1.1  mrg _C/C++_
    246  1.1  mrg      _Prototype_:  `int omp_get level();'
    247  1.1  mrg 
    248  1.1  mrg _Fortran_:
    249  1.1  mrg      _Interface_:  `integer omp_level()'
    250  1.1  mrg 
    251  1.1  mrg _See also_:
    252  1.1  mrg      *note omp_get_active_level::
    253  1.1  mrg 
    254  1.1  mrg _Reference_:
    255  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    256  1.1  mrg      3.2.16.
    257  1.1  mrg 
    258  1.1  mrg 
    259  1.1  mrg File: libgomp.info,  Node: omp_get_max_active_levels,  Next: omp_get_max_threads,  Prev: omp_get_level,  Up: Runtime Library Routines
    260  1.1  mrg 
    261  1.1  mrg 2.5 `omp_set_max_active_levels' - Maximal number of active regions
    262  1.1  mrg ==================================================================
    263  1.1  mrg 
    264  1.1  mrg _Description_:
    265  1.1  mrg      This function obtains the maximally allowed number of nested,
    266  1.1  mrg      active parallel regions.
    267  1.1  mrg 
    268  1.1  mrg _C/C++_
    269  1.1  mrg      _Prototype_:  `int omp_get_max_active_levels();'
    270  1.1  mrg 
    271  1.1  mrg _Fortran_:
    272  1.1  mrg      _Interface_:  `int omp_get_max_active_levels()'
    273  1.1  mrg 
    274  1.1  mrg _See also_:
    275  1.1  mrg      *note omp_set_max_active_levels::, *note omp_get_active_level::
    276  1.1  mrg 
    277  1.1  mrg _Reference_:
    278  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    279  1.1  mrg      3.2.14.
    280  1.1  mrg 
    281  1.1  mrg 
    282  1.1  mrg File: libgomp.info,  Node: omp_get_max_threads,  Next: omp_get_nested,  Prev: omp_get_max_active_levels,  Up: Runtime Library Routines
    283  1.1  mrg 
    284  1.1  mrg 2.6 `omp_get_max_threads' - Maximal number of threads of parallel region
    285  1.1  mrg ========================================================================
    286  1.1  mrg 
    287  1.1  mrg _Description_:
    288  1.1  mrg      Return the maximal number of threads used for the current parallel
    289  1.1  mrg      region that does not use the clause `num_threads'.
    290  1.1  mrg 
    291  1.1  mrg _C/C++_:
    292  1.1  mrg      _Prototype_:  `int omp_get_max_threads();'
    293  1.1  mrg 
    294  1.1  mrg _Fortran_:
    295  1.1  mrg      _Interface_:  `integer function omp_get_max_threads()'
    296  1.1  mrg 
    297  1.1  mrg _See also_:
    298  1.1  mrg      *note omp_set_num_threads::, *note omp_set_dynamic::, *note
    299  1.1  mrg      omp_get_thread_limit::
    300  1.1  mrg 
    301  1.1  mrg _Reference_:
    302  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.3.
    303  1.1  mrg 
    304  1.1  mrg 
    305  1.1  mrg File: libgomp.info,  Node: omp_get_nested,  Next: omp_get_num_procs,  Prev: omp_get_max_threads,  Up: Runtime Library Routines
    306  1.1  mrg 
    307  1.1  mrg 2.7 `omp_get_nested' - Nested parallel regions
    308  1.1  mrg ==============================================
    309  1.1  mrg 
    310  1.1  mrg _Description_:
    311  1.1  mrg      This function returns `true' if nested parallel regions are
    312  1.1  mrg      enabled, `false' otherwise. Here, `true' and `false' represent
    313  1.1  mrg      their language-specific counterparts.
    314  1.1  mrg 
    315  1.1  mrg      Nested parallel regions may be initialized at startup by the
    316  1.1  mrg      `OMP_NESTED' environment variable or at runtime using
    317  1.1  mrg      `omp_set_nested'. If undefined, nested parallel regions are
    318  1.1  mrg      disabled by default.
    319  1.1  mrg 
    320  1.1  mrg _C/C++_:
    321  1.1  mrg      _Prototype_:  `int omp_get_nested();'
    322  1.1  mrg 
    323  1.1  mrg _Fortran_:
    324  1.1  mrg      _Interface_:  `integer function omp_get_nested()'
    325  1.1  mrg 
    326  1.1  mrg _See also_:
    327  1.1  mrg      *note omp_set_nested::, *note OMP_NESTED::
    328  1.1  mrg 
    329  1.1  mrg _Reference_:
    330  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    331  1.1  mrg      3.2.10.
    332  1.1  mrg 
    333  1.1  mrg 
    334  1.1  mrg File: libgomp.info,  Node: omp_get_num_procs,  Next: omp_get_num_threads,  Prev: omp_get_nested,  Up: Runtime Library Routines
    335  1.1  mrg 
    336  1.1  mrg 2.8 `omp_get_num_procs' - Number of processors online
    337  1.1  mrg =====================================================
    338  1.1  mrg 
    339  1.1  mrg _Description_:
    340  1.1  mrg      Returns the number of processors online.
    341  1.1  mrg 
    342  1.1  mrg _C/C++_:
    343  1.1  mrg      _Prototype_:  `int omp_get_num_procs();'
    344  1.1  mrg 
    345  1.1  mrg _Fortran_:
    346  1.1  mrg      _Interface_:  `integer function omp_get_num_procs()'
    347  1.1  mrg 
    348  1.1  mrg _Reference_:
    349  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.5.
    350  1.1  mrg 
    351  1.1  mrg 
    352  1.1  mrg File: libgomp.info,  Node: omp_get_num_threads,  Next: omp_get_schedule,  Prev: omp_get_num_procs,  Up: Runtime Library Routines
    353  1.1  mrg 
    354  1.1  mrg 2.9 `omp_get_num_threads' - Size of the active team
    355  1.1  mrg ===================================================
    356  1.1  mrg 
    357  1.1  mrg _Description_:
    358  1.1  mrg      The number of threads in the current team. In a sequential section
    359  1.1  mrg      of the program `omp_get_num_threads' returns 1.
    360  1.1  mrg 
    361  1.1  mrg      The default team size may be initialized at startup by the
    362  1.1  mrg      `OMP_NUM_THREADS' environment variable. At runtime, the size of
    363  1.1  mrg      the current team may be set either by the `NUM_THREADS' clause or
    364  1.1  mrg      by `omp_set_num_threads'. If none of the above were used to define
    365  1.1  mrg      a specific value and `OMP_DYNAMIC' is disabled, one thread per CPU
    366  1.1  mrg      online is used.
    367  1.1  mrg 
    368  1.1  mrg _C/C++_:
    369  1.1  mrg      _Prototype_:  `int omp_get_num_threads();'
    370  1.1  mrg 
    371  1.1  mrg _Fortran_:
    372  1.1  mrg      _Interface_:  `integer function omp_get_num_threads()'
    373  1.1  mrg 
    374  1.1  mrg _See also_:
    375  1.1  mrg      *note omp_get_max_threads::, *note omp_set_num_threads::, *note
    376  1.1  mrg      OMP_NUM_THREADS::
    377  1.1  mrg 
    378  1.1  mrg _Reference_:
    379  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.2.
    380  1.1  mrg 
    381  1.1  mrg 
    382  1.1  mrg File: libgomp.info,  Node: omp_get_schedule,  Next: omp_get_team_size,  Prev: omp_get_num_threads,  Up: Runtime Library Routines
    383  1.1  mrg 
    384  1.1  mrg 2.10 `omp_get_schedule' - Obtain the runtime scheduling method
    385  1.1  mrg ==============================================================
    386  1.1  mrg 
    387  1.1  mrg _Description_:
    388  1.1  mrg      Obtain runtime the scheduling method. The KIND argument will be
    389  1.1  mrg      set to the value `omp_sched_static', `omp_sched_dynamic',
    390  1.1  mrg      `opm_sched_guided' or `auto'. The second argument, MODIFIER, is
    391  1.1  mrg      set to the chunk size.
    392  1.1  mrg 
    393  1.1  mrg _C/C++_
    394  1.1  mrg      _Prototype_:  `omp_schedule(omp_sched_t * kind, int *modifier);'
    395  1.1  mrg 
    396  1.1  mrg _Fortran_:
    397  1.1  mrg      _Interface_:  `subroutine omp_schedule(kind, modifier)'
    398  1.1  mrg                    `integer(kind=omp_sched_kind) kind'
    399  1.1  mrg                    `integer modifier'
    400  1.1  mrg 
    401  1.1  mrg _See also_:
    402  1.1  mrg      *note omp_set_schedule::, *note OMP_SCHEDULE::
    403  1.1  mrg 
    404  1.1  mrg _Reference_:
    405  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    406  1.1  mrg      3.2.12.
    407  1.1  mrg 
    408  1.1  mrg 
    409  1.1  mrg File: libgomp.info,  Node: omp_get_team_size,  Next: omp_get_thread_limit,  Prev: omp_get_schedule,  Up: Runtime Library Routines
    410  1.1  mrg 
    411  1.1  mrg 2.11 `omp_get_team_size' - Number of threads in a team
    412  1.1  mrg ======================================================
    413  1.1  mrg 
    414  1.1  mrg _Description_:
    415  1.1  mrg      This function returns the number of threads in a thread team to
    416  1.1  mrg      which either the current thread or its ancestor belongs. For
    417  1.1  mrg      values of LEVEL outside zero to `omp_get_level' -1 is returned; if
    418  1.1  mrg      LEVEL is zero 1 is returned and for `omp_get_level' the result is
    419  1.1  mrg      identical to `omp_get_num_threads'.
    420  1.1  mrg 
    421  1.1  mrg _C/C++_:
    422  1.1  mrg      _Prototype_:  `int omp_get_time_size(int level);'
    423  1.1  mrg 
    424  1.1  mrg _Fortran_:
    425  1.1  mrg      _Interface_:  `integer function omp_get_team_size(level)'
    426  1.1  mrg                    `integer level'
    427  1.1  mrg 
    428  1.1  mrg _See also_:
    429  1.1  mrg      *note omp_get_num_threads::, *note omp_get_level::, *note
    430  1.1  mrg      omp_get_ancestor_thread_num::
    431  1.1  mrg 
    432  1.1  mrg _Reference_:
    433  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    434  1.1  mrg      3.2.18.
    435  1.1  mrg 
    436  1.1  mrg 
    437  1.1  mrg File: libgomp.info,  Node: omp_get_thread_limit,  Next: omp_get_thread_num,  Prev: omp_get_team_size,  Up: Runtime Library Routines
    438  1.1  mrg 
    439  1.1  mrg 2.12 `omp_get_thread_limit' - Maximal number of threads
    440  1.1  mrg =======================================================
    441  1.1  mrg 
    442  1.1  mrg _Description_:
    443  1.1  mrg      Return the maximal number of threads of the program.
    444  1.1  mrg 
    445  1.1  mrg _C/C++_:
    446  1.1  mrg      _Prototype_:  `int omp_get_thread_limit();'
    447  1.1  mrg 
    448  1.1  mrg _Fortran_:
    449  1.1  mrg      _Interface_:  `integer function omp_get_thread_limit()'
    450  1.1  mrg 
    451  1.1  mrg _See also_:
    452  1.1  mrg      *note omp_get_max_threads::, *note OMP_THREAD_LIMIT::
    453  1.1  mrg 
    454  1.1  mrg _Reference_:
    455  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    456  1.1  mrg      3.2.13.
    457  1.1  mrg 
    458  1.1  mrg 
    459  1.1  mrg File: libgomp.info,  Node: omp_get_thread_num,  Next: omp_in_parallel,  Prev: omp_get_thread_limit,  Up: Runtime Library Routines
    460  1.1  mrg 
    461  1.1  mrg 2.13 `omp_get_thread_num' - Current thread ID
    462  1.1  mrg =============================================
    463  1.1  mrg 
    464  1.1  mrg _Description_:
    465  1.1  mrg      Unique thread identification number within the current team.  In a
    466  1.1  mrg      sequential parts of the program, `omp_get_thread_num' always
    467  1.1  mrg      returns 0. In parallel regions the return value varies from 0 to
    468  1.1  mrg      `omp_get_num_threads'-1 inclusive. The return value of the master
    469  1.1  mrg      thread of a team is always 0.
    470  1.1  mrg 
    471  1.1  mrg _C/C++_:
    472  1.1  mrg      _Prototype_:  `int omp_get_thread_num();'
    473  1.1  mrg 
    474  1.1  mrg _Fortran_:
    475  1.1  mrg      _Interface_:  `integer function omp_get_thread_num()'
    476  1.1  mrg 
    477  1.1  mrg _See also_:
    478  1.1  mrg      *note omp_get_num_threads::, *note omp_get_ancestor_thread_num::
    479  1.1  mrg 
    480  1.1  mrg _Reference_:
    481  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.4.
    482  1.1  mrg 
    483  1.1  mrg 
    484  1.1  mrg File: libgomp.info,  Node: omp_in_parallel,  Next: omp_set_dynamic,  Prev: omp_get_thread_num,  Up: Runtime Library Routines
    485  1.1  mrg 
    486  1.1  mrg 2.14 `omp_in_parallel' - Whether a parallel region is active
    487  1.1  mrg ============================================================
    488  1.1  mrg 
    489  1.1  mrg _Description_:
    490  1.1  mrg      This function returns `true' if currently running in parallel,
    491  1.1  mrg      `false' otherwise. Here, `true' and `false' represent their
    492  1.1  mrg      language-specific counterparts.
    493  1.1  mrg 
    494  1.1  mrg _C/C++_:
    495  1.1  mrg      _Prototype_:  `int omp_in_parallel();'
    496  1.1  mrg 
    497  1.1  mrg _Fortran_:
    498  1.1  mrg      _Interface_:  `logical function omp_in_parallel()'
    499  1.1  mrg 
    500  1.1  mrg _Reference_:
    501  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.6.
    502  1.1  mrg 
    503  1.1  mrg 
    504  1.1  mrg File: libgomp.info,  Node: omp_set_dynamic,  Next: omp_set_max_active_levels,  Prev: omp_in_parallel,  Up: Runtime Library Routines
    505  1.1  mrg 
    506  1.1  mrg 2.15 `omp_set_dynamic' - Enable/disable dynamic teams
    507  1.1  mrg =====================================================
    508  1.1  mrg 
    509  1.1  mrg _Description_:
    510  1.1  mrg      Enable or disable the dynamic adjustment of the number of threads
    511  1.1  mrg      within a team. The function takes the language-specific equivalent
    512  1.1  mrg      of `true' and `false', where `true' enables dynamic adjustment of
    513  1.1  mrg      team sizes and `false' disables it.
    514  1.1  mrg 
    515  1.1  mrg _C/C++_:
    516  1.1  mrg      _Prototype_:  `void omp_set_dynamic(int);'
    517  1.1  mrg 
    518  1.1  mrg _Fortran_:
    519  1.1  mrg      _Interface_:  `subroutine omp_set_dynamic(set)'
    520  1.1  mrg                    `integer, intent(in) :: set'
    521  1.1  mrg 
    522  1.1  mrg _See also_:
    523  1.1  mrg      *note OMP_DYNAMIC::, *note omp_get_dynamic::
    524  1.1  mrg 
    525  1.1  mrg _Reference_:
    526  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.7.
    527  1.1  mrg 
    528  1.1  mrg 
    529  1.1  mrg File: libgomp.info,  Node: omp_set_max_active_levels,  Next: omp_set_nested,  Prev: omp_set_dynamic,  Up: Runtime Library Routines
    530  1.1  mrg 
    531  1.1  mrg 2.16 `omp_set_max_active_levels' - Limits the number of active parallel regions
    532  1.1  mrg ===============================================================================
    533  1.1  mrg 
    534  1.1  mrg _Description_:
    535  1.1  mrg      This function limits the maximally allowed number of nested,
    536  1.1  mrg      active parallel regions.
    537  1.1  mrg 
    538  1.1  mrg _C/C++_
    539  1.1  mrg      _Prototype_:  `omp_set_max_active_levels(int max_levels);'
    540  1.1  mrg 
    541  1.1  mrg _Fortran_:
    542  1.1  mrg      _Interface_:  `omp_max_active_levels(max_levels)'
    543  1.1  mrg                    `integer max_levels'
    544  1.1  mrg 
    545  1.1  mrg _See also_:
    546  1.1  mrg      *note omp_get_max_active_levels::, *note omp_get_active_level::
    547  1.1  mrg 
    548  1.1  mrg _Reference_:
    549  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    550  1.1  mrg      3.2.14.
    551  1.1  mrg 
    552  1.1  mrg 
    553  1.1  mrg File: libgomp.info,  Node: omp_set_nested,  Next: omp_set_num_threads,  Prev: omp_set_max_active_levels,  Up: Runtime Library Routines
    554  1.1  mrg 
    555  1.1  mrg 2.17 `omp_set_nested' - Enable/disable nested parallel regions
    556  1.1  mrg ==============================================================
    557  1.1  mrg 
    558  1.1  mrg _Description_:
    559  1.1  mrg      Enable or disable nested parallel regions, i.e., whether team
    560  1.1  mrg      members are allowed to create new teams. The function takes the
    561  1.1  mrg      language-specific equivalent of `true' and `false', where `true'
    562  1.1  mrg      enables dynamic adjustment of team sizes and `false' disables it.
    563  1.1  mrg 
    564  1.1  mrg _C/C++_:
    565  1.1  mrg      _Prototype_:  `void omp_set_dynamic(int);'
    566  1.1  mrg 
    567  1.1  mrg _Fortran_:
    568  1.1  mrg      _Interface_:  `subroutine omp_set_dynamic(set)'
    569  1.1  mrg                    `integer, intent(in) :: set'
    570  1.1  mrg 
    571  1.1  mrg _See also_:
    572  1.1  mrg      *note OMP_NESTED::, *note omp_get_nested::
    573  1.1  mrg 
    574  1.1  mrg _Reference_:
    575  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.9.
    576  1.1  mrg 
    577  1.1  mrg 
    578  1.1  mrg File: libgomp.info,  Node: omp_set_num_threads,  Next: omp_set_schedule,  Prev: omp_set_nested,  Up: Runtime Library Routines
    579  1.1  mrg 
    580  1.1  mrg 2.18 `omp_set_num_threads' - Set upper team size limit
    581  1.1  mrg ======================================================
    582  1.1  mrg 
    583  1.1  mrg _Description_:
    584  1.1  mrg      Specifies the number of threads used by default in subsequent
    585  1.1  mrg      parallel sections, if those do not specify a `num_threads' clause.
    586  1.1  mrg      The argument of `omp_set_num_threads' shall be a positive integer.
    587  1.1  mrg 
    588  1.1  mrg _C/C++_:
    589  1.1  mrg      _Prototype_:  `void omp_set_num_threads(int);'
    590  1.1  mrg 
    591  1.1  mrg _Fortran_:
    592  1.1  mrg      _Interface_:  `subroutine omp_set_num_threads(set)'
    593  1.1  mrg                    `integer, intent(in) :: set'
    594  1.1  mrg 
    595  1.1  mrg _See also_:
    596  1.1  mrg      *note OMP_NUM_THREADS::, *note omp_get_num_threads::, *note
    597  1.1  mrg      omp_get_max_threads::
    598  1.1  mrg 
    599  1.1  mrg _Reference_:
    600  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.2.1.
    601  1.1  mrg 
    602  1.1  mrg 
    603  1.1  mrg File: libgomp.info,  Node: omp_set_schedule,  Next: omp_init_lock,  Prev: omp_set_num_threads,  Up: Runtime Library Routines
    604  1.1  mrg 
    605  1.1  mrg 2.19 `omp_set_schedule' - Set the runtime scheduling method
    606  1.1  mrg ===========================================================
    607  1.1  mrg 
    608  1.1  mrg _Description_:
    609  1.1  mrg      Sets the runtime scheduling method. The KIND argument can have the
    610  1.1  mrg      value `omp_sched_static', `omp_sched_dynamic', `opm_sched_guided'
    611  1.1  mrg      or `omp_sched_auto'. Except for `omp_sched_auto', the chunk size
    612  1.1  mrg      is set to the value of MODIFIER if positive or to the default
    613  1.1  mrg      value if zero or negative.  For `omp_sched_auto' the MODIFIER
    614  1.1  mrg      argument is ignored.
    615  1.1  mrg 
    616  1.1  mrg _C/C++_
    617  1.1  mrg      _Prototype_:  `int omp_schedule(omp_sched_t * kind, int *modifier);'
    618  1.1  mrg 
    619  1.1  mrg _Fortran_:
    620  1.1  mrg      _Interface_:  `subroutine omp_schedule(kind, modifier)'
    621  1.1  mrg                    `integer(kind=omp_sched_kind) kind'
    622  1.1  mrg                    `integer modifier'
    623  1.1  mrg 
    624  1.1  mrg _See also_:
    625  1.1  mrg      *note omp_get_schedule:: *note OMP_SCHEDULE::
    626  1.1  mrg 
    627  1.1  mrg _Reference_:
    628  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section
    629  1.1  mrg      3.2.11.
    630  1.1  mrg 
    631  1.1  mrg 
    632  1.1  mrg File: libgomp.info,  Node: omp_init_lock,  Next: omp_set_lock,  Prev: omp_set_schedule,  Up: Runtime Library Routines
    633  1.1  mrg 
    634  1.1  mrg 2.20 `omp_init_lock' - Initialize simple lock
    635  1.1  mrg =============================================
    636  1.1  mrg 
    637  1.1  mrg _Description_:
    638  1.1  mrg      Initialize a simple lock. After initialization, the lock is in an
    639  1.1  mrg      unlocked state.
    640  1.1  mrg 
    641  1.1  mrg _C/C++_:
    642  1.1  mrg      _Prototype_:  `void omp_init_lock(omp_lock_t *lock);'
    643  1.1  mrg 
    644  1.1  mrg _Fortran_:
    645  1.1  mrg      _Interface_:  `subroutine omp_init_lock(lock)'
    646  1.1  mrg                    `integer(omp_lock_kind), intent(out) :: lock'
    647  1.1  mrg 
    648  1.1  mrg _See also_:
    649  1.1  mrg      *note omp_destroy_lock::
    650  1.1  mrg 
    651  1.1  mrg _Reference_:
    652  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.1.
    653  1.1  mrg 
    654  1.1  mrg 
    655  1.1  mrg File: libgomp.info,  Node: omp_set_lock,  Next: omp_test_lock,  Prev: omp_init_lock,  Up: Runtime Library Routines
    656  1.1  mrg 
    657  1.1  mrg 2.21 `omp_set_lock' - Wait for and set simple lock
    658  1.1  mrg ==================================================
    659  1.1  mrg 
    660  1.1  mrg _Description_:
    661  1.1  mrg      Before setting a simple lock, the lock variable must be
    662  1.1  mrg      initialized by `omp_init_lock'. The calling thread is blocked
    663  1.1  mrg      until the lock is available. If the lock is already held by the
    664  1.1  mrg      current thread, a deadlock occurs.
    665  1.1  mrg 
    666  1.1  mrg _C/C++_:
    667  1.1  mrg      _Prototype_:  `void omp_set_lock(omp_lock_t *lock);'
    668  1.1  mrg 
    669  1.1  mrg _Fortran_:
    670  1.1  mrg      _Interface_:  `subroutine omp_set_lock(lock)'
    671  1.1  mrg                    `integer(omp_lock_kind), intent(out) :: lock'
    672  1.1  mrg 
    673  1.1  mrg _See also_:
    674  1.1  mrg      *note omp_init_lock::, *note omp_test_lock::, *note
    675  1.1  mrg      omp_unset_lock::
    676  1.1  mrg 
    677  1.1  mrg _Reference_:
    678  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.3.
    679  1.1  mrg 
    680  1.1  mrg 
    681  1.1  mrg File: libgomp.info,  Node: omp_test_lock,  Next: omp_unset_lock,  Prev: omp_set_lock,  Up: Runtime Library Routines
    682  1.1  mrg 
    683  1.1  mrg 2.22 `omp_test_lock' - Test and set simple lock if available
    684  1.1  mrg ============================================================
    685  1.1  mrg 
    686  1.1  mrg _Description_:
    687  1.1  mrg      Before setting a simple lock, the lock variable must be
    688  1.1  mrg      initialized by `omp_init_lock'. Contrary to `omp_set_lock',
    689  1.1  mrg      `omp_test_lock' does not block if the lock is not available. This
    690  1.1  mrg      function returns `true' upon success, `false' otherwise. Here,
    691  1.1  mrg      `true' and `false' represent their language-specific counterparts.
    692  1.1  mrg 
    693  1.1  mrg _C/C++_:
    694  1.1  mrg      _Prototype_:  `int omp_test_lock(omp_lock_t *lock);'
    695  1.1  mrg 
    696  1.1  mrg _Fortran_:
    697  1.1  mrg      _Interface_:  `subroutine omp_test_lock(lock)'
    698  1.1  mrg                    `logical(omp_logical_kind) :: omp_test_lock'
    699  1.1  mrg                    `integer(omp_lock_kind), intent(out) :: lock'
    700  1.1  mrg 
    701  1.1  mrg _See also_:
    702  1.1  mrg      *note omp_init_lock::, *note omp_set_lock::, *note omp_set_lock::
    703  1.1  mrg 
    704  1.1  mrg _Reference_:
    705  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.5.
    706  1.1  mrg 
    707  1.1  mrg 
    708  1.1  mrg File: libgomp.info,  Node: omp_unset_lock,  Next: omp_destroy_lock,  Prev: omp_test_lock,  Up: Runtime Library Routines
    709  1.1  mrg 
    710  1.1  mrg 2.23 `omp_unset_lock' - Unset simple lock
    711  1.1  mrg =========================================
    712  1.1  mrg 
    713  1.1  mrg _Description_:
    714  1.1  mrg      A simple lock about to be unset must have been locked by
    715  1.1  mrg      `omp_set_lock' or `omp_test_lock' before. In addition, the lock
    716  1.1  mrg      must be held by the thread calling `omp_unset_lock'. Then, the
    717  1.1  mrg      lock becomes unlocked. If one ore more threads attempted to set
    718  1.1  mrg      the lock before, one of them is chosen to, again, set the lock for
    719  1.1  mrg      itself.
    720  1.1  mrg 
    721  1.1  mrg _C/C++_:
    722  1.1  mrg      _Prototype_:  `void omp_unset_lock(omp_lock_t *lock);'
    723  1.1  mrg 
    724  1.1  mrg _Fortran_:
    725  1.1  mrg      _Interface_:  `subroutine omp_unset_lock(lock)'
    726  1.1  mrg                    `integer(omp_lock_kind), intent(out) :: lock'
    727  1.1  mrg 
    728  1.1  mrg _See also_:
    729  1.1  mrg      *note omp_set_lock::, *note omp_test_lock::
    730  1.1  mrg 
    731  1.1  mrg _Reference_:
    732  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.4.
    733  1.1  mrg 
    734  1.1  mrg 
    735  1.1  mrg File: libgomp.info,  Node: omp_destroy_lock,  Next: omp_init_nest_lock,  Prev: omp_unset_lock,  Up: Runtime Library Routines
    736  1.1  mrg 
    737  1.1  mrg 2.24 `omp_destroy_lock' - Destroy simple lock
    738  1.1  mrg =============================================
    739  1.1  mrg 
    740  1.1  mrg _Description_:
    741  1.1  mrg      Destroy a simple lock. In order to be destroyed, a simple lock
    742  1.1  mrg      must be in the unlocked state.
    743  1.1  mrg 
    744  1.1  mrg _C/C++_:
    745  1.1  mrg      _Prototype_:  `void omp_destroy_lock(omp_lock_t *);'
    746  1.1  mrg 
    747  1.1  mrg _Fortran_:
    748  1.1  mrg      _Interface_:  `subroutine omp_destroy_lock(lock)'
    749  1.1  mrg                    `integer(omp_lock_kind), intent(inout) :: lock'
    750  1.1  mrg 
    751  1.1  mrg _See also_:
    752  1.1  mrg      *note omp_init_lock::
    753  1.1  mrg 
    754  1.1  mrg _Reference_:
    755  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.2.
    756  1.1  mrg 
    757  1.1  mrg 
    758  1.1  mrg File: libgomp.info,  Node: omp_init_nest_lock,  Next: omp_set_nest_lock,  Prev: omp_destroy_lock,  Up: Runtime Library Routines
    759  1.1  mrg 
    760  1.1  mrg 2.25 `omp_init_nest_lock' - Initialize nested lock
    761  1.1  mrg ==================================================
    762  1.1  mrg 
    763  1.1  mrg _Description_:
    764  1.1  mrg      Initialize a nested lock. After initialization, the lock is in an
    765  1.1  mrg      unlocked state and the nesting count is set to zero.
    766  1.1  mrg 
    767  1.1  mrg _C/C++_:
    768  1.1  mrg      _Prototype_:  `void omp_init_nest_lock(omp_nest_lock_t *lock);'
    769  1.1  mrg 
    770  1.1  mrg _Fortran_:
    771  1.1  mrg      _Interface_:  `subroutine omp_init_nest_lock(lock)'
    772  1.1  mrg                    `integer(omp_nest_lock_kind), intent(out) :: lock'
    773  1.1  mrg 
    774  1.1  mrg _See also_:
    775  1.1  mrg      *note omp_destroy_nest_lock::
    776  1.1  mrg 
    777  1.1  mrg _Reference_:
    778  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.1.
    779  1.1  mrg 
    780  1.1  mrg 
    781  1.1  mrg File: libgomp.info,  Node: omp_set_nest_lock,  Next: omp_test_nest_lock,  Prev: omp_init_nest_lock,  Up: Runtime Library Routines
    782  1.1  mrg 
    783  1.1  mrg 2.26 `omp_set_nest_lock' - Wait for and set simple lock
    784  1.1  mrg =======================================================
    785  1.1  mrg 
    786  1.1  mrg _Description_:
    787  1.1  mrg      Before setting a nested lock, the lock variable must be
    788  1.1  mrg      initialized by `omp_init_nest_lock'. The calling thread is blocked
    789  1.1  mrg      until the lock is available. If the lock is already held by the
    790  1.1  mrg      current thread, the nesting count for the lock in incremented.
    791  1.1  mrg 
    792  1.1  mrg _C/C++_:
    793  1.1  mrg      _Prototype_:  `void omp_set_nest_lock(omp_nest_lock_t *lock);'
    794  1.1  mrg 
    795  1.1  mrg _Fortran_:
    796  1.1  mrg      _Interface_:  `subroutine omp_set_nest_lock(lock)'
    797  1.1  mrg                    `integer(omp_nest_lock_kind), intent(out) :: lock'
    798  1.1  mrg 
    799  1.1  mrg _See also_:
    800  1.1  mrg      *note omp_init_nest_lock::, *note omp_unset_nest_lock::
    801  1.1  mrg 
    802  1.1  mrg _Reference_:
    803  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.3.
    804  1.1  mrg 
    805  1.1  mrg 
    806  1.1  mrg File: libgomp.info,  Node: omp_test_nest_lock,  Next: omp_unset_nest_lock,  Prev: omp_set_nest_lock,  Up: Runtime Library Routines
    807  1.1  mrg 
    808  1.1  mrg 2.27 `omp_test_nest_lock' - Test and set nested lock if available
    809  1.1  mrg =================================================================
    810  1.1  mrg 
    811  1.1  mrg _Description_:
    812  1.1  mrg      Before setting a nested lock, the lock variable must be
    813  1.1  mrg      initialized by `omp_init_nest_lock'. Contrary to
    814  1.1  mrg      `omp_set_nest_lock', `omp_test_nest_lock' does not block if the
    815  1.1  mrg      lock is not available.  If the lock is already held by the current
    816  1.1  mrg      thread, the new nesting count is returned. Otherwise, the return
    817  1.1  mrg      value equals zero.
    818  1.1  mrg 
    819  1.1  mrg _C/C++_:
    820  1.1  mrg      _Prototype_:  `int omp_test_nest_lock(omp_nest_lock_t *lock);'
    821  1.1  mrg 
    822  1.1  mrg _Fortran_:
    823  1.1  mrg      _Interface_:  `integer function omp_test_nest_lock(lock)'
    824  1.1  mrg                    `integer(omp_integer_kind) :: omp_test_nest_lock'
    825  1.1  mrg                    `integer(omp_nest_lock_kind), intent(inout) :: lock'
    826  1.1  mrg 
    827  1.1  mrg _See also_:
    828  1.1  mrg      *note omp_init_lock::, *note omp_set_lock::, *note omp_set_lock::
    829  1.1  mrg 
    830  1.1  mrg _Reference_:
    831  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.5.
    832  1.1  mrg 
    833  1.1  mrg 
    834  1.1  mrg File: libgomp.info,  Node: omp_unset_nest_lock,  Next: omp_destroy_nest_lock,  Prev: omp_test_nest_lock,  Up: Runtime Library Routines
    835  1.1  mrg 
    836  1.1  mrg 2.28 `omp_unset_nest_lock' - Unset nested lock
    837  1.1  mrg ==============================================
    838  1.1  mrg 
    839  1.1  mrg _Description_:
    840  1.1  mrg      A nested lock about to be unset must have been locked by
    841  1.1  mrg      `omp_set_nested_lock' or `omp_test_nested_lock' before. In
    842  1.1  mrg      addition, the lock must be held by the thread calling
    843  1.1  mrg      `omp_unset_nested_lock'. If the nesting count drops to zero, the
    844  1.1  mrg      lock becomes unlocked. If one ore more threads attempted to set
    845  1.1  mrg      the lock before, one of them is chosen to, again, set the lock for
    846  1.1  mrg      itself.
    847  1.1  mrg 
    848  1.1  mrg _C/C++_:
    849  1.1  mrg      _Prototype_:  `void omp_unset_nest_lock(omp_nest_lock_t *lock);'
    850  1.1  mrg 
    851  1.1  mrg _Fortran_:
    852  1.1  mrg      _Interface_:  `subroutine omp_unset_nest_lock(lock)'
    853  1.1  mrg                    `integer(omp_nest_lock_kind), intent(out) :: lock'
    854  1.1  mrg 
    855  1.1  mrg _See also_:
    856  1.1  mrg      *note omp_set_nest_lock::
    857  1.1  mrg 
    858  1.1  mrg _Reference_:
    859  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.4.
    860  1.1  mrg 
    861  1.1  mrg 
    862  1.1  mrg File: libgomp.info,  Node: omp_destroy_nest_lock,  Next: omp_get_wtick,  Prev: omp_unset_nest_lock,  Up: Runtime Library Routines
    863  1.1  mrg 
    864  1.1  mrg 2.29 `omp_destroy_nest_lock' - Destroy nested lock
    865  1.1  mrg ==================================================
    866  1.1  mrg 
    867  1.1  mrg _Description_:
    868  1.1  mrg      Destroy a nested lock. In order to be destroyed, a nested lock
    869  1.1  mrg      must be in the unlocked state and its nesting count must equal
    870  1.1  mrg      zero.
    871  1.1  mrg 
    872  1.1  mrg _C/C++_:
    873  1.1  mrg      _Prototype_:  `void omp_destroy_nest_lock(omp_nest_lock_t *);'
    874  1.1  mrg 
    875  1.1  mrg _Fortran_:
    876  1.1  mrg      _Interface_:  `subroutine omp_destroy_nest_lock(lock)'
    877  1.1  mrg                    `integer(omp_nest_lock_kind), intent(inout) :: lock'
    878  1.1  mrg 
    879  1.1  mrg _See also_:
    880  1.1  mrg      *note omp_init_lock::
    881  1.1  mrg 
    882  1.1  mrg _Reference_:
    883  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.3.2.
    884  1.1  mrg 
    885  1.1  mrg 
    886  1.1  mrg File: libgomp.info,  Node: omp_get_wtick,  Next: omp_get_wtime,  Prev: omp_destroy_nest_lock,  Up: Runtime Library Routines
    887  1.1  mrg 
    888  1.1  mrg 2.30 `omp_get_wtick' - Get timer precision
    889  1.1  mrg ==========================================
    890  1.1  mrg 
    891  1.1  mrg _Description_:
    892  1.1  mrg      Gets the timer precision, i.e., the number of seconds between two
    893  1.1  mrg      successive clock ticks.
    894  1.1  mrg 
    895  1.1  mrg _C/C++_:
    896  1.1  mrg      _Prototype_:  `double omp_get_wtick();'
    897  1.1  mrg 
    898  1.1  mrg _Fortran_:
    899  1.1  mrg      _Interface_:  `double precision function omp_get_wtick()'
    900  1.1  mrg 
    901  1.1  mrg _See also_:
    902  1.1  mrg      *note omp_get_wtime::
    903  1.1  mrg 
    904  1.1  mrg _Reference_:
    905  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.4.2.
    906  1.1  mrg 
    907  1.1  mrg 
    908  1.1  mrg File: libgomp.info,  Node: omp_get_wtime,  Prev: omp_get_wtick,  Up: Runtime Library Routines
    909  1.1  mrg 
    910  1.1  mrg 2.31 `omp_get_wtime' - Elapsed wall clock time
    911  1.1  mrg ==============================================
    912  1.1  mrg 
    913  1.1  mrg _Description_:
    914  1.1  mrg      Elapsed wall clock time in seconds. The time is measured per
    915  1.1  mrg      thread, no guarantee can bee made that two distinct threads
    916  1.1  mrg      measure the same time.  Time is measured from some "time in the
    917  1.1  mrg      past". On POSIX compliant systems the seconds since the Epoch
    918  1.1  mrg      (00:00:00 UTC, January 1, 1970) are returned.
    919  1.1  mrg 
    920  1.1  mrg _C/C++_:
    921  1.1  mrg      _Prototype_:  `double omp_get_wtime();'
    922  1.1  mrg 
    923  1.1  mrg _Fortran_:
    924  1.1  mrg      _Interface_:  `double precision function omp_get_wtime()'
    925  1.1  mrg 
    926  1.1  mrg _See also_:
    927  1.1  mrg      *note omp_get_wtick::
    928  1.1  mrg 
    929  1.1  mrg _Reference_:
    930  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 3.4.1.
    931  1.1  mrg 
    932  1.1  mrg 
    933  1.1  mrg File: libgomp.info,  Node: Environment Variables,  Next: The libgomp ABI,  Prev: Runtime Library Routines,  Up: Top
    934  1.1  mrg 
    935  1.1  mrg 3 Environment Variables
    936  1.1  mrg ***********************
    937  1.1  mrg 
    938  1.1  mrg The variables `OMP_DYNAMIC', `OMP_MAX_ACTIVE_LEVELS', `OMP_NESTED',
    939  1.1  mrg `OMP_NUM_THREADS', `OMP_SCHEDULE', `OMP_STACKSIZE',`OMP_THREAD_LIMIT'
    940  1.1  mrg and `OMP_WAIT_POLICY' are defined by section 4 of the OpenMP
    941  1.1  mrg specifications in version 3.0, while `GOMP_CPU_AFFINITY' and
    942  1.1  mrg `GOMP_STACKSIZE' are GNU extensions.
    943  1.1  mrg 
    944  1.1  mrg * Menu:
    945  1.1  mrg 
    946  1.1  mrg * OMP_DYNAMIC::           Dynamic adjustment of threads
    947  1.1  mrg * OMP_MAX_ACTIVE_LEVELS:: Set the maximal number of nested parallel regions
    948  1.1  mrg * OMP_NESTED::            Nested parallel regions
    949  1.1  mrg * OMP_NUM_THREADS::       Specifies the number of threads to use
    950  1.1  mrg * OMP_STACKSIZE::         Set default thread stack size
    951  1.1  mrg * OMP_SCHEDULE::          How threads are scheduled
    952  1.1  mrg * OMP_THREAD_LIMIT::      Set the maximal number of threads
    953  1.1  mrg * OMP_WAIT_POLICY::       How waiting threads are handled
    954  1.1  mrg * GOMP_CPU_AFFINITY::     Bind threads to specific CPUs
    955  1.1  mrg * GOMP_STACKSIZE::        Set default thread stack size
    956  1.1  mrg 
    957  1.1  mrg 
    958  1.1  mrg File: libgomp.info,  Node: OMP_DYNAMIC,  Next: OMP_MAX_ACTIVE_LEVELS,  Up: Environment Variables
    959  1.1  mrg 
    960  1.1  mrg 3.1 `OMP_DYNAMIC' - Dynamic adjustment of threads
    961  1.1  mrg =================================================
    962  1.1  mrg 
    963  1.1  mrg _Description_:
    964  1.1  mrg      Enable or disable the dynamic adjustment of the number of threads
    965  1.1  mrg      within a team. The value of this environment variable shall be
    966  1.1  mrg      `TRUE' or `FALSE'. If undefined, dynamic adjustment is disabled by
    967  1.1  mrg      default.
    968  1.1  mrg 
    969  1.1  mrg _See also_:
    970  1.1  mrg      *note omp_set_dynamic::
    971  1.1  mrg 
    972  1.1  mrg _Reference_:
    973  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 4.3
    974  1.1  mrg 
    975  1.1  mrg 
    976  1.1  mrg File: libgomp.info,  Node: OMP_MAX_ACTIVE_LEVELS,  Next: OMP_NESTED,  Prev: OMP_DYNAMIC,  Up: Environment Variables
    977  1.1  mrg 
    978  1.1  mrg 3.2 `OMP_MAX_ACTIVE_LEVELS' - Set the maximal number of nested parallel regions
    979  1.1  mrg ===============================================================================
    980  1.1  mrg 
    981  1.1  mrg _Description_:
    982  1.1  mrg      Specifies the initial value for the maximal number of nested
    983  1.1  mrg      parallel regions. The value of this variable shall be positive
    984  1.1  mrg      integer.  If undefined, the number of active levels is unlimited.
    985  1.1  mrg 
    986  1.1  mrg _See also_:
    987  1.1  mrg      *note omp_set_max_active_levels::
    988  1.1  mrg 
    989  1.1  mrg _Reference_:
    990  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 4.7
    991  1.1  mrg 
    992  1.1  mrg 
    993  1.1  mrg File: libgomp.info,  Node: OMP_NESTED,  Next: OMP_NUM_THREADS,  Prev: OMP_MAX_ACTIVE_LEVELS,  Up: Environment Variables
    994  1.1  mrg 
    995  1.1  mrg 3.3 `OMP_NESTED' - Nested parallel regions
    996  1.1  mrg ==========================================
    997  1.1  mrg 
    998  1.1  mrg _Description_:
    999  1.1  mrg      Enable or disable nested parallel regions, i.e., whether team
   1000  1.1  mrg      members are allowed to create new teams. The value of this
   1001  1.1  mrg      environment variable shall be `TRUE' or `FALSE'. If undefined,
   1002  1.1  mrg      nested parallel regions are disabled by default.
   1003  1.1  mrg 
   1004  1.1  mrg _See also_:
   1005  1.1  mrg      *note omp_set_nested::
   1006  1.1  mrg 
   1007  1.1  mrg _Reference_:
   1008  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 4.4
   1009  1.1  mrg 
   1010  1.1  mrg 
   1011  1.1  mrg File: libgomp.info,  Node: OMP_NUM_THREADS,  Next: OMP_STACKSIZE,  Prev: OMP_NESTED,  Up: Environment Variables
   1012  1.1  mrg 
   1013  1.1  mrg 3.4 `OMP_NUM_THREADS' - Specifies the number of threads to use
   1014  1.1  mrg ==============================================================
   1015  1.1  mrg 
   1016  1.1  mrg _Description_:
   1017  1.1  mrg      Specifies the default number of threads to use in parallel
   1018  1.1  mrg      regions. The value of this variable shall be positive integer. If
   1019  1.1  mrg      undefined one thread per CPU online is used.
   1020  1.1  mrg 
   1021  1.1  mrg _See also_:
   1022  1.1  mrg      *note omp_set_num_threads::
   1023  1.1  mrg 
   1024  1.1  mrg _Reference_:
   1025  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 4.2
   1026  1.1  mrg 
   1027  1.1  mrg 
   1028  1.1  mrg File: libgomp.info,  Node: OMP_SCHEDULE,  Next: OMP_THREAD_LIMIT,  Prev: OMP_STACKSIZE,  Up: Environment Variables
   1029  1.1  mrg 
   1030  1.1  mrg 3.5 `OMP_SCHEDULE' - How threads are scheduled
   1031  1.1  mrg ==============================================
   1032  1.1  mrg 
   1033  1.1  mrg _Description_:
   1034  1.1  mrg      Allows to specify `schedule type' and `chunk size'.  The value of
   1035  1.1  mrg      the variable shall have the form: `type[,chunk]' where `type' is
   1036  1.1  mrg      one of `static', `dynamic', `guided' or `auto' The optional
   1037  1.1  mrg      `chunk' size shall be a positive integer. If undefined, dynamic
   1038  1.1  mrg      scheduling and a chunk size of 1 is used.
   1039  1.1  mrg 
   1040  1.1  mrg _See also_:
   1041  1.1  mrg      *note omp_set_schedule::
   1042  1.1  mrg 
   1043  1.1  mrg _Reference_:
   1044  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), sections
   1045  1.1  mrg      2.5.1 and 4.1
   1046  1.1  mrg 
   1047  1.1  mrg 
   1048  1.1  mrg File: libgomp.info,  Node: OMP_STACKSIZE,  Next: OMP_SCHEDULE,  Prev: OMP_NUM_THREADS,  Up: Environment Variables
   1049  1.1  mrg 
   1050  1.1  mrg 3.6 `OMP_STACKSIZE' - Set default thread stack size
   1051  1.1  mrg ===================================================
   1052  1.1  mrg 
   1053  1.1  mrg _Description_:
   1054  1.1  mrg      Set the default thread stack size in kilobytes, unless the number
   1055  1.1  mrg      is suffixed by `B', `K', `M' or `G', in which case the size is,
   1056  1.1  mrg      respectively, in bytes, kilobytes, megabytes or gigabytes. This is
   1057  1.1  mrg      different from `pthread_attr_setstacksize' which gets the number
   1058  1.1  mrg      of bytes as an argument. If the stacksize can not be set due to
   1059  1.1  mrg      system constraints, an error is reported and the initial stacksize
   1060  1.1  mrg      is left unchanged. If undefined, the stack size is system
   1061  1.1  mrg      dependent.
   1062  1.1  mrg 
   1063  1.1  mrg _Reference_:
   1064  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), sections 4.5
   1065  1.1  mrg 
   1066  1.1  mrg 
   1067  1.1  mrg File: libgomp.info,  Node: OMP_THREAD_LIMIT,  Next: OMP_WAIT_POLICY,  Prev: OMP_SCHEDULE,  Up: Environment Variables
   1068  1.1  mrg 
   1069  1.1  mrg 3.7 `OMP_THREAD_LIMIT' - Set the maximal number of threads
   1070  1.1  mrg ==========================================================
   1071  1.1  mrg 
   1072  1.1  mrg _Description_:
   1073  1.1  mrg      Specifies the number of threads to use for the whole program. The
   1074  1.1  mrg      value of this variable shall be positive integer. If undefined,
   1075  1.1  mrg      the number of threads is not limited.
   1076  1.1  mrg 
   1077  1.1  mrg _See also_:
   1078  1.1  mrg      *note OMP_NUM_THREADS:: *note omp_get_thread_limit::
   1079  1.1  mrg 
   1080  1.1  mrg _Reference_:
   1081  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), section 4.8
   1082  1.1  mrg 
   1083  1.1  mrg 
   1084  1.1  mrg File: libgomp.info,  Node: OMP_WAIT_POLICY,  Next: GOMP_CPU_AFFINITY,  Prev: OMP_THREAD_LIMIT,  Up: Environment Variables
   1085  1.1  mrg 
   1086  1.1  mrg 3.8 `OMP_WAIT_POLICY' - How waiting threads are handled
   1087  1.1  mrg =======================================================
   1088  1.1  mrg 
   1089  1.1  mrg _Description_:
   1090  1.1  mrg      Specifies whether waiting threads should be active or passive. If
   1091  1.1  mrg      the value is `PASSIVE', waiting threads should not consume CPU
   1092  1.1  mrg      power while waiting; while the value is `ACTIVE' specifies that
   1093  1.1  mrg      they should.
   1094  1.1  mrg 
   1095  1.1  mrg _Reference_:
   1096  1.1  mrg      OpenMP specifications v3.0 (http://www.openmp.org/), sections 4.6
   1097  1.1  mrg 
   1098  1.1  mrg 
   1099  1.1  mrg File: libgomp.info,  Node: GOMP_CPU_AFFINITY,  Next: GOMP_STACKSIZE,  Prev: OMP_WAIT_POLICY,  Up: Environment Variables
   1100  1.1  mrg 
   1101  1.1  mrg 3.9 `GOMP_CPU_AFFINITY' - Bind threads to specific CPUs
   1102  1.1  mrg =======================================================
   1103  1.1  mrg 
   1104  1.1  mrg _Description_:
   1105  1.1  mrg      Binds threads to specific CPUs. The variable should contain a
   1106  1.1  mrg      space- or comma-separated list of CPUs. This list may contain
   1107  1.1  mrg      different kind of entries: either single CPU numbers in any order,
   1108  1.1  mrg      a range of CPUs (M-N) or a range with some stride (M-N:S). CPU
   1109  1.1  mrg      numbers are zero based. For example, `GOMP_CPU_AFFINITY="0 3 1-2
   1110  1.1  mrg      4-15:2"' will bind the initial thread to CPU 0, the second to CPU
   1111  1.1  mrg      3, the third to CPU 1, the fourth to CPU 2, the fifth to CPU 4,
   1112  1.1  mrg      the sixth through tenth to CPUs 6, 8, 10, 12, and 14 respectively
   1113  1.1  mrg      and then start assigning back from the beginning of the list.
   1114  1.1  mrg      `GOMP_CPU_AFFINITY=0' binds all threads to CPU 0.
   1115  1.1  mrg 
   1116  1.1  mrg      There is no GNU OpenMP library routine to determine whether a CPU
   1117  1.1  mrg      affinity specification is in effect. As a workaround,
   1118  1.1  mrg      language-specific library functions, e.g., `getenv' in C or
   1119  1.1  mrg      `GET_ENVIRONMENT_VARIABLE' in Fortran, may be used to query the
   1120  1.1  mrg      setting of the `GOMP_CPU_AFFINITY' environment variable. A defined
   1121  1.1  mrg      CPU affinity on startup cannot be changed or disabled during the
   1122  1.1  mrg      runtime of the application.
   1123  1.1  mrg 
   1124  1.1  mrg      If this environment variable is omitted, the host system will
   1125  1.1  mrg      handle the assignment of threads to CPUs.
   1126  1.1  mrg 
   1127  1.1  mrg 
   1128  1.1  mrg File: libgomp.info,  Node: GOMP_STACKSIZE,  Prev: GOMP_CPU_AFFINITY,  Up: Environment Variables
   1129  1.1  mrg 
   1130  1.1  mrg 3.10 `GOMP_STACKSIZE' - Set default thread stack size
   1131  1.1  mrg =====================================================
   1132  1.1  mrg 
   1133  1.1  mrg _Description_:
   1134  1.1  mrg      Set the default thread stack size in kilobytes. This is different
   1135  1.1  mrg      from `pthread_attr_setstacksize' which gets the number of bytes as
   1136  1.1  mrg      an argument. If the stacksize can not be set due to system
   1137  1.1  mrg      constraints, an error is reported and the initial stacksize is
   1138  1.1  mrg      left unchanged. If undefined, the stack size is system dependent.
   1139  1.1  mrg 
   1140  1.1  mrg _See also_:
   1141  1.1  mrg      *note GOMP_STACKSIZE::
   1142  1.1  mrg 
   1143  1.1  mrg _Reference_:
   1144  1.1  mrg      GCC Patches Mailinglist
   1145  1.1  mrg      (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00493.html), GCC
   1146  1.1  mrg      Patches Mailinglist
   1147  1.1  mrg      (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00496.html)
   1148  1.1  mrg 
   1149  1.1  mrg 
   1150  1.1  mrg File: libgomp.info,  Node: The libgomp ABI,  Next: Reporting Bugs,  Prev: Environment Variables,  Up: Top
   1151  1.1  mrg 
   1152  1.1  mrg 4 The libgomp ABI
   1153  1.1  mrg *****************
   1154  1.1  mrg 
   1155  1.1  mrg The following sections present notes on the external ABI as presented
   1156  1.1  mrg by libgomp. Only maintainers should need them.
   1157  1.1  mrg 
   1158  1.1  mrg * Menu:
   1159  1.1  mrg 
   1160  1.1  mrg * Implementing MASTER construct::
   1161  1.1  mrg * Implementing CRITICAL construct::
   1162  1.1  mrg * Implementing ATOMIC construct::
   1163  1.1  mrg * Implementing FLUSH construct::
   1164  1.1  mrg * Implementing BARRIER construct::
   1165  1.1  mrg * Implementing THREADPRIVATE construct::
   1166  1.1  mrg * Implementing PRIVATE clause::
   1167  1.1  mrg * Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses::
   1168  1.1  mrg * Implementing REDUCTION clause::
   1169  1.1  mrg * Implementing PARALLEL construct::
   1170  1.1  mrg * Implementing FOR construct::
   1171  1.1  mrg * Implementing ORDERED construct::
   1172  1.1  mrg * Implementing SECTIONS construct::
   1173  1.1  mrg * Implementing SINGLE construct::
   1174  1.1  mrg 
   1175  1.1  mrg 
   1176  1.1  mrg File: libgomp.info,  Node: Implementing MASTER construct,  Next: Implementing CRITICAL construct,  Up: The libgomp ABI
   1177  1.1  mrg 
   1178  1.1  mrg 4.1 Implementing MASTER construct
   1179  1.1  mrg =================================
   1180  1.1  mrg 
   1181  1.1  mrg      if (omp_get_thread_num () == 0)
   1182  1.1  mrg        block
   1183  1.1  mrg 
   1184  1.1  mrg    Alternately, we generate two copies of the parallel subfunction and
   1185  1.1  mrg only include this in the version run by the master thread.  Surely
   1186  1.1  mrg that's not worthwhile though...
   1187  1.1  mrg 
   1188  1.1  mrg 
   1189  1.1  mrg File: libgomp.info,  Node: Implementing CRITICAL construct,  Next: Implementing ATOMIC construct,  Prev: Implementing MASTER construct,  Up: The libgomp ABI
   1190  1.1  mrg 
   1191  1.1  mrg 4.2 Implementing CRITICAL construct
   1192  1.1  mrg ===================================
   1193  1.1  mrg 
   1194  1.1  mrg Without a specified name,
   1195  1.1  mrg 
   1196  1.1  mrg        void GOMP_critical_start (void);
   1197  1.1  mrg        void GOMP_critical_end (void);
   1198  1.1  mrg 
   1199  1.1  mrg    so that we don't get COPY relocations from libgomp to the main
   1200  1.1  mrg application.
   1201  1.1  mrg 
   1202  1.1  mrg    With a specified name, use omp_set_lock and omp_unset_lock with name
   1203  1.1  mrg being transformed into a variable declared like
   1204  1.1  mrg 
   1205  1.1  mrg        omp_lock_t gomp_critical_user_<name> __attribute__((common))
   1206  1.1  mrg 
   1207  1.1  mrg    Ideally the ABI would specify that all zero is a valid unlocked
   1208  1.1  mrg state, and so we wouldn't actually need to initialize this at startup.
   1209  1.1  mrg 
   1210  1.1  mrg 
   1211  1.1  mrg File: libgomp.info,  Node: Implementing ATOMIC construct,  Next: Implementing FLUSH construct,  Prev: Implementing CRITICAL construct,  Up: The libgomp ABI
   1212  1.1  mrg 
   1213  1.1  mrg 4.3 Implementing ATOMIC construct
   1214  1.1  mrg =================================
   1215  1.1  mrg 
   1216  1.1  mrg The target should implement the `__sync' builtins.
   1217  1.1  mrg 
   1218  1.1  mrg    Failing that we could add
   1219  1.1  mrg 
   1220  1.1  mrg        void GOMP_atomic_enter (void)
   1221  1.1  mrg        void GOMP_atomic_exit (void)
   1222  1.1  mrg 
   1223  1.1  mrg    which reuses the regular lock code, but with yet another lock object
   1224  1.1  mrg private to the library.
   1225  1.1  mrg 
   1226  1.1  mrg 
   1227  1.1  mrg File: libgomp.info,  Node: Implementing FLUSH construct,  Next: Implementing BARRIER construct,  Prev: Implementing ATOMIC construct,  Up: The libgomp ABI
   1228  1.1  mrg 
   1229  1.1  mrg 4.4 Implementing FLUSH construct
   1230  1.1  mrg ================================
   1231  1.1  mrg 
   1232  1.1  mrg Expands to the `__sync_synchronize' builtin.
   1233  1.1  mrg 
   1234  1.1  mrg 
   1235  1.1  mrg File: libgomp.info,  Node: Implementing BARRIER construct,  Next: Implementing THREADPRIVATE construct,  Prev: Implementing FLUSH construct,  Up: The libgomp ABI
   1236  1.1  mrg 
   1237  1.1  mrg 4.5 Implementing BARRIER construct
   1238  1.1  mrg ==================================
   1239  1.1  mrg 
   1240  1.1  mrg        void GOMP_barrier (void)
   1241  1.1  mrg 
   1242  1.1  mrg 
   1243  1.1  mrg File: libgomp.info,  Node: Implementing THREADPRIVATE construct,  Next: Implementing PRIVATE clause,  Prev: Implementing BARRIER construct,  Up: The libgomp ABI
   1244  1.1  mrg 
   1245  1.1  mrg 4.6 Implementing THREADPRIVATE construct
   1246  1.1  mrg ========================================
   1247  1.1  mrg 
   1248  1.1  mrg In _most_ cases we can map this directly to `__thread'.  Except that
   1249  1.1  mrg OMP allows constructors for C++ objects.  We can either refuse to
   1250  1.1  mrg support this (how often is it used?) or we can implement something akin
   1251  1.1  mrg to .ctors.
   1252  1.1  mrg 
   1253  1.1  mrg    Even more ideally, this ctor feature is handled by extensions to the
   1254  1.1  mrg main pthreads library.  Failing that, we can have a set of entry points
   1255  1.1  mrg to register ctor functions to be called.
   1256  1.1  mrg 
   1257  1.1  mrg 
   1258  1.1  mrg File: libgomp.info,  Node: Implementing PRIVATE clause,  Next: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Prev: Implementing THREADPRIVATE construct,  Up: The libgomp ABI
   1259  1.1  mrg 
   1260  1.1  mrg 4.7 Implementing PRIVATE clause
   1261  1.1  mrg ===============================
   1262  1.1  mrg 
   1263  1.1  mrg In association with a PARALLEL, or within the lexical extent of a
   1264  1.1  mrg PARALLEL block, the variable becomes a local variable in the parallel
   1265  1.1  mrg subfunction.
   1266  1.1  mrg 
   1267  1.1  mrg    In association with FOR or SECTIONS blocks, create a new automatic
   1268  1.1  mrg variable within the current function.  This preserves the semantic of
   1269  1.1  mrg new variable creation.
   1270  1.1  mrg 
   1271  1.1  mrg 
   1272  1.1  mrg File: libgomp.info,  Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Next: Implementing REDUCTION clause,  Prev: Implementing PRIVATE clause,  Up: The libgomp ABI
   1273  1.1  mrg 
   1274  1.1  mrg 4.8 Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses
   1275  1.1  mrg ========================================================================
   1276  1.1  mrg 
   1277  1.1  mrg Seems simple enough for PARALLEL blocks.  Create a private struct for
   1278  1.1  mrg communicating between parent and subfunction.  In the parent, copy in
   1279  1.1  mrg values for scalar and "small" structs; copy in addresses for others
   1280  1.1  mrg TREE_ADDRESSABLE types.  In the subfunction, copy the value into the
   1281  1.1  mrg local variable.
   1282  1.1  mrg 
   1283  1.1  mrg    Not clear at all what to do with bare FOR or SECTION blocks.  The
   1284  1.1  mrg only thing I can figure is that we do something like
   1285  1.1  mrg 
   1286  1.1  mrg      #pragma omp for firstprivate(x) lastprivate(y)
   1287  1.1  mrg      for (int i = 0; i < n; ++i)
   1288  1.1  mrg        body;
   1289  1.1  mrg 
   1290  1.1  mrg    which becomes
   1291  1.1  mrg 
   1292  1.1  mrg      {
   1293  1.1  mrg        int x = x, y;
   1294  1.1  mrg 
   1295  1.1  mrg        // for stuff
   1296  1.1  mrg 
   1297  1.1  mrg        if (i == n)
   1298  1.1  mrg          y = y;
   1299  1.1  mrg      }
   1300  1.1  mrg 
   1301  1.1  mrg    where the "x=x" and "y=y" assignments actually have different uids
   1302  1.1  mrg for the two variables, i.e. not something you could write directly in
   1303  1.1  mrg C.  Presumably this only makes sense if the "outer" x and y are global
   1304  1.1  mrg variables.
   1305  1.1  mrg 
   1306  1.1  mrg    COPYPRIVATE would work the same way, except the structure broadcast
   1307  1.1  mrg would have to happen via SINGLE machinery instead.
   1308  1.1  mrg 
   1309  1.1  mrg 
   1310  1.1  mrg File: libgomp.info,  Node: Implementing REDUCTION clause,  Next: Implementing PARALLEL construct,  Prev: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Up: The libgomp ABI
   1311  1.1  mrg 
   1312  1.1  mrg 4.9 Implementing REDUCTION clause
   1313  1.1  mrg =================================
   1314  1.1  mrg 
   1315  1.1  mrg The private struct mentioned in the previous section should have a
   1316  1.1  mrg pointer to an array of the type of the variable, indexed by the
   1317  1.1  mrg thread's TEAM_ID.  The thread stores its final value into the array,
   1318  1.1  mrg and after the barrier the master thread iterates over the array to
   1319  1.1  mrg collect the values.
   1320  1.1  mrg 
   1321  1.1  mrg 
   1322  1.1  mrg File: libgomp.info,  Node: Implementing PARALLEL construct,  Next: Implementing FOR construct,  Prev: Implementing REDUCTION clause,  Up: The libgomp ABI
   1323  1.1  mrg 
   1324  1.1  mrg 4.10 Implementing PARALLEL construct
   1325  1.1  mrg ====================================
   1326  1.1  mrg 
   1327  1.1  mrg        #pragma omp parallel
   1328  1.1  mrg        {
   1329  1.1  mrg          body;
   1330  1.1  mrg        }
   1331  1.1  mrg 
   1332  1.1  mrg    becomes
   1333  1.1  mrg 
   1334  1.1  mrg        void subfunction (void *data)
   1335  1.1  mrg        {
   1336  1.1  mrg          use data;
   1337  1.1  mrg          body;
   1338  1.1  mrg        }
   1339  1.1  mrg 
   1340  1.1  mrg        setup data;
   1341  1.1  mrg        GOMP_parallel_start (subfunction, &data, num_threads);
   1342  1.1  mrg        subfunction (&data);
   1343  1.1  mrg        GOMP_parallel_end ();
   1344  1.1  mrg 
   1345  1.1  mrg        void GOMP_parallel_start (void (*fn)(void *), void *data, unsigned num_threads)
   1346  1.1  mrg 
   1347  1.1  mrg    The FN argument is the subfunction to be run in parallel.
   1348  1.1  mrg 
   1349  1.1  mrg    The DATA argument is a pointer to a structure used to communicate
   1350  1.1  mrg data in and out of the subfunction, as discussed above with respect to
   1351  1.1  mrg FIRSTPRIVATE et al.
   1352  1.1  mrg 
   1353  1.1  mrg    The NUM_THREADS argument is 1 if an IF clause is present and false,
   1354  1.1  mrg or the value of the NUM_THREADS clause, if present, or 0.
   1355  1.1  mrg 
   1356  1.1  mrg    The function needs to create the appropriate number of threads
   1357  1.1  mrg and/or launch them from the dock.  It needs to create the team
   1358  1.1  mrg structure and assign team ids.
   1359  1.1  mrg 
   1360  1.1  mrg        void GOMP_parallel_end (void)
   1361  1.1  mrg 
   1362  1.1  mrg    Tears down the team and returns us to the previous
   1363  1.1  mrg `omp_in_parallel()' state.
   1364  1.1  mrg 
   1365  1.1  mrg 
   1366  1.1  mrg File: libgomp.info,  Node: Implementing FOR construct,  Next: Implementing ORDERED construct,  Prev: Implementing PARALLEL construct,  Up: The libgomp ABI
   1367  1.1  mrg 
   1368  1.1  mrg 4.11 Implementing FOR construct
   1369  1.1  mrg ===============================
   1370  1.1  mrg 
   1371  1.1  mrg        #pragma omp parallel for
   1372  1.1  mrg        for (i = lb; i <= ub; i++)
   1373  1.1  mrg          body;
   1374  1.1  mrg 
   1375  1.1  mrg    becomes
   1376  1.1  mrg 
   1377  1.1  mrg        void subfunction (void *data)
   1378  1.1  mrg        {
   1379  1.1  mrg          long _s0, _e0;
   1380  1.1  mrg          while (GOMP_loop_static_next (&_s0, &_e0))
   1381  1.1  mrg          {
   1382  1.1  mrg            long _e1 = _e0, i;
   1383  1.1  mrg            for (i = _s0; i < _e1; i++)
   1384  1.1  mrg              body;
   1385  1.1  mrg          }
   1386  1.1  mrg          GOMP_loop_end_nowait ();
   1387  1.1  mrg        }
   1388  1.1  mrg 
   1389  1.1  mrg        GOMP_parallel_loop_static (subfunction, NULL, 0, lb, ub+1, 1, 0);
   1390  1.1  mrg        subfunction (NULL);
   1391  1.1  mrg        GOMP_parallel_end ();
   1392  1.1  mrg 
   1393  1.1  mrg        #pragma omp for schedule(runtime)
   1394  1.1  mrg        for (i = 0; i < n; i++)
   1395  1.1  mrg          body;
   1396  1.1  mrg 
   1397  1.1  mrg    becomes
   1398  1.1  mrg 
   1399  1.1  mrg        {
   1400  1.1  mrg          long i, _s0, _e0;
   1401  1.1  mrg          if (GOMP_loop_runtime_start (0, n, 1, &_s0, &_e0))
   1402  1.1  mrg            do {
   1403  1.1  mrg              long _e1 = _e0;
   1404  1.1  mrg              for (i = _s0, i < _e0; i++)
   1405  1.1  mrg                body;
   1406  1.1  mrg            } while (GOMP_loop_runtime_next (&_s0, _&e0));
   1407  1.1  mrg          GOMP_loop_end ();
   1408  1.1  mrg        }
   1409  1.1  mrg 
   1410  1.1  mrg    Note that while it looks like there is trickyness to propagating a
   1411  1.1  mrg non-constant STEP, there isn't really.  We're explicitly allowed to
   1412  1.1  mrg evaluate it as many times as we want, and any variables involved should
   1413  1.1  mrg automatically be handled as PRIVATE or SHARED like any other variables.
   1414  1.1  mrg So the expression should remain evaluable in the subfunction.  We can
   1415  1.1  mrg also pull it into a local variable if we like, but since its supposed
   1416  1.1  mrg to remain unchanged, we can also not if we like.
   1417  1.1  mrg 
   1418  1.1  mrg    If we have SCHEDULE(STATIC), and no ORDERED, then we ought to be
   1419  1.1  mrg able to get away with no work-sharing context at all, since we can
   1420  1.1  mrg simply perform the arithmetic directly in each thread to divide up the
   1421  1.1  mrg iterations.  Which would mean that we wouldn't need to call any of
   1422  1.1  mrg these routines.
   1423  1.1  mrg 
   1424  1.1  mrg    There are separate routines for handling loops with an ORDERED
   1425  1.1  mrg clause.  Bookkeeping for that is non-trivial...
   1426  1.1  mrg 
   1427  1.1  mrg 
   1428  1.1  mrg File: libgomp.info,  Node: Implementing ORDERED construct,  Next: Implementing SECTIONS construct,  Prev: Implementing FOR construct,  Up: The libgomp ABI
   1429  1.1  mrg 
   1430  1.1  mrg 4.12 Implementing ORDERED construct
   1431  1.1  mrg ===================================
   1432  1.1  mrg 
   1433  1.1  mrg        void GOMP_ordered_start (void)
   1434  1.1  mrg        void GOMP_ordered_end (void)
   1435  1.1  mrg 
   1436  1.1  mrg 
   1437  1.1  mrg File: libgomp.info,  Node: Implementing SECTIONS construct,  Next: Implementing SINGLE construct,  Prev: Implementing ORDERED construct,  Up: The libgomp ABI
   1438  1.1  mrg 
   1439  1.1  mrg 4.13 Implementing SECTIONS construct
   1440  1.1  mrg ====================================
   1441  1.1  mrg 
   1442  1.1  mrg A block as
   1443  1.1  mrg 
   1444  1.1  mrg        #pragma omp sections
   1445  1.1  mrg        {
   1446  1.1  mrg          #pragma omp section
   1447  1.1  mrg          stmt1;
   1448  1.1  mrg          #pragma omp section
   1449  1.1  mrg          stmt2;
   1450  1.1  mrg          #pragma omp section
   1451  1.1  mrg          stmt3;
   1452  1.1  mrg        }
   1453  1.1  mrg 
   1454  1.1  mrg    becomes
   1455  1.1  mrg 
   1456  1.1  mrg        for (i = GOMP_sections_start (3); i != 0; i = GOMP_sections_next ())
   1457  1.1  mrg          switch (i)
   1458  1.1  mrg            {
   1459  1.1  mrg            case 1:
   1460  1.1  mrg              stmt1;
   1461  1.1  mrg              break;
   1462  1.1  mrg            case 2:
   1463  1.1  mrg              stmt2;
   1464  1.1  mrg              break;
   1465  1.1  mrg            case 3:
   1466  1.1  mrg              stmt3;
   1467  1.1  mrg              break;
   1468  1.1  mrg            }
   1469  1.1  mrg        GOMP_barrier ();
   1470  1.1  mrg 
   1471  1.1  mrg 
   1472  1.1  mrg File: libgomp.info,  Node: Implementing SINGLE construct,  Prev: Implementing SECTIONS construct,  Up: The libgomp ABI
   1473  1.1  mrg 
   1474  1.1  mrg 4.14 Implementing SINGLE construct
   1475  1.1  mrg ==================================
   1476  1.1  mrg 
   1477  1.1  mrg A block like
   1478  1.1  mrg 
   1479  1.1  mrg        #pragma omp single
   1480  1.1  mrg        {
   1481  1.1  mrg          body;
   1482  1.1  mrg        }
   1483  1.1  mrg 
   1484  1.1  mrg    becomes
   1485  1.1  mrg 
   1486  1.1  mrg        if (GOMP_single_start ())
   1487  1.1  mrg          body;
   1488  1.1  mrg        GOMP_barrier ();
   1489  1.1  mrg 
   1490  1.1  mrg    while
   1491  1.1  mrg 
   1492  1.1  mrg        #pragma omp single copyprivate(x)
   1493  1.1  mrg          body;
   1494  1.1  mrg 
   1495  1.1  mrg    becomes
   1496  1.1  mrg 
   1497  1.1  mrg        datap = GOMP_single_copy_start ();
   1498  1.1  mrg        if (datap == NULL)
   1499  1.1  mrg          {
   1500  1.1  mrg            body;
   1501  1.1  mrg            data.x = x;
   1502  1.1  mrg            GOMP_single_copy_end (&data);
   1503  1.1  mrg          }
   1504  1.1  mrg        else
   1505  1.1  mrg          x = datap->x;
   1506  1.1  mrg        GOMP_barrier ();
   1507  1.1  mrg 
   1508  1.1  mrg 
   1509  1.1  mrg File: libgomp.info,  Node: Reporting Bugs,  Next: Copying,  Prev: The libgomp ABI,  Up: Top
   1510  1.1  mrg 
   1511  1.1  mrg 5 Reporting Bugs
   1512  1.1  mrg ****************
   1513  1.1  mrg 
   1514  1.1  mrg Bugs in the GNU OpenMP implementation should be reported via bugzilla
   1515  1.1  mrg (http://gcc.gnu.org/bugzilla/). In all cases, please add "openmp" to
   1516  1.1  mrg the keywords field in the bug report.
   1517  1.1  mrg 
   1518  1.1  mrg 
   1519  1.1  mrg File: libgomp.info,  Node: Copying,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
   1520  1.1  mrg 
   1521  1.1  mrg GNU GENERAL PUBLIC LICENSE
   1522  1.1  mrg **************************
   1523  1.1  mrg 
   1524  1.1  mrg                          Version 2, June 1991
   1525  1.1  mrg 
   1526  1.1  mrg      Copyright (C) 1989, 1991 Free Software Foundation, Inc.
   1527  1.1  mrg      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
   1528  1.1  mrg 
   1529  1.1  mrg      Everyone is permitted to copy and distribute verbatim copies
   1530  1.1  mrg      of this license document, but changing it is not allowed.
   1531  1.1  mrg 
   1532  1.1  mrg Preamble
   1533  1.1  mrg ========
   1534  1.1  mrg 
   1535  1.1  mrg The licenses for most software are designed to take away your freedom
   1536  1.1  mrg to share and change it.  By contrast, the GNU General Public License is
   1537  1.1  mrg intended to guarantee your freedom to share and change free
   1538  1.1  mrg software--to make sure the software is free for all its users.  This
   1539  1.1  mrg General Public License applies to most of the Free Software
   1540  1.1  mrg Foundation's software and to any other program whose authors commit to
   1541  1.1  mrg using it.  (Some other Free Software Foundation software is covered by
   1542  1.1  mrg the GNU Library General Public License instead.)  You can apply it to
   1543  1.1  mrg your programs, too.
   1544  1.1  mrg 
   1545  1.1  mrg    When we speak of free software, we are referring to freedom, not
   1546  1.1  mrg price.  Our General Public Licenses are designed to make sure that you
   1547  1.1  mrg have the freedom to distribute copies of free software (and charge for
   1548  1.1  mrg this service if you wish), that you receive source code or can get it
   1549  1.1  mrg if you want it, that you can change the software or use pieces of it in
   1550  1.1  mrg new free programs; and that you know you can do these things.
   1551  1.1  mrg 
   1552  1.1  mrg    To protect your rights, we need to make restrictions that forbid
   1553  1.1  mrg anyone to deny you these rights or to ask you to surrender the rights.
   1554  1.1  mrg These restrictions translate to certain responsibilities for you if you
   1555  1.1  mrg distribute copies of the software, or if you modify it.
   1556  1.1  mrg 
   1557  1.1  mrg    For example, if you distribute copies of such a program, whether
   1558  1.1  mrg gratis or for a fee, you must give the recipients all the rights that
   1559  1.1  mrg you have.  You must make sure that they, too, receive or can get the
   1560  1.1  mrg source code.  And you must show them these terms so they know their
   1561  1.1  mrg rights.
   1562  1.1  mrg 
   1563  1.1  mrg    We protect your rights with two steps: (1) copyright the software,
   1564  1.1  mrg and (2) offer you this license which gives you legal permission to copy,
   1565  1.1  mrg distribute and/or modify the software.
   1566  1.1  mrg 
   1567  1.1  mrg    Also, for each author's protection and ours, we want to make certain
   1568  1.1  mrg that everyone understands that there is no warranty for this free
   1569  1.1  mrg software.  If the software is modified by someone else and passed on, we
   1570  1.1  mrg want its recipients to know that what they have is not the original, so
   1571  1.1  mrg that any problems introduced by others will not reflect on the original
   1572  1.1  mrg authors' reputations.
   1573  1.1  mrg 
   1574  1.1  mrg    Finally, any free program is threatened constantly by software
   1575  1.1  mrg patents.  We wish to avoid the danger that redistributors of a free
   1576  1.1  mrg program will individually obtain patent licenses, in effect making the
   1577  1.1  mrg program proprietary.  To prevent this, we have made it clear that any
   1578  1.1  mrg patent must be licensed for everyone's free use or not licensed at all.
   1579  1.1  mrg 
   1580  1.1  mrg    The precise terms and conditions for copying, distribution and
   1581  1.1  mrg modification follow.
   1582  1.1  mrg 
   1583  1.1  mrg     TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
   1584  1.1  mrg   0. This License applies to any program or other work which contains a
   1585  1.1  mrg      notice placed by the copyright holder saying it may be distributed
   1586  1.1  mrg      under the terms of this General Public License.  The "Program",
   1587  1.1  mrg      below, refers to any such program or work, and a "work based on
   1588  1.1  mrg      the Program" means either the Program or any derivative work under
   1589  1.1  mrg      copyright law: that is to say, a work containing the Program or a
   1590  1.1  mrg      portion of it, either verbatim or with modifications and/or
   1591  1.1  mrg      translated into another language.  (Hereinafter, translation is
   1592  1.1  mrg      included without limitation in the term "modification".)  Each
   1593  1.1  mrg      licensee is addressed as "you".
   1594  1.1  mrg 
   1595  1.1  mrg      Activities other than copying, distribution and modification are
   1596  1.1  mrg      not covered by this License; they are outside its scope.  The act
   1597  1.1  mrg      of running the Program is not restricted, and the output from the
   1598  1.1  mrg      Program is covered only if its contents constitute a work based on
   1599  1.1  mrg      the Program (independent of having been made by running the
   1600  1.1  mrg      Program).  Whether that is true depends on what the Program does.
   1601  1.1  mrg 
   1602  1.1  mrg   1. You may copy and distribute verbatim copies of the Program's
   1603  1.1  mrg      source code as you receive it, in any medium, provided that you
   1604  1.1  mrg      conspicuously and appropriately publish on each copy an appropriate
   1605  1.1  mrg      copyright notice and disclaimer of warranty; keep intact all the
   1606  1.1  mrg      notices that refer to this License and to the absence of any
   1607  1.1  mrg      warranty; and give any other recipients of the Program a copy of
   1608  1.1  mrg      this License along with the Program.
   1609  1.1  mrg 
   1610  1.1  mrg      You may charge a fee for the physical act of transferring a copy,
   1611  1.1  mrg      and you may at your option offer warranty protection in exchange
   1612  1.1  mrg      for a fee.
   1613  1.1  mrg 
   1614  1.1  mrg   2. You may modify your copy or copies of the Program or any portion
   1615  1.1  mrg      of it, thus forming a work based on the Program, and copy and
   1616  1.1  mrg      distribute such modifications or work under the terms of Section 1
   1617  1.1  mrg      above, provided that you also meet all of these conditions:
   1618  1.1  mrg 
   1619  1.1  mrg        a. You must cause the modified files to carry prominent notices
   1620  1.1  mrg           stating that you changed the files and the date of any change.
   1621  1.1  mrg 
   1622  1.1  mrg        b. You must cause any work that you distribute or publish, that
   1623  1.1  mrg           in whole or in part contains or is derived from the Program
   1624  1.1  mrg           or any part thereof, to be licensed as a whole at no charge
   1625  1.1  mrg           to all third parties under the terms of this License.
   1626  1.1  mrg 
   1627  1.1  mrg        c. If the modified program normally reads commands interactively
   1628  1.1  mrg           when run, you must cause it, when started running for such
   1629  1.1  mrg           interactive use in the most ordinary way, to print or display
   1630  1.1  mrg           an announcement including an appropriate copyright notice and
   1631  1.1  mrg           a notice that there is no warranty (or else, saying that you
   1632  1.1  mrg           provide a warranty) and that users may redistribute the
   1633  1.1  mrg           program under these conditions, and telling the user how to
   1634  1.1  mrg           view a copy of this License.  (Exception: if the Program
   1635  1.1  mrg           itself is interactive but does not normally print such an
   1636  1.1  mrg           announcement, your work based on the Program is not required
   1637  1.1  mrg           to print an announcement.)
   1638  1.1  mrg 
   1639  1.1  mrg      These requirements apply to the modified work as a whole.  If
   1640  1.1  mrg      identifiable sections of that work are not derived from the
   1641  1.1  mrg      Program, and can be reasonably considered independent and separate
   1642  1.1  mrg      works in themselves, then this License, and its terms, do not
   1643  1.1  mrg      apply to those sections when you distribute them as separate
   1644  1.1  mrg      works.  But when you distribute the same sections as part of a
   1645  1.1  mrg      whole which is a work based on the Program, the distribution of
   1646  1.1  mrg      the whole must be on the terms of this License, whose permissions
   1647  1.1  mrg      for other licensees extend to the entire whole, and thus to each
   1648  1.1  mrg      and every part regardless of who wrote it.
   1649  1.1  mrg 
   1650  1.1  mrg      Thus, it is not the intent of this section to claim rights or
   1651  1.1  mrg      contest your rights to work written entirely by you; rather, the
   1652  1.1  mrg      intent is to exercise the right to control the distribution of
   1653  1.1  mrg      derivative or collective works based on the Program.
   1654  1.1  mrg 
   1655  1.1  mrg      In addition, mere aggregation of another work not based on the
   1656  1.1  mrg      Program with the Program (or with a work based on the Program) on
   1657  1.1  mrg      a volume of a storage or distribution medium does not bring the
   1658  1.1  mrg      other work under the scope of this License.
   1659  1.1  mrg 
   1660  1.1  mrg   3. You may copy and distribute the Program (or a work based on it,
   1661  1.1  mrg      under Section 2) in object code or executable form under the terms
   1662  1.1  mrg      of Sections 1 and 2 above provided that you also do one of the
   1663  1.1  mrg      following:
   1664  1.1  mrg 
   1665  1.1  mrg        a. Accompany it with the complete corresponding machine-readable
   1666  1.1  mrg           source code, which must be distributed under the terms of
   1667  1.1  mrg           Sections 1 and 2 above on a medium customarily used for
   1668  1.1  mrg           software interchange; or,
   1669  1.1  mrg 
   1670  1.1  mrg        b. Accompany it with a written offer, valid for at least three
   1671  1.1  mrg           years, to give any third party, for a charge no more than your
   1672  1.1  mrg           cost of physically performing source distribution, a complete
   1673  1.1  mrg           machine-readable copy of the corresponding source code, to be
   1674  1.1  mrg           distributed under the terms of Sections 1 and 2 above on a
   1675  1.1  mrg           medium customarily used for software interchange; or,
   1676  1.1  mrg 
   1677  1.1  mrg        c. Accompany it with the information you received as to the offer
   1678  1.1  mrg           to distribute corresponding source code.  (This alternative is
   1679  1.1  mrg           allowed only for noncommercial distribution and only if you
   1680  1.1  mrg           received the program in object code or executable form with
   1681  1.1  mrg           such an offer, in accord with Subsection b above.)
   1682  1.1  mrg 
   1683  1.1  mrg      The source code for a work means the preferred form of the work for
   1684  1.1  mrg      making modifications to it.  For an executable work, complete
   1685  1.1  mrg      source code means all the source code for all modules it contains,
   1686  1.1  mrg      plus any associated interface definition files, plus the scripts
   1687  1.1  mrg      used to control compilation and installation of the executable.
   1688  1.1  mrg      However, as a special exception, the source code distributed need
   1689  1.1  mrg      not include anything that is normally distributed (in either
   1690  1.1  mrg      source or binary form) with the major components (compiler,
   1691  1.1  mrg      kernel, and so on) of the operating system on which the executable
   1692  1.1  mrg      runs, unless that component itself accompanies the executable.
   1693  1.1  mrg 
   1694  1.1  mrg      If distribution of executable or object code is made by offering
   1695  1.1  mrg      access to copy from a designated place, then offering equivalent
   1696  1.1  mrg      access to copy the source code from the same place counts as
   1697  1.1  mrg      distribution of the source code, even though third parties are not
   1698  1.1  mrg      compelled to copy the source along with the object code.
   1699  1.1  mrg 
   1700  1.1  mrg   4. You may not copy, modify, sublicense, or distribute the Program
   1701  1.1  mrg      except as expressly provided under this License.  Any attempt
   1702  1.1  mrg      otherwise to copy, modify, sublicense or distribute the Program is
   1703  1.1  mrg      void, and will automatically terminate your rights under this
   1704  1.1  mrg      License.  However, parties who have received copies, or rights,
   1705  1.1  mrg      from you under this License will not have their licenses
   1706  1.1  mrg      terminated so long as such parties remain in full compliance.
   1707  1.1  mrg 
   1708  1.1  mrg   5. You are not required to accept this License, since you have not
   1709  1.1  mrg      signed it.  However, nothing else grants you permission to modify
   1710  1.1  mrg      or distribute the Program or its derivative works.  These actions
   1711  1.1  mrg      are prohibited by law if you do not accept this License.
   1712  1.1  mrg      Therefore, by modifying or distributing the Program (or any work
   1713  1.1  mrg      based on the Program), you indicate your acceptance of this
   1714  1.1  mrg      License to do so, and all its terms and conditions for copying,
   1715  1.1  mrg      distributing or modifying the Program or works based on it.
   1716  1.1  mrg 
   1717  1.1  mrg   6. Each time you redistribute the Program (or any work based on the
   1718  1.1  mrg      Program), the recipient automatically receives a license from the
   1719  1.1  mrg      original licensor to copy, distribute or modify the Program
   1720  1.1  mrg      subject to these terms and conditions.  You may not impose any
   1721  1.1  mrg      further restrictions on the recipients' exercise of the rights
   1722  1.1  mrg      granted herein.  You are not responsible for enforcing compliance
   1723  1.1  mrg      by third parties to this License.
   1724  1.1  mrg 
   1725  1.1  mrg   7. If, as a consequence of a court judgment or allegation of patent
   1726  1.1  mrg      infringement or for any other reason (not limited to patent
   1727  1.1  mrg      issues), conditions are imposed on you (whether by court order,
   1728  1.1  mrg      agreement or otherwise) that contradict the conditions of this
   1729  1.1  mrg      License, they do not excuse you from the conditions of this
   1730  1.1  mrg      License.  If you cannot distribute so as to satisfy simultaneously
   1731  1.1  mrg      your obligations under this License and any other pertinent
   1732  1.1  mrg      obligations, then as a consequence you may not distribute the
   1733  1.1  mrg      Program at all.  For example, if a patent license would not permit
   1734  1.1  mrg      royalty-free redistribution of the Program by all those who
   1735  1.1  mrg      receive copies directly or indirectly through you, then the only
   1736  1.1  mrg      way you could satisfy both it and this License would be to refrain
   1737  1.1  mrg      entirely from distribution of the Program.
   1738  1.1  mrg 
   1739  1.1  mrg      If any portion of this section is held invalid or unenforceable
   1740  1.1  mrg      under any particular circumstance, the balance of the section is
   1741  1.1  mrg      intended to apply and the section as a whole is intended to apply
   1742  1.1  mrg      in other circumstances.
   1743  1.1  mrg 
   1744  1.1  mrg      It is not the purpose of this section to induce you to infringe any
   1745  1.1  mrg      patents or other property right claims or to contest validity of
   1746  1.1  mrg      any such claims; this section has the sole purpose of protecting
   1747  1.1  mrg      the integrity of the free software distribution system, which is
   1748  1.1  mrg      implemented by public license practices.  Many people have made
   1749  1.1  mrg      generous contributions to the wide range of software distributed
   1750  1.1  mrg      through that system in reliance on consistent application of that
   1751  1.1  mrg      system; it is up to the author/donor to decide if he or she is
   1752  1.1  mrg      willing to distribute software through any other system and a
   1753  1.1  mrg      licensee cannot impose that choice.
   1754  1.1  mrg 
   1755  1.1  mrg      This section is intended to make thoroughly clear what is believed
   1756  1.1  mrg      to be a consequence of the rest of this License.
   1757  1.1  mrg 
   1758  1.1  mrg   8. If the distribution and/or use of the Program is restricted in
   1759  1.1  mrg      certain countries either by patents or by copyrighted interfaces,
   1760  1.1  mrg      the original copyright holder who places the Program under this
   1761  1.1  mrg      License may add an explicit geographical distribution limitation
   1762  1.1  mrg      excluding those countries, so that distribution is permitted only
   1763  1.1  mrg      in or among countries not thus excluded.  In such case, this
   1764  1.1  mrg      License incorporates the limitation as if written in the body of
   1765  1.1  mrg      this License.
   1766  1.1  mrg 
   1767  1.1  mrg   9. The Free Software Foundation may publish revised and/or new
   1768  1.1  mrg      versions of the General Public License from time to time.  Such
   1769  1.1  mrg      new versions will be similar in spirit to the present version, but
   1770  1.1  mrg      may differ in detail to address new problems or concerns.
   1771  1.1  mrg 
   1772  1.1  mrg      Each version is given a distinguishing version number.  If the
   1773  1.1  mrg      Program specifies a version number of this License which applies
   1774  1.1  mrg      to it and "any later version", you have the option of following
   1775  1.1  mrg      the terms and conditions either of that version or of any later
   1776  1.1  mrg      version published by the Free Software Foundation.  If the Program
   1777  1.1  mrg      does not specify a version number of this License, you may choose
   1778  1.1  mrg      any version ever published by the Free Software Foundation.
   1779  1.1  mrg 
   1780  1.1  mrg  10. If you wish to incorporate parts of the Program into other free
   1781  1.1  mrg      programs whose distribution conditions are different, write to the
   1782  1.1  mrg      author to ask for permission.  For software which is copyrighted
   1783  1.1  mrg      by the Free Software Foundation, write to the Free Software
   1784  1.1  mrg      Foundation; we sometimes make exceptions for this.  Our decision
   1785  1.1  mrg      will be guided by the two goals of preserving the free status of
   1786  1.1  mrg      all derivatives of our free software and of promoting the sharing
   1787  1.1  mrg      and reuse of software generally.
   1788  1.1  mrg 
   1789  1.1  mrg                                 NO WARRANTY
   1790  1.1  mrg  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
   1791  1.1  mrg      WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
   1792  1.1  mrg      LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
   1793  1.1  mrg      HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
   1794  1.1  mrg      WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
   1795  1.1  mrg      NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   1796  1.1  mrg      FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
   1797  1.1  mrg      QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
   1798  1.1  mrg      PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
   1799  1.1  mrg      SERVICING, REPAIR OR CORRECTION.
   1800  1.1  mrg 
   1801  1.1  mrg  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
   1802  1.1  mrg      WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
   1803  1.1  mrg      MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
   1804  1.1  mrg      LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
   1805  1.1  mrg      INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
   1806  1.1  mrg      INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
   1807  1.1  mrg      DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
   1808  1.1  mrg      OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
   1809  1.1  mrg      OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
   1810  1.1  mrg      ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
   1811  1.1  mrg 
   1812  1.1  mrg                       END OF TERMS AND CONDITIONS
   1813  1.1  mrg Appendix: How to Apply These Terms to Your New Programs
   1814  1.1  mrg =======================================================
   1815  1.1  mrg 
   1816  1.1  mrg If you develop a new program, and you want it to be of the greatest
   1817  1.1  mrg possible use to the public, the best way to achieve this is to make it
   1818  1.1  mrg free software which everyone can redistribute and change under these
   1819  1.1  mrg terms.
   1820  1.1  mrg 
   1821  1.1  mrg    To do so, attach the following notices to the program.  It is safest
   1822  1.1  mrg to attach them to the start of each source file to most effectively
   1823  1.1  mrg convey the exclusion of warranty; and each file should have at least
   1824  1.1  mrg the "copyright" line and a pointer to where the full notice is found.
   1825  1.1  mrg 
   1826  1.1  mrg      ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
   1827  1.1  mrg      Copyright (C) YEAR  NAME OF AUTHOR
   1828  1.1  mrg 
   1829  1.1  mrg      This program is free software; you can redistribute it and/or modify
   1830  1.1  mrg      it under the terms of the GNU General Public License as published by
   1831  1.1  mrg      the Free Software Foundation; either version 2 of the License, or
   1832  1.1  mrg      (at your option) any later version.
   1833  1.1  mrg 
   1834  1.1  mrg      This program is distributed in the hope that it will be useful,
   1835  1.1  mrg      but WITHOUT ANY WARRANTY; without even the implied warranty of
   1836  1.1  mrg      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   1837  1.1  mrg      GNU General Public License for more details.
   1838  1.1  mrg 
   1839  1.1  mrg      You should have received a copy of the GNU General Public License
   1840  1.1  mrg      along with this program; if not, write to the Free Software
   1841  1.1  mrg      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
   1842  1.1  mrg 
   1843  1.1  mrg    Also add information on how to contact you by electronic and paper
   1844  1.1  mrg mail.
   1845  1.1  mrg 
   1846  1.1  mrg    If the program is interactive, make it output a short notice like
   1847  1.1  mrg this when it starts in an interactive mode:
   1848  1.1  mrg 
   1849  1.1  mrg      Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
   1850  1.1  mrg      Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
   1851  1.1  mrg      type `show w'.
   1852  1.1  mrg      This is free software, and you are welcome to redistribute it
   1853  1.1  mrg      under certain conditions; type `show c' for details.
   1854  1.1  mrg 
   1855  1.1  mrg    The hypothetical commands `show w' and `show c' should show the
   1856  1.1  mrg appropriate parts of the General Public License.  Of course, the
   1857  1.1  mrg commands you use may be called something other than `show w' and `show
   1858  1.1  mrg c'; they could even be mouse-clicks or menu items--whatever suits your
   1859  1.1  mrg program.
   1860  1.1  mrg 
   1861  1.1  mrg    You should also get your employer (if you work as a programmer) or
   1862  1.1  mrg your school, if any, to sign a "copyright disclaimer" for the program,
   1863  1.1  mrg if necessary.  Here is a sample; alter the names:
   1864  1.1  mrg 
   1865  1.1  mrg      Yoyodyne, Inc., hereby disclaims all copyright interest in the program
   1866  1.1  mrg      `Gnomovision' (which makes passes at compilers) written by James Hacker.
   1867  1.1  mrg 
   1868  1.1  mrg      SIGNATURE OF TY COON, 1 April 1989
   1869  1.1  mrg      Ty Coon, President of Vice
   1870  1.1  mrg 
   1871  1.1  mrg    This General Public License does not permit incorporating your
   1872  1.1  mrg program into proprietary programs.  If your program is a subroutine
   1873  1.1  mrg library, you may consider it more useful to permit linking proprietary
   1874  1.1  mrg applications with the library.  If this is what you want to do, use the
   1875  1.1  mrg GNU Library General Public License instead of this License.
   1876  1.1  mrg 
   1877  1.1  mrg 
   1878  1.1  mrg File: libgomp.info,  Node: GNU Free Documentation License,  Next: Funding,  Prev: Copying,  Up: Top
   1879  1.1  mrg 
   1880  1.1  mrg GNU Free Documentation License
   1881  1.1  mrg ******************************
   1882  1.1  mrg 
   1883  1.1  mrg                       Version 1.2, November 2002
   1884  1.1  mrg 
   1885  1.1  mrg      Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
   1886  1.1  mrg      51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
   1887  1.1  mrg 
   1888  1.1  mrg      Everyone is permitted to copy and distribute verbatim copies
   1889  1.1  mrg      of this license document, but changing it is not allowed.
   1890  1.1  mrg 
   1891  1.1  mrg   0. PREAMBLE
   1892  1.1  mrg 
   1893  1.1  mrg      The purpose of this License is to make a manual, textbook, or other
   1894  1.1  mrg      functional and useful document "free" in the sense of freedom: to
   1895  1.1  mrg      assure everyone the effective freedom to copy and redistribute it,
   1896  1.1  mrg      with or without modifying it, either commercially or
   1897  1.1  mrg      noncommercially.  Secondarily, this License preserves for the
   1898  1.1  mrg      author and publisher a way to get credit for their work, while not
   1899  1.1  mrg      being considered responsible for modifications made by others.
   1900  1.1  mrg 
   1901  1.1  mrg      This License is a kind of "copyleft", which means that derivative
   1902  1.1  mrg      works of the document must themselves be free in the same sense.
   1903  1.1  mrg      It complements the GNU General Public License, which is a copyleft
   1904  1.1  mrg      license designed for free software.
   1905  1.1  mrg 
   1906  1.1  mrg      We have designed this License in order to use it for manuals for
   1907  1.1  mrg      free software, because free software needs free documentation: a
   1908  1.1  mrg      free program should come with manuals providing the same freedoms
   1909  1.1  mrg      that the software does.  But this License is not limited to
   1910  1.1  mrg      software manuals; it can be used for any textual work, regardless
   1911  1.1  mrg      of subject matter or whether it is published as a printed book.
   1912  1.1  mrg      We recommend this License principally for works whose purpose is
   1913  1.1  mrg      instruction or reference.
   1914  1.1  mrg 
   1915  1.1  mrg   1. APPLICABILITY AND DEFINITIONS
   1916  1.1  mrg 
   1917  1.1  mrg      This License applies to any manual or other work, in any medium,
   1918  1.1  mrg      that contains a notice placed by the copyright holder saying it
   1919  1.1  mrg      can be distributed under the terms of this License.  Such a notice
   1920  1.1  mrg      grants a world-wide, royalty-free license, unlimited in duration,
   1921  1.1  mrg      to use that work under the conditions stated herein.  The
   1922  1.1  mrg      "Document", below, refers to any such manual or work.  Any member
   1923  1.1  mrg      of the public is a licensee, and is addressed as "you".  You
   1924  1.1  mrg      accept the license if you copy, modify or distribute the work in a
   1925  1.1  mrg      way requiring permission under copyright law.
   1926  1.1  mrg 
   1927  1.1  mrg      A "Modified Version" of the Document means any work containing the
   1928  1.1  mrg      Document or a portion of it, either copied verbatim, or with
   1929  1.1  mrg      modifications and/or translated into another language.
   1930  1.1  mrg 
   1931  1.1  mrg      A "Secondary Section" is a named appendix or a front-matter section
   1932  1.1  mrg      of the Document that deals exclusively with the relationship of the
   1933  1.1  mrg      publishers or authors of the Document to the Document's overall
   1934  1.1  mrg      subject (or to related matters) and contains nothing that could
   1935  1.1  mrg      fall directly within that overall subject.  (Thus, if the Document
   1936  1.1  mrg      is in part a textbook of mathematics, a Secondary Section may not
   1937  1.1  mrg      explain any mathematics.)  The relationship could be a matter of
   1938  1.1  mrg      historical connection with the subject or with related matters, or
   1939  1.1  mrg      of legal, commercial, philosophical, ethical or political position
   1940  1.1  mrg      regarding them.
   1941  1.1  mrg 
   1942  1.1  mrg      The "Invariant Sections" are certain Secondary Sections whose
   1943  1.1  mrg      titles are designated, as being those of Invariant Sections, in
   1944  1.1  mrg      the notice that says that the Document is released under this
   1945  1.1  mrg      License.  If a section does not fit the above definition of
   1946  1.1  mrg      Secondary then it is not allowed to be designated as Invariant.
   1947  1.1  mrg      The Document may contain zero Invariant Sections.  If the Document
   1948  1.1  mrg      does not identify any Invariant Sections then there are none.
   1949  1.1  mrg 
   1950  1.1  mrg      The "Cover Texts" are certain short passages of text that are
   1951  1.1  mrg      listed, as Front-Cover Texts or Back-Cover Texts, in the notice
   1952  1.1  mrg      that says that the Document is released under this License.  A
   1953  1.1  mrg      Front-Cover Text may be at most 5 words, and a Back-Cover Text may
   1954  1.1  mrg      be at most 25 words.
   1955  1.1  mrg 
   1956  1.1  mrg      A "Transparent" copy of the Document means a machine-readable copy,
   1957  1.1  mrg      represented in a format whose specification is available to the
   1958  1.1  mrg      general public, that is suitable for revising the document
   1959  1.1  mrg      straightforwardly with generic text editors or (for images
   1960  1.1  mrg      composed of pixels) generic paint programs or (for drawings) some
   1961  1.1  mrg      widely available drawing editor, and that is suitable for input to
   1962  1.1  mrg      text formatters or for automatic translation to a variety of
   1963  1.1  mrg      formats suitable for input to text formatters.  A copy made in an
   1964  1.1  mrg      otherwise Transparent file format whose markup, or absence of
   1965  1.1  mrg      markup, has been arranged to thwart or discourage subsequent
   1966  1.1  mrg      modification by readers is not Transparent.  An image format is
   1967  1.1  mrg      not Transparent if used for any substantial amount of text.  A
   1968  1.1  mrg      copy that is not "Transparent" is called "Opaque".
   1969  1.1  mrg 
   1970  1.1  mrg      Examples of suitable formats for Transparent copies include plain
   1971  1.1  mrg      ASCII without markup, Texinfo input format, LaTeX input format,
   1972  1.1  mrg      SGML or XML using a publicly available DTD, and
   1973  1.1  mrg      standard-conforming simple HTML, PostScript or PDF designed for
   1974  1.1  mrg      human modification.  Examples of transparent image formats include
   1975  1.1  mrg      PNG, XCF and JPG.  Opaque formats include proprietary formats that
   1976  1.1  mrg      can be read and edited only by proprietary word processors, SGML or
   1977  1.1  mrg      XML for which the DTD and/or processing tools are not generally
   1978  1.1  mrg      available, and the machine-generated HTML, PostScript or PDF
   1979  1.1  mrg      produced by some word processors for output purposes only.
   1980  1.1  mrg 
   1981  1.1  mrg      The "Title Page" means, for a printed book, the title page itself,
   1982  1.1  mrg      plus such following pages as are needed to hold, legibly, the
   1983  1.1  mrg      material this License requires to appear in the title page.  For
   1984  1.1  mrg      works in formats which do not have any title page as such, "Title
   1985  1.1  mrg      Page" means the text near the most prominent appearance of the
   1986  1.1  mrg      work's title, preceding the beginning of the body of the text.
   1987  1.1  mrg 
   1988  1.1  mrg      A section "Entitled XYZ" means a named subunit of the Document
   1989  1.1  mrg      whose title either is precisely XYZ or contains XYZ in parentheses
   1990  1.1  mrg      following text that translates XYZ in another language.  (Here XYZ
   1991  1.1  mrg      stands for a specific section name mentioned below, such as
   1992  1.1  mrg      "Acknowledgements", "Dedications", "Endorsements", or "History".)
   1993  1.1  mrg      To "Preserve the Title" of such a section when you modify the
   1994  1.1  mrg      Document means that it remains a section "Entitled XYZ" according
   1995  1.1  mrg      to this definition.
   1996  1.1  mrg 
   1997  1.1  mrg      The Document may include Warranty Disclaimers next to the notice
   1998  1.1  mrg      which states that this License applies to the Document.  These
   1999  1.1  mrg      Warranty Disclaimers are considered to be included by reference in
   2000  1.1  mrg      this License, but only as regards disclaiming warranties: any other
   2001  1.1  mrg      implication that these Warranty Disclaimers may have is void and
   2002  1.1  mrg      has no effect on the meaning of this License.
   2003  1.1  mrg 
   2004  1.1  mrg   2. VERBATIM COPYING
   2005  1.1  mrg 
   2006  1.1  mrg      You may copy and distribute the Document in any medium, either
   2007  1.1  mrg      commercially or noncommercially, provided that this License, the
   2008  1.1  mrg      copyright notices, and the license notice saying this License
   2009  1.1  mrg      applies to the Document are reproduced in all copies, and that you
   2010  1.1  mrg      add no other conditions whatsoever to those of this License.  You
   2011  1.1  mrg      may not use technical measures to obstruct or control the reading
   2012  1.1  mrg      or further copying of the copies you make or distribute.  However,
   2013  1.1  mrg      you may accept compensation in exchange for copies.  If you
   2014  1.1  mrg      distribute a large enough number of copies you must also follow
   2015  1.1  mrg      the conditions in section 3.
   2016  1.1  mrg 
   2017  1.1  mrg      You may also lend copies, under the same conditions stated above,
   2018  1.1  mrg      and you may publicly display copies.
   2019  1.1  mrg 
   2020  1.1  mrg   3. COPYING IN QUANTITY
   2021  1.1  mrg 
   2022  1.1  mrg      If you publish printed copies (or copies in media that commonly
   2023  1.1  mrg      have printed covers) of the Document, numbering more than 100, and
   2024  1.1  mrg      the Document's license notice requires Cover Texts, you must
   2025  1.1  mrg      enclose the copies in covers that carry, clearly and legibly, all
   2026  1.1  mrg      these Cover Texts: Front-Cover Texts on the front cover, and
   2027  1.1  mrg      Back-Cover Texts on the back cover.  Both covers must also clearly
   2028  1.1  mrg      and legibly identify you as the publisher of these copies.  The
   2029  1.1  mrg      front cover must present the full title with all words of the
   2030  1.1  mrg      title equally prominent and visible.  You may add other material
   2031  1.1  mrg      on the covers in addition.  Copying with changes limited to the
   2032  1.1  mrg      covers, as long as they preserve the title of the Document and
   2033  1.1  mrg      satisfy these conditions, can be treated as verbatim copying in
   2034  1.1  mrg      other respects.
   2035  1.1  mrg 
   2036  1.1  mrg      If the required texts for either cover are too voluminous to fit
   2037  1.1  mrg      legibly, you should put the first ones listed (as many as fit
   2038  1.1  mrg      reasonably) on the actual cover, and continue the rest onto
   2039  1.1  mrg      adjacent pages.
   2040  1.1  mrg 
   2041  1.1  mrg      If you publish or distribute Opaque copies of the Document
   2042  1.1  mrg      numbering more than 100, you must either include a
   2043  1.1  mrg      machine-readable Transparent copy along with each Opaque copy, or
   2044  1.1  mrg      state in or with each Opaque copy a computer-network location from
   2045  1.1  mrg      which the general network-using public has access to download
   2046  1.1  mrg      using public-standard network protocols a complete Transparent
   2047  1.1  mrg      copy of the Document, free of added material.  If you use the
   2048  1.1  mrg      latter option, you must take reasonably prudent steps, when you
   2049  1.1  mrg      begin distribution of Opaque copies in quantity, to ensure that
   2050  1.1  mrg      this Transparent copy will remain thus accessible at the stated
   2051  1.1  mrg      location until at least one year after the last time you
   2052  1.1  mrg      distribute an Opaque copy (directly or through your agents or
   2053  1.1  mrg      retailers) of that edition to the public.
   2054  1.1  mrg 
   2055  1.1  mrg      It is requested, but not required, that you contact the authors of
   2056  1.1  mrg      the Document well before redistributing any large number of
   2057  1.1  mrg      copies, to give them a chance to provide you with an updated
   2058  1.1  mrg      version of the Document.
   2059  1.1  mrg 
   2060  1.1  mrg   4. MODIFICATIONS
   2061  1.1  mrg 
   2062  1.1  mrg      You may copy and distribute a Modified Version of the Document
   2063  1.1  mrg      under the conditions of sections 2 and 3 above, provided that you
   2064  1.1  mrg      release the Modified Version under precisely this License, with
   2065  1.1  mrg      the Modified Version filling the role of the Document, thus
   2066  1.1  mrg      licensing distribution and modification of the Modified Version to
   2067  1.1  mrg      whoever possesses a copy of it.  In addition, you must do these
   2068  1.1  mrg      things in the Modified Version:
   2069  1.1  mrg 
   2070  1.1  mrg        A. Use in the Title Page (and on the covers, if any) a title
   2071  1.1  mrg           distinct from that of the Document, and from those of
   2072  1.1  mrg           previous versions (which should, if there were any, be listed
   2073  1.1  mrg           in the History section of the Document).  You may use the
   2074  1.1  mrg           same title as a previous version if the original publisher of
   2075  1.1  mrg           that version gives permission.
   2076  1.1  mrg 
   2077  1.1  mrg        B. List on the Title Page, as authors, one or more persons or
   2078  1.1  mrg           entities responsible for authorship of the modifications in
   2079  1.1  mrg           the Modified Version, together with at least five of the
   2080  1.1  mrg           principal authors of the Document (all of its principal
   2081  1.1  mrg           authors, if it has fewer than five), unless they release you
   2082  1.1  mrg           from this requirement.
   2083  1.1  mrg 
   2084  1.1  mrg        C. State on the Title page the name of the publisher of the
   2085  1.1  mrg           Modified Version, as the publisher.
   2086  1.1  mrg 
   2087  1.1  mrg        D. Preserve all the copyright notices of the Document.
   2088  1.1  mrg 
   2089  1.1  mrg        E. Add an appropriate copyright notice for your modifications
   2090  1.1  mrg           adjacent to the other copyright notices.
   2091  1.1  mrg 
   2092  1.1  mrg        F. Include, immediately after the copyright notices, a license
   2093  1.1  mrg           notice giving the public permission to use the Modified
   2094  1.1  mrg           Version under the terms of this License, in the form shown in
   2095  1.1  mrg           the Addendum below.
   2096  1.1  mrg 
   2097  1.1  mrg        G. Preserve in that license notice the full lists of Invariant
   2098  1.1  mrg           Sections and required Cover Texts given in the Document's
   2099  1.1  mrg           license notice.
   2100  1.1  mrg 
   2101  1.1  mrg        H. Include an unaltered copy of this License.
   2102  1.1  mrg 
   2103  1.1  mrg        I. Preserve the section Entitled "History", Preserve its Title,
   2104  1.1  mrg           and add to it an item stating at least the title, year, new
   2105  1.1  mrg           authors, and publisher of the Modified Version as given on
   2106  1.1  mrg           the Title Page.  If there is no section Entitled "History" in
   2107  1.1  mrg           the Document, create one stating the title, year, authors,
   2108  1.1  mrg           and publisher of the Document as given on its Title Page,
   2109  1.1  mrg           then add an item describing the Modified Version as stated in
   2110  1.1  mrg           the previous sentence.
   2111  1.1  mrg 
   2112  1.1  mrg        J. Preserve the network location, if any, given in the Document
   2113  1.1  mrg           for public access to a Transparent copy of the Document, and
   2114  1.1  mrg           likewise the network locations given in the Document for
   2115  1.1  mrg           previous versions it was based on.  These may be placed in
   2116  1.1  mrg           the "History" section.  You may omit a network location for a
   2117  1.1  mrg           work that was published at least four years before the
   2118  1.1  mrg           Document itself, or if the original publisher of the version
   2119  1.1  mrg           it refers to gives permission.
   2120  1.1  mrg 
   2121  1.1  mrg        K. For any section Entitled "Acknowledgements" or "Dedications",
   2122  1.1  mrg           Preserve the Title of the section, and preserve in the
   2123  1.1  mrg           section all the substance and tone of each of the contributor
   2124  1.1  mrg           acknowledgements and/or dedications given therein.
   2125  1.1  mrg 
   2126  1.1  mrg        L. Preserve all the Invariant Sections of the Document,
   2127  1.1  mrg           unaltered in their text and in their titles.  Section numbers
   2128  1.1  mrg           or the equivalent are not considered part of the section
   2129  1.1  mrg           titles.
   2130  1.1  mrg 
   2131  1.1  mrg        M. Delete any section Entitled "Endorsements".  Such a section
   2132  1.1  mrg           may not be included in the Modified Version.
   2133  1.1  mrg 
   2134  1.1  mrg        N. Do not retitle any existing section to be Entitled
   2135  1.1  mrg           "Endorsements" or to conflict in title with any Invariant
   2136  1.1  mrg           Section.
   2137  1.1  mrg 
   2138  1.1  mrg        O. Preserve any Warranty Disclaimers.
   2139  1.1  mrg 
   2140  1.1  mrg      If the Modified Version includes new front-matter sections or
   2141  1.1  mrg      appendices that qualify as Secondary Sections and contain no
   2142  1.1  mrg      material copied from the Document, you may at your option
   2143  1.1  mrg      designate some or all of these sections as invariant.  To do this,
   2144  1.1  mrg      add their titles to the list of Invariant Sections in the Modified
   2145  1.1  mrg      Version's license notice.  These titles must be distinct from any
   2146  1.1  mrg      other section titles.
   2147  1.1  mrg 
   2148  1.1  mrg      You may add a section Entitled "Endorsements", provided it contains
   2149  1.1  mrg      nothing but endorsements of your Modified Version by various
   2150  1.1  mrg      parties--for example, statements of peer review or that the text
   2151  1.1  mrg      has been approved by an organization as the authoritative
   2152  1.1  mrg      definition of a standard.
   2153  1.1  mrg 
   2154  1.1  mrg      You may add a passage of up to five words as a Front-Cover Text,
   2155  1.1  mrg      and a passage of up to 25 words as a Back-Cover Text, to the end
   2156  1.1  mrg      of the list of Cover Texts in the Modified Version.  Only one
   2157  1.1  mrg      passage of Front-Cover Text and one of Back-Cover Text may be
   2158  1.1  mrg      added by (or through arrangements made by) any one entity.  If the
   2159  1.1  mrg      Document already includes a cover text for the same cover,
   2160  1.1  mrg      previously added by you or by arrangement made by the same entity
   2161  1.1  mrg      you are acting on behalf of, you may not add another; but you may
   2162  1.1  mrg      replace the old one, on explicit permission from the previous
   2163  1.1  mrg      publisher that added the old one.
   2164  1.1  mrg 
   2165  1.1  mrg      The author(s) and publisher(s) of the Document do not by this
   2166  1.1  mrg      License give permission to use their names for publicity for or to
   2167  1.1  mrg      assert or imply endorsement of any Modified Version.
   2168  1.1  mrg 
   2169  1.1  mrg   5. COMBINING DOCUMENTS
   2170  1.1  mrg 
   2171  1.1  mrg      You may combine the Document with other documents released under
   2172  1.1  mrg      this License, under the terms defined in section 4 above for
   2173  1.1  mrg      modified versions, provided that you include in the combination
   2174  1.1  mrg      all of the Invariant Sections of all of the original documents,
   2175  1.1  mrg      unmodified, and list them all as Invariant Sections of your
   2176  1.1  mrg      combined work in its license notice, and that you preserve all
   2177  1.1  mrg      their Warranty Disclaimers.
   2178  1.1  mrg 
   2179  1.1  mrg      The combined work need only contain one copy of this License, and
   2180  1.1  mrg      multiple identical Invariant Sections may be replaced with a single
   2181  1.1  mrg      copy.  If there are multiple Invariant Sections with the same name
   2182  1.1  mrg      but different contents, make the title of each such section unique
   2183  1.1  mrg      by adding at the end of it, in parentheses, the name of the
   2184  1.1  mrg      original author or publisher of that section if known, or else a
   2185  1.1  mrg      unique number.  Make the same adjustment to the section titles in
   2186  1.1  mrg      the list of Invariant Sections in the license notice of the
   2187  1.1  mrg      combined work.
   2188  1.1  mrg 
   2189  1.1  mrg      In the combination, you must combine any sections Entitled
   2190  1.1  mrg      "History" in the various original documents, forming one section
   2191  1.1  mrg      Entitled "History"; likewise combine any sections Entitled
   2192  1.1  mrg      "Acknowledgements", and any sections Entitled "Dedications".  You
   2193  1.1  mrg      must delete all sections Entitled "Endorsements."
   2194  1.1  mrg 
   2195  1.1  mrg   6. COLLECTIONS OF DOCUMENTS
   2196  1.1  mrg 
   2197  1.1  mrg      You may make a collection consisting of the Document and other
   2198  1.1  mrg      documents released under this License, and replace the individual
   2199  1.1  mrg      copies of this License in the various documents with a single copy
   2200  1.1  mrg      that is included in the collection, provided that you follow the
   2201  1.1  mrg      rules of this License for verbatim copying of each of the
   2202  1.1  mrg      documents in all other respects.
   2203  1.1  mrg 
   2204  1.1  mrg      You may extract a single document from such a collection, and
   2205  1.1  mrg      distribute it individually under this License, provided you insert
   2206  1.1  mrg      a copy of this License into the extracted document, and follow
   2207  1.1  mrg      this License in all other respects regarding verbatim copying of
   2208  1.1  mrg      that document.
   2209  1.1  mrg 
   2210  1.1  mrg   7. AGGREGATION WITH INDEPENDENT WORKS
   2211  1.1  mrg 
   2212  1.1  mrg      A compilation of the Document or its derivatives with other
   2213  1.1  mrg      separate and independent documents or works, in or on a volume of
   2214  1.1  mrg      a storage or distribution medium, is called an "aggregate" if the
   2215  1.1  mrg      copyright resulting from the compilation is not used to limit the
   2216  1.1  mrg      legal rights of the compilation's users beyond what the individual
   2217  1.1  mrg      works permit.  When the Document is included in an aggregate, this
   2218  1.1  mrg      License does not apply to the other works in the aggregate which
   2219  1.1  mrg      are not themselves derivative works of the Document.
   2220  1.1  mrg 
   2221  1.1  mrg      If the Cover Text requirement of section 3 is applicable to these
   2222  1.1  mrg      copies of the Document, then if the Document is less than one half
   2223  1.1  mrg      of the entire aggregate, the Document's Cover Texts may be placed
   2224  1.1  mrg      on covers that bracket the Document within the aggregate, or the
   2225  1.1  mrg      electronic equivalent of covers if the Document is in electronic
   2226  1.1  mrg      form.  Otherwise they must appear on printed covers that bracket
   2227  1.1  mrg      the whole aggregate.
   2228  1.1  mrg 
   2229  1.1  mrg   8. TRANSLATION
   2230  1.1  mrg 
   2231  1.1  mrg      Translation is considered a kind of modification, so you may
   2232  1.1  mrg      distribute translations of the Document under the terms of section
   2233  1.1  mrg      4.  Replacing Invariant Sections with translations requires special
   2234  1.1  mrg      permission from their copyright holders, but you may include
   2235  1.1  mrg      translations of some or all Invariant Sections in addition to the
   2236  1.1  mrg      original versions of these Invariant Sections.  You may include a
   2237  1.1  mrg      translation of this License, and all the license notices in the
   2238  1.1  mrg      Document, and any Warranty Disclaimers, provided that you also
   2239  1.1  mrg      include the original English version of this License and the
   2240  1.1  mrg      original versions of those notices and disclaimers.  In case of a
   2241  1.1  mrg      disagreement between the translation and the original version of
   2242  1.1  mrg      this License or a notice or disclaimer, the original version will
   2243  1.1  mrg      prevail.
   2244  1.1  mrg 
   2245  1.1  mrg      If a section in the Document is Entitled "Acknowledgements",
   2246  1.1  mrg      "Dedications", or "History", the requirement (section 4) to
   2247  1.1  mrg      Preserve its Title (section 1) will typically require changing the
   2248  1.1  mrg      actual title.
   2249  1.1  mrg 
   2250  1.1  mrg   9. TERMINATION
   2251  1.1  mrg 
   2252  1.1  mrg      You may not copy, modify, sublicense, or distribute the Document
   2253  1.1  mrg      except as expressly provided for under this License.  Any other
   2254  1.1  mrg      attempt to copy, modify, sublicense or distribute the Document is
   2255  1.1  mrg      void, and will automatically terminate your rights under this
   2256  1.1  mrg      License.  However, parties who have received copies, or rights,
   2257  1.1  mrg      from you under this License will not have their licenses
   2258  1.1  mrg      terminated so long as such parties remain in full compliance.
   2259  1.1  mrg 
   2260  1.1  mrg  10. FUTURE REVISIONS OF THIS LICENSE
   2261  1.1  mrg 
   2262  1.1  mrg      The Free Software Foundation may publish new, revised versions of
   2263  1.1  mrg      the GNU Free Documentation License from time to time.  Such new
   2264  1.1  mrg      versions will be similar in spirit to the present version, but may
   2265  1.1  mrg      differ in detail to address new problems or concerns.  See
   2266  1.1  mrg      `http://www.gnu.org/copyleft/'.
   2267  1.1  mrg 
   2268  1.1  mrg      Each version of the License is given a distinguishing version
   2269  1.1  mrg      number.  If the Document specifies that a particular numbered
   2270  1.1  mrg      version of this License "or any later version" applies to it, you
   2271  1.1  mrg      have the option of following the terms and conditions either of
   2272  1.1  mrg      that specified version or of any later version that has been
   2273  1.1  mrg      published (not as a draft) by the Free Software Foundation.  If
   2274  1.1  mrg      the Document does not specify a version number of this License,
   2275  1.1  mrg      you may choose any version ever published (not as a draft) by the
   2276  1.1  mrg      Free Software Foundation.
   2277  1.1  mrg 
   2278  1.1  mrg ADDENDUM: How to use this License for your documents
   2279  1.1  mrg ====================================================
   2280  1.1  mrg 
   2281  1.1  mrg To use this License in a document you have written, include a copy of
   2282  1.1  mrg the License in the document and put the following copyright and license
   2283  1.1  mrg notices just after the title page:
   2284  1.1  mrg 
   2285  1.1  mrg        Copyright (C)  YEAR  YOUR NAME.
   2286  1.1  mrg        Permission is granted to copy, distribute and/or modify this document
   2287  1.1  mrg        under the terms of the GNU Free Documentation License, Version 1.2
   2288  1.1  mrg        or any later version published by the Free Software Foundation;
   2289  1.1  mrg        with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
   2290  1.1  mrg        Texts.  A copy of the license is included in the section entitled ``GNU
   2291  1.1  mrg        Free Documentation License''.
   2292  1.1  mrg 
   2293  1.1  mrg    If you have Invariant Sections, Front-Cover Texts and Back-Cover
   2294  1.1  mrg Texts, replace the "with...Texts." line with this:
   2295  1.1  mrg 
   2296  1.1  mrg          with the Invariant Sections being LIST THEIR TITLES, with
   2297  1.1  mrg          the Front-Cover Texts being LIST, and with the Back-Cover Texts
   2298  1.1  mrg          being LIST.
   2299  1.1  mrg 
   2300  1.1  mrg    If you have Invariant Sections without Cover Texts, or some other
   2301  1.1  mrg combination of the three, merge those two alternatives to suit the
   2302  1.1  mrg situation.
   2303  1.1  mrg 
   2304  1.1  mrg    If your document contains nontrivial examples of program code, we
   2305  1.1  mrg recommend releasing these examples in parallel under your choice of
   2306  1.1  mrg free software license, such as the GNU General Public License, to
   2307  1.1  mrg permit their use in free software.
   2308  1.1  mrg 
   2309  1.1  mrg 
   2310  1.1  mrg File: libgomp.info,  Node: Funding,  Next: Index,  Prev: GNU Free Documentation License,  Up: Top
   2311  1.1  mrg 
   2312  1.1  mrg Funding Free Software
   2313  1.1  mrg *********************
   2314  1.1  mrg 
   2315  1.1  mrg If you want to have more free software a few years from now, it makes
   2316  1.1  mrg sense for you to help encourage people to contribute funds for its
   2317  1.1  mrg development.  The most effective approach known is to encourage
   2318  1.1  mrg commercial redistributors to donate.
   2319  1.1  mrg 
   2320  1.1  mrg    Users of free software systems can boost the pace of development by
   2321  1.1  mrg encouraging for-a-fee distributors to donate part of their selling price
   2322  1.1  mrg to free software developers--the Free Software Foundation, and others.
   2323  1.1  mrg 
   2324  1.1  mrg    The way to convince distributors to do this is to demand it and
   2325  1.1  mrg expect it from them.  So when you compare distributors, judge them
   2326  1.1  mrg partly by how much they give to free software development.  Show
   2327  1.1  mrg distributors they must compete to be the one who gives the most.
   2328  1.1  mrg 
   2329  1.1  mrg    To make this approach work, you must insist on numbers that you can
   2330  1.1  mrg compare, such as, "We will donate ten dollars to the Frobnitz project
   2331  1.1  mrg for each disk sold."  Don't be satisfied with a vague promise, such as
   2332  1.1  mrg "A portion of the profits are donated," since it doesn't give a basis
   2333  1.1  mrg for comparison.
   2334  1.1  mrg 
   2335  1.1  mrg    Even a precise fraction "of the profits from this disk" is not very
   2336  1.1  mrg meaningful, since creative accounting and unrelated business decisions
   2337  1.1  mrg can greatly alter what fraction of the sales price counts as profit.
   2338  1.1  mrg If the price you pay is $50, ten percent of the profit is probably less
   2339  1.1  mrg than a dollar; it might be a few cents, or nothing at all.
   2340  1.1  mrg 
   2341  1.1  mrg    Some redistributors do development work themselves.  This is useful
   2342  1.1  mrg too; but to keep everyone honest, you need to inquire how much they do,
   2343  1.1  mrg and what kind.  Some kinds of development make much more long-term
   2344  1.1  mrg difference than others.  For example, maintaining a separate version of
   2345  1.1  mrg a program contributes very little; maintaining the standard version of a
   2346  1.1  mrg program for the whole community contributes much.  Easy new ports
   2347  1.1  mrg contribute little, since someone else would surely do them; difficult
   2348  1.1  mrg ports such as adding a new CPU to the GNU Compiler Collection
   2349  1.1  mrg contribute more; major new features or packages contribute the most.
   2350  1.1  mrg 
   2351  1.1  mrg    By establishing the idea that supporting further development is "the
   2352  1.1  mrg proper thing to do" when distributing free software for a fee, we can
   2353  1.1  mrg assure a steady flow of resources into making more free software.
   2354  1.1  mrg 
   2355  1.1  mrg      Copyright (C) 1994 Free Software Foundation, Inc.
   2356  1.1  mrg      Verbatim copying and redistribution of this section is permitted
   2357  1.1  mrg      without royalty; alteration is not permitted.
   2358  1.1  mrg 
   2359  1.1  mrg 
   2360  1.1  mrg File: libgomp.info,  Node: Index,  Prev: Funding,  Up: Top
   2361  1.1  mrg 
   2362  1.1  mrg Index
   2363  1.1  mrg *****
   2364  1.1  mrg 
   2365  1.1  mrg [index]
   2366  1.1  mrg * Menu:
   2367  1.1  mrg 
   2368  1.1  mrg * Environment Variable <1>:              GOMP_STACKSIZE.        (line 6)
   2369  1.1  mrg * Environment Variable <2>:              GOMP_CPU_AFFINITY.     (line 6)
   2370  1.1  mrg * Environment Variable <3>:              OMP_WAIT_POLICY.       (line 6)
   2371  1.1  mrg * Environment Variable <4>:              OMP_THREAD_LIMIT.      (line 6)
   2372  1.1  mrg * Environment Variable <5>:              OMP_STACKSIZE.         (line 6)
   2373  1.1  mrg * Environment Variable <6>:              OMP_SCHEDULE.          (line 6)
   2374  1.1  mrg * Environment Variable <7>:              OMP_NUM_THREADS.       (line 6)
   2375  1.1  mrg * Environment Variable <8>:              OMP_NESTED.            (line 6)
   2376  1.1  mrg * Environment Variable <9>:              OMP_MAX_ACTIVE_LEVELS. (line 6)
   2377  1.1  mrg * Environment Variable:                  OMP_DYNAMIC.           (line 6)
   2378  1.1  mrg * FDL, GNU Free Documentation License:   GNU Free Documentation License.
   2379  1.1  mrg                                                                 (line 6)
   2380  1.1  mrg * Implementation specific setting <1>:   GOMP_STACKSIZE.        (line 6)
   2381  1.1  mrg * Implementation specific setting <2>:   OMP_SCHEDULE.          (line 6)
   2382  1.1  mrg * Implementation specific setting <3>:   OMP_NUM_THREADS.       (line 6)
   2383  1.1  mrg * Implementation specific setting:       OMP_NESTED.            (line 6)
   2384  1.1  mrg * Introduction:                          Top.                   (line 6)
   2385  1.1  mrg 
   2386  1.1  mrg 
   2387  1.1  mrg 
   2388  1.1  mrg Tag Table:
   2389  1.1  mrg Node: Top2053
   2390  1.1  mrg Node: Enabling OpenMP3247
   2391  1.1  mrg Node: Runtime Library Routines4032
   2392  1.1  mrg Node: omp_get_active_level6407
   2393  1.1  mrg Node: omp_get_ancestor_thread_num7098
   2394  1.1  mrg Node: omp_get_dynamic8012
   2395  1.1  mrg Node: omp_get_level8886
   2396  1.1  mrg Node: omp_get_max_active_levels9497
   2397  1.1  mrg Node: omp_get_max_threads10185
   2398  1.1  mrg Node: omp_get_nested10937
   2399  1.1  mrg Node: omp_get_num_procs11845
   2400  1.1  mrg Node: omp_get_num_threads12359
   2401  1.1  mrg Node: omp_get_schedule13429
   2402  1.1  mrg Node: omp_get_team_size14336
   2403  1.1  mrg Node: omp_get_thread_limit15294
   2404  1.1  mrg Node: omp_get_thread_num15913
   2405  1.1  mrg Node: omp_in_parallel16767
   2406  1.1  mrg Node: omp_set_dynamic17413
   2407  1.1  mrg Node: omp_set_max_active_levels18249
   2408  1.1  mrg Node: omp_set_nested19011
   2409  1.1  mrg Node: omp_set_num_threads19888
   2410  1.1  mrg Node: omp_set_schedule20726
   2411  1.1  mrg Node: omp_init_lock21770
   2412  1.1  mrg Node: omp_set_lock22420
   2413  1.1  mrg Node: omp_test_lock23269
   2414  1.1  mrg Node: omp_unset_lock24296
   2415  1.1  mrg Node: omp_destroy_lock25222
   2416  1.1  mrg Node: omp_init_nest_lock25892
   2417  1.1  mrg Node: omp_set_nest_lock26624
   2418  1.1  mrg Node: omp_test_nest_lock27533
   2419  1.1  mrg Node: omp_unset_nest_lock28631
   2420  1.1  mrg Node: omp_destroy_nest_lock29640
   2421  1.1  mrg Node: omp_get_wtick30388
   2422  1.1  mrg Node: omp_get_wtime30975
   2423  1.1  mrg Node: Environment Variables31758
   2424  1.1  mrg Node: OMP_DYNAMIC32819
   2425  1.1  mrg Node: OMP_MAX_ACTIVE_LEVELS33387
   2426  1.1  mrg Node: OMP_NESTED34024
   2427  1.1  mrg Node: OMP_NUM_THREADS34628
   2428  1.1  mrg Node: OMP_SCHEDULE35201
   2429  1.1  mrg Node: OMP_STACKSIZE35895
   2430  1.1  mrg Node: OMP_THREAD_LIMIT36720
   2431  1.1  mrg Node: OMP_WAIT_POLICY37313
   2432  1.1  mrg Node: GOMP_CPU_AFFINITY37878
   2433  1.1  mrg Node: GOMP_STACKSIZE39362
   2434  1.1  mrg Node: The libgomp ABI40172
   2435  1.1  mrg Node: Implementing MASTER construct40970
   2436  1.1  mrg Node: Implementing CRITICAL construct41383
   2437  1.1  mrg Node: Implementing ATOMIC construct42131
   2438  1.1  mrg Node: Implementing FLUSH construct42612
   2439  1.1  mrg Node: Implementing BARRIER construct42883
   2440  1.1  mrg Node: Implementing THREADPRIVATE construct43152
   2441  1.1  mrg Node: Implementing PRIVATE clause43804
   2442  1.1  mrg Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses44385
   2443  1.1  mrg Node: Implementing REDUCTION clause45700
   2444  1.1  mrg Node: Implementing PARALLEL construct46256
   2445  1.1  mrg Node: Implementing FOR construct47513
   2446  1.1  mrg Node: Implementing ORDERED construct49511
   2447  1.1  mrg Node: Implementing SECTIONS construct49817
   2448  1.1  mrg Node: Implementing SINGLE construct50583
   2449  1.1  mrg Node: Reporting Bugs51245
   2450  1.1  mrg Node: Copying51553
   2451  1.1  mrg Node: GNU Free Documentation License70763
   2452  1.1  mrg Node: Funding93174
   2453  1.1  mrg Node: Index95691
   2454  1.1  mrg 
   2455  1.1  mrg End Tag Table
   2456