1 This is libgomp.info, produced by makeinfo version 4.8 from
2 ../../../gcc-4.3.3/libgomp/libgomp.texi.
4 Copyright (C) 2006 Free Software Foundation, Inc.
6 Permission is granted to copy, distribute and/or modify this document
7 under the terms of the GNU Free Documentation License, Version 1.1 or
8 any later version published by the Free Software Foundation; with the
9 Invariant Sections being "GNU General Public License" and "Funding Free
10 Software", the Front-Cover texts being (a) (see below), and with the
11 Back-Cover Texts being (b) (see below). A copy of the license is
12 included in the section entitled "GNU Free Documentation License".
14 (a) The FSF's Front-Cover Text is:
18 (b) The FSF's Back-Cover Text is:
20 You have freedom to copy and modify this GNU Manual, like GNU
21 software. Copies published by the Free Software Foundation raise
22 funds for GNU development.
24 INFO-DIR-SECTION GNU Libraries
26 * libgomp: (libgomp). GNU OpenMP runtime library
29 This manual documents the GNU implementation of the OpenMP API for
30 multi-platform shared-memory parallel programming in C/C++ and Fortran.
32 Published by the Free Software Foundation 51 Franklin Street, Fifth
33 Floor Boston, MA 02110-1301 USA
35 Copyright (C) 2006 Free Software Foundation, Inc.
37 Permission is granted to copy, distribute and/or modify this document
38 under the terms of the GNU Free Documentation License, Version 1.1 or
39 any later version published by the Free Software Foundation; with the
40 Invariant Sections being "GNU General Public License" and "Funding Free
41 Software", the Front-Cover texts being (a) (see below), and with the
42 Back-Cover Texts being (b) (see below). A copy of the license is
43 included in the section entitled "GNU Free Documentation License".
45 (a) The FSF's Front-Cover Text is:
49 (b) The FSF's Back-Cover Text is:
51 You have freedom to copy and modify this GNU Manual, like GNU
52 software. Copies published by the Free Software Foundation raise
53 funds for GNU development.
56 File: libgomp.info, Node: Top, Next: Enabling OpenMP, Up: (dir)
61 This manual documents the usage of libgomp, the GNU implementation of
62 the OpenMP (http://www.openmp.org) Application Programming Interface
63 (API) for multi-platform shared-memory parallel programming in C/C++
68 * Enabling OpenMP:: How to enable OpenMP for your applications.
69 * Runtime Library Routines:: The OpenMP runtime application programming
71 * Environment Variables:: Influencing runtime behavior with environment
73 * The libgomp ABI:: Notes on the external ABI presented by libgomp.
74 * Reporting Bugs:: How to report bugs in GNU OpenMP.
75 * Copying:: GNU general public license says
76 how you can copy and share libgomp.
77 * GNU Free Documentation License::
78 How you can copy and share this manual.
79 * Funding:: How to help assure continued work for free
81 * Index:: Index of this documentation.
84 File: libgomp.info, Node: Enabling OpenMP, Next: Runtime Library Routines, Prev: Top, Up: Top
89 To activate the OpenMP extensions for C/C++ and Fortran, the
90 compile-time flag `-fopenmp' must be specified. This enables the OpenMP
91 directive `#pragma omp' in C/C++ and `!$omp' directives in free form,
92 `c$omp', `*$omp' and `!$omp' directives in fixed form, `!$' conditional
93 compilation sentinels in free form and `c$', `*$' and `!$' sentinels in
94 fixed form, for Fortran. The flag also arranges for automatic linking
95 of the OpenMP runtime library (*Note Runtime Library Routines::).
97 A complete description of all OpenMP directives accepted may be
98 found in the OpenMP Application Program Interface
99 (http://www.openmp.org) manual, version 2.5.
102 File: libgomp.info, Node: Runtime Library Routines, Next: Environment Variables, Prev: Enabling OpenMP, Up: Top
104 2 Runtime Library Routines
105 **************************
107 The runtime routines described here are defined by section 3 of the
108 OpenMP specifications in version 2.5.
110 Control threads, processors and the parallel environment.
114 * omp_get_dynamic:: Dynamic teams setting
115 * omp_get_max_threads:: Maximum number of threads
116 * omp_get_nested:: Nested parallel regions
117 * omp_get_num_procs:: Number of processors online
118 * omp_get_num_threads:: Size of the active team
119 * omp_get_thread_num:: Current thread ID
120 * omp_in_parallel:: Whether a parallel region is active
121 * omp_set_dynamic:: Enable/disable dynamic teams
122 * omp_set_nested:: Enable/disable nested parallel regions
123 * omp_set_num_threads:: Set upper team size limit
125 Initialize, set, test, unset and destroy simple and nested locks.
129 * omp_init_lock:: Initialize simple lock
130 * omp_set_lock:: Wait for and set simple lock
131 * omp_test_lock:: Test and set simple lock if available
132 * omp_unset_lock:: Unset simple lock
133 * omp_destroy_lock:: Destroy simple lock
134 * omp_init_nest_lock:: Initialize nested lock
135 * omp_set_nest_lock:: Wait for and set simple lock
136 * omp_test_nest_lock:: Test and set nested lock if available
137 * omp_unset_nest_lock:: Unset nested lock
138 * omp_destroy_nest_lock:: Destroy nested lock
140 Portable, thread-based, wall clock timer.
144 * omp_get_wtick:: Get timer precision.
145 * omp_get_wtime:: Elapsed wall clock time.
148 File: libgomp.info, Node: omp_get_dynamic, Next: omp_get_max_threads, Up: Runtime Library Routines
150 2.1 `omp_get_dynamic' - Dynamic teams setting
151 =============================================
154 This function returns `true' if enabled, `false' otherwise. Here,
155 `true' and `false' represent their language-specific counterparts.
157 The dynamic team setting may be initialized at startup by the
158 `OMP_DYNAMIC' environment variable or at runtime using
159 `omp_set_dynamic'. If undefined, dynamic adjustment is disabled by
163 _Prototype_: `int omp_get_dynamic();'
166 _Interface_: `logical function omp_get_dynamic()'
169 *Note omp_set_dynamic::, *Note OMP_DYNAMIC::
172 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.8.
175 File: libgomp.info, Node: omp_get_max_threads, Next: omp_get_nested, Prev: omp_get_dynamic, Up: Runtime Library Routines
177 2.2 `omp_get_max_threads' - Maximum number of threads
178 =====================================================
181 Return the maximum number of threads used for parallel regions
182 that do not use the clause `num_threads'.
185 _Prototype_: `int omp_get_max_threads();'
188 _Interface_: `integer function omp_get_max_threads()'
191 *Note omp_set_num_threads::, *Note omp_set_dynamic::
194 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.3.
197 File: libgomp.info, Node: omp_get_nested, Next: omp_get_num_procs, Prev: omp_get_max_threads, Up: Runtime Library Routines
199 2.3 `omp_get_nested' - Nested parallel regions
200 ==============================================
203 This function returns `true' if nested parallel regions are
204 enabled, `false' otherwise. Here, `true' and `false' represent
205 their language-specific counterparts.
207 Nested parallel regions may be initialized at startup by the
208 `OMP_NESTED' environment variable or at runtime using
209 `omp_set_nested'. If undefined, nested parallel regions are
213 _Prototype_: `int omp_get_nested();'
216 _Interface_: `integer function omp_get_nested()'
219 *Note omp_set_nested::, *Note OMP_NESTED::
222 OpenMP specifications v2.5 (http://www.openmp.org/), section
226 File: libgomp.info, Node: omp_get_num_procs, Next: omp_get_num_threads, Prev: omp_get_nested, Up: Runtime Library Routines
228 2.4 `omp_get_num_procs' - Number of processors online
229 =====================================================
232 Returns the number of processors online.
235 _Prototype_: `int omp_get_num_procs();'
238 _Interface_: `integer function omp_get_num_procs()'
241 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.5.
244 File: libgomp.info, Node: omp_get_num_threads, Next: omp_get_thread_num, Prev: omp_get_num_procs, Up: Runtime Library Routines
246 2.5 `omp_get_num_threads' - Size of the active team
247 ===================================================
250 The number of threads in the current team. In a sequential section
251 of the program `omp_get_num_threads' returns 1.
253 The default team size may be initialized at startup by the
254 `OMP_NUM_THREADS' environment variable. At runtime, the size of
255 the current team may be set either by the `NUM_THREADS' clause or
256 by `omp_set_num_threads'. If none of the above were used to define
257 a specific value and `OMP_DYNAMIC' is disabled, one thread per CPU
261 _Prototype_: `int omp_get_num_threads();'
264 _Interface_: `integer function omp_get_num_threads()'
267 *Note omp_get_max_threads::, *Note omp_set_num_threads::, *Note
271 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.2.
274 File: libgomp.info, Node: omp_get_thread_num, Next: omp_in_parallel, Prev: omp_get_num_threads, Up: Runtime Library Routines
276 2.6 `omp_get_thread_num' - Current thread ID
277 ============================================
280 Unique thread identification number. In a sequential parts of the
281 program, `omp_get_thread_num' always returns 0. In parallel
282 regions the return value varies from 0 to `omp_get_max_threads'-1
283 inclusive. The return value of the master thread of a team is
287 _Prototype_: `int omp_get_thread_num();'
290 _Interface_: `integer function omp_get_thread_num()'
293 *Note omp_get_max_threads::
296 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.4.
299 File: libgomp.info, Node: omp_in_parallel, Next: omp_set_dynamic, Prev: omp_get_thread_num, Up: Runtime Library Routines
301 2.7 `omp_in_parallel' - Whether a parallel region is active
302 ===========================================================
305 This function returns `true' if currently running in parallel,
306 `false' otherwise. Here, `true' and `false' represent their
307 language-specific counterparts.
310 _Prototype_: `int omp_in_parallel();'
313 _Interface_: `logical function omp_in_parallel()'
316 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.6.
319 File: libgomp.info, Node: omp_set_dynamic, Next: omp_set_nested, Prev: omp_in_parallel, Up: Runtime Library Routines
321 2.8 `omp_set_dynamic' - Enable/disable dynamic teams
322 ====================================================
325 Enable or disable the dynamic adjustment of the number of threads
326 within a team. The function takes the language-specific equivalent
327 of `true' and `false', where `true' enables dynamic adjustment of
328 team sizes and `false' disables it.
331 _Prototype_: `void omp_set_dynamic(int);'
334 _Interface_: `subroutine omp_set_dynamic(set)'
335 `integer, intent(in) :: set'
338 *Note OMP_DYNAMIC::, *Note omp_get_dynamic::
341 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.7.
344 File: libgomp.info, Node: omp_set_nested, Next: omp_set_num_threads, Prev: omp_set_dynamic, Up: Runtime Library Routines
346 2.9 `omp_set_nested' - Enable/disable nested parallel regions
347 =============================================================
350 Enable or disable nested parallel regions, i.e., whether team
351 members are allowed to create new teams. The function takes the
352 language-specific equivalent of `true' and `false', where `true'
353 enables dynamic adjustment of team sizes and `false' disables it.
356 _Prototype_: `void omp_set_dynamic(int);'
359 _Interface_: `subroutine omp_set_dynamic(set)'
360 `integer, intent(in) :: set'
363 *Note OMP_NESTED::, *Note omp_get_nested::
366 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.9.
369 File: libgomp.info, Node: omp_set_num_threads, Next: omp_init_lock, Prev: omp_set_nested, Up: Runtime Library Routines
371 2.10 `omp_set_num_threads' - Set upper team size limit
372 ======================================================
375 Specifies the number of threads used by default in subsequent
376 parallel sections, if those do not specify a `num_threads' clause.
377 The argument of `omp_set_num_threads' shall be a positive integer.
380 _Prototype_: `void omp_set_num_threads(int);'
383 _Interface_: `subroutine omp_set_num_threads(set)'
384 `integer, intent(in) :: set'
387 *Note OMP_NUM_THREADS::, *Note omp_get_num_threads::, *Note
388 omp_get_max_threads::
391 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.1.
394 File: libgomp.info, Node: omp_init_lock, Next: omp_set_lock, Prev: omp_set_num_threads, Up: Runtime Library Routines
396 2.11 `omp_init_lock' - Initialize simple lock
397 =============================================
400 Initialize a simple lock. After initialization, the lock is in an
404 _Prototype_: `void omp_init_lock(omp_lock_t *lock);'
407 _Interface_: `subroutine omp_init_lock(lock)'
408 `integer(omp_lock_kind), intent(out) :: lock'
411 *Note omp_destroy_lock::
414 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.1.
417 File: libgomp.info, Node: omp_set_lock, Next: omp_test_lock, Prev: omp_init_lock, Up: Runtime Library Routines
419 2.12 `omp_set_lock' - Wait for and set simple lock
420 ==================================================
423 Before setting a simple lock, the lock variable must be
424 initialized by `omp_init_lock'. The calling thread is blocked
425 until the lock is available. If the lock is already held by the
426 current thread, a deadlock occurs.
429 _Prototype_: `void omp_set_lock(omp_lock_t *lock);'
432 _Interface_: `subroutine omp_set_lock(lock)'
433 `integer(omp_lock_kind), intent(out) :: lock'
436 *Note omp_init_lock::, *Note omp_test_lock::, *Note
440 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.3.
443 File: libgomp.info, Node: omp_test_lock, Next: omp_unset_lock, Prev: omp_set_lock, Up: Runtime Library Routines
445 2.13 `omp_test_lock' - Test and set simple lock if available
446 ============================================================
449 Before setting a simple lock, the lock variable must be
450 initialized by `omp_init_lock'. Contrary to `omp_set_lock',
451 `omp_test_lock' does not block if the lock is not available. This
452 function returns `true' upon success,`false' otherwise. Here,
453 `true' and `false' represent their language-specific counterparts.
456 _Prototype_: `int omp_test_lock(omp_lock_t *lock);'
459 _Interface_: `subroutine omp_test_lock(lock)'
460 `logical(omp_logical_kind) :: omp_test_lock'
461 `integer(omp_lock_kind), intent(out) :: lock'
464 *Note omp_init_lock::, *Note omp_set_lock::, *Note omp_set_lock::
467 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.5.
470 File: libgomp.info, Node: omp_unset_lock, Next: omp_destroy_lock, Prev: omp_test_lock, Up: Runtime Library Routines
472 2.14 `omp_unset_lock' - Unset simple lock
473 =========================================
476 A simple lock about to be unset must have been locked by
477 `omp_set_lock' or `omp_test_lock' before. In addition, the lock
478 must be held by the thread calling `omp_unset_lock'. Then, the
479 lock becomes unlocked. If one ore more threads attempted to set
480 the lock before, one of them is chosen to, again, set the lock for
484 _Prototype_: `void omp_unset_lock(omp_lock_t *lock);'
487 _Interface_: `subroutine omp_unset_lock(lock)'
488 `integer(omp_lock_kind), intent(out) :: lock'
491 *Note omp_set_lock::, *Note omp_test_lock::
494 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.4.
497 File: libgomp.info, Node: omp_destroy_lock, Next: omp_init_nest_lock, Prev: omp_unset_lock, Up: Runtime Library Routines
499 2.15 `omp_destroy_lock' - Destroy simple lock
500 =============================================
503 Destroy a simple lock. In order to be destroyed, a simple lock
504 must be in the unlocked state.
507 _Prototype_: `void omp_destroy_lock(omp_lock_t *);'
510 _Interface_: `subroutine omp_destroy_lock(lock)'
511 `integer(omp_lock_kind), intent(inout) :: lock'
514 *Note omp_init_lock::
517 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.2.
520 File: libgomp.info, Node: omp_init_nest_lock, Next: omp_set_nest_lock, Prev: omp_destroy_lock, Up: Runtime Library Routines
522 2.16 `omp_init_nest_lock' - Initialize nested lock
523 ==================================================
526 Initialize a nested lock. After initialization, the lock is in an
527 unlocked state and the nesting count is set to zero.
530 _Prototype_: `void omp_init_nest_lock(omp_nest_lock_t *lock);'
533 _Interface_: `subroutine omp_init_nest_lock(lock)'
534 `integer(omp_nest_lock_kind), intent(out) :: lock'
537 *Note omp_destroy_nest_lock::
540 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.1.
543 File: libgomp.info, Node: omp_set_nest_lock, Next: omp_test_nest_lock, Prev: omp_init_nest_lock, Up: Runtime Library Routines
545 2.17 `omp_set_nest_lock' - Wait for and set simple lock
546 =======================================================
549 Before setting a nested lock, the lock variable must be
550 initialized by `omp_init_nest_lock'. The calling thread is blocked
551 until the lock is available. If the lock is already held by the
552 current thread, the nesting count for the lock in incremented.
555 _Prototype_: `void omp_set_nest_lock(omp_nest_lock_t *lock);'
558 _Interface_: `subroutine omp_set_nest_lock(lock)'
559 `integer(omp_nest_lock_kind), intent(out) :: lock'
562 *Note omp_init_nest_lock::, *Note omp_unset_nest_lock::
565 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.3.
568 File: libgomp.info, Node: omp_test_nest_lock, Next: omp_unset_nest_lock, Prev: omp_set_nest_lock, Up: Runtime Library Routines
570 2.18 `omp_test_nest_lock' - Test and set nested lock if available
571 =================================================================
574 Before setting a nested lock, the lock variable must be
575 initialized by `omp_init_nest_lock'. Contrary to
576 `omp_set_nest_lock', `omp_test_nest_lock' does not block if the
577 lock is not available. If the lock is already held by the current
578 thread, the new nesting count is returned. Otherwise, the return
582 _Prototype_: `int omp_test_nest_lock(omp_nest_lock_t *lock);'
585 _Interface_: `integer function omp_test_nest_lock(lock)'
586 `integer(omp_integer_kind) :: omp_test_nest_lock'
587 `integer(omp_nest_lock_kind), intent(inout) :: lock'
590 *Note omp_init_lock::, *Note omp_set_lock::, *Note omp_set_lock::
593 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.5.
596 File: libgomp.info, Node: omp_unset_nest_lock, Next: omp_destroy_nest_lock, Prev: omp_test_nest_lock, Up: Runtime Library Routines
598 2.19 `omp_unset_nest_lock' - Unset nested lock
599 ==============================================
602 A nested lock about to be unset must have been locked by
603 `omp_set_nested_lock' or `omp_test_nested_lock' before. In
604 addition, the lock must be held by the thread calling
605 `omp_unset_nested_lock'. If the nesting count drops to zero, the
606 lock becomes unlocked. If one ore more threads attempted to set
607 the lock before, one of them is chosen to, again, set the lock for
611 _Prototype_: `void omp_unset_nest_lock(omp_nest_lock_t *lock);'
614 _Interface_: `subroutine omp_unset_nest_lock(lock)'
615 `integer(omp_nest_lock_kind), intent(out) :: lock'
618 *Note omp_set_nest_lock::
621 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.4.
624 File: libgomp.info, Node: omp_destroy_nest_lock, Next: omp_get_wtick, Prev: omp_unset_nest_lock, Up: Runtime Library Routines
626 2.20 `omp_destroy_nest_lock' - Destroy nested lock
627 ==================================================
630 Destroy a nested lock. In order to be destroyed, a nested lock
631 must be in the unlocked state and its nesting count must equal
635 _Prototype_: `void omp_destroy_nest_lock(omp_nest_lock_t *);'
638 _Interface_: `subroutine omp_destroy_nest_lock(lock)'
639 `integer(omp_nest_lock_kind), intent(inout) :: lock'
642 *Note omp_init_lock::
645 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.2.
648 File: libgomp.info, Node: omp_get_wtick, Next: omp_get_wtime, Prev: omp_destroy_nest_lock, Up: Runtime Library Routines
650 2.21 `omp_get_wtick' - Get timer precision
651 ==========================================
654 Gets the timer precision, i.e., the number of seconds between two
655 successive clock ticks.
658 _Prototype_: `double omp_get_wtick();'
661 _Interface_: `double precision function omp_get_wtick()'
664 *Note omp_get_wtime::
667 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.4.2.
670 File: libgomp.info, Node: omp_get_wtime, Prev: omp_get_wtick, Up: Runtime Library Routines
672 2.22 `omp_get_wtime' - Elapsed wall clock time
673 ==============================================
676 Elapsed wall clock time in seconds. The time is measured per
677 thread, no guarantee can bee made that two distinct threads
678 measure the same time. Time is measured from some "time in the
679 past". On POSIX compliant systems the seconds since the Epoch
680 (00:00:00 UTC, January 1, 1970) are returned.
683 _Prototype_: `double omp_get_wtime();'
686 _Interface_: `double precision function omp_get_wtime()'
689 *Note omp_get_wtick::
692 OpenMP specifications v2.5 (http://www.openmp.org/), section 3.4.1.
695 File: libgomp.info, Node: Environment Variables, Next: The libgomp ABI, Prev: Runtime Library Routines, Up: Top
697 3 Environment Variables
698 ***********************
700 The variables `OMP_DYNAMIC', `OMP_NESTED', `OMP_NUM_THREADS' and
701 `OMP_SCHEDULE' are defined by section 4 of the OpenMP specifications in
702 version 2.5, while `GOMP_CPU_AFFINITY' and `GOMP_STACKSIZE' are GNU
707 * OMP_DYNAMIC:: Dynamic adjustment of threads
708 * OMP_NESTED:: Nested parallel regions
709 * OMP_NUM_THREADS:: Specifies the number of threads to use
710 * OMP_SCHEDULE:: How threads are scheduled
711 * GOMP_CPU_AFFINITY:: Bind threads to specific CPUs
712 * GOMP_STACKSIZE:: Set default thread stack size
715 File: libgomp.info, Node: OMP_DYNAMIC, Next: OMP_NESTED, Up: Environment Variables
717 3.1 `OMP_DYNAMIC' - Dynamic adjustment of threads
718 =================================================
721 Enable or disable the dynamic adjustment of the number of threads
722 within a team. The value of this environment variable shall be
723 `TRUE' or `FALSE'. If undefined, dynamic adjustment is disabled by
727 *Note omp_set_dynamic::
730 OpenMP specifications v2.5 (http://www.openmp.org/), section 4.3
733 File: libgomp.info, Node: OMP_NESTED, Next: OMP_NUM_THREADS, Prev: OMP_DYNAMIC, Up: Environment Variables
735 3.2 `OMP_NESTED' - Nested parallel regions
736 ==========================================
739 Enable or disable nested parallel regions, i.e., whether team
740 members are allowed to create new teams. The value of this
741 environment variable shall be `TRUE' or `FALSE'. If undefined,
742 nested parallel regions are disabled by default.
745 *Note omp_set_nested::
748 OpenMP specifications v2.5 (http://www.openmp.org/), section 4.4
751 File: libgomp.info, Node: OMP_NUM_THREADS, Next: OMP_SCHEDULE, Prev: OMP_NESTED, Up: Environment Variables
753 3.3 `OMP_NUM_THREADS' - Specifies the number of threads to use
754 ==============================================================
757 Specifies the default number of threads to use in parallel
758 regions. The value of this variable shall be positive integer. If
759 undefined one thread per CPU online is used.
762 *Note omp_set_num_threads::
765 OpenMP specifications v2.5 (http://www.openmp.org/), section 4.2
768 File: libgomp.info, Node: OMP_SCHEDULE, Next: GOMP_CPU_AFFINITY, Prev: OMP_NUM_THREADS, Up: Environment Variables
770 3.4 `OMP_SCHEDULE' - How threads are scheduled
771 ==============================================
774 Allows to specify `schedule type' and `chunk size'. The value of
775 the variable shall have the form: `type[,chunk]' where `type' is
776 one of `static', `dynamic' or `guided'. The optional `chunk size'
777 shall be a positive integer. If undefined, dynamic scheduling and
778 a chunk size of 1 is used.
781 OpenMP specifications v2.5 (http://www.openmp.org/), sections
785 File: libgomp.info, Node: GOMP_CPU_AFFINITY, Next: GOMP_STACKSIZE, Prev: OMP_SCHEDULE, Up: Environment Variables
787 3.5 `GOMP_CPU_AFFINITY' - Bind threads to specific CPUs
788 =======================================================
791 Binds threads to specific CPUs. The variable should contain a
792 space- or comma-separated list of CPUs. This list may contain
793 different kind of entries: either single CPU numbers in any order,
794 a range of CPUs (M-N) or a range with some stride (M-N:S). CPU
795 numbers are zero based. For example, `GOMP_CPU_AFFINITY="0 3 1-2
796 4-15:2"' will bind the initial thread to CPU 0, the second to CPU
797 3, the third to CPU 1, the fourth to CPU 2, the fifth to CPU 4,
798 the sixth through tenth to CPUs 6, 8, 10, 12, and 14 respectively
799 and then start assigning back from the beginning of the list.
800 `GOMP_CPU_AFFINITY=0' binds all threads to CPU 0.
802 There is no GNU OpenMP library routine to determine whether a CPU
803 affinity specification is in effect. As a workaround,
804 language-specific library functions, e.g., `getenv' in C or
805 `GET_ENVIRONMENT_VARIABLE' in Fortran, may be used to query the
806 setting of the `GOMP_CPU_AFFINITY' environment variable. A defined
807 CPU affinity on startup cannot be changed or disabled during the
808 runtime of the application.
810 If this environment variable is omitted, the host system will
811 handle the assignment of threads to CPUs.
814 File: libgomp.info, Node: GOMP_STACKSIZE, Prev: GOMP_CPU_AFFINITY, Up: Environment Variables
816 3.6 `GOMP_STACKSIZE' - Set default thread stack size
817 ====================================================
820 Set the default thread stack size in kilobytes. This is in
821 opposition to `pthread_attr_setstacksize' which gets the number of
822 bytes as an argument. If the stacksize can not be set due to
823 system constraints, an error is reported and the initial stacksize
824 is left unchanged. If undefined, the stack size is system
828 GCC Patches Mailinglist
829 (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00493.html), GCC
831 (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00496.html)
834 File: libgomp.info, Node: The libgomp ABI, Next: Reporting Bugs, Prev: Environment Variables, Up: Top
839 The following sections present notes on the external ABI as presented
840 by libgomp. Only maintainers should need them.
844 * Implementing MASTER construct::
845 * Implementing CRITICAL construct::
846 * Implementing ATOMIC construct::
847 * Implementing FLUSH construct::
848 * Implementing BARRIER construct::
849 * Implementing THREADPRIVATE construct::
850 * Implementing PRIVATE clause::
851 * Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses::
852 * Implementing REDUCTION clause::
853 * Implementing PARALLEL construct::
854 * Implementing FOR construct::
855 * Implementing ORDERED construct::
856 * Implementing SECTIONS construct::
857 * Implementing SINGLE construct::
860 File: libgomp.info, Node: Implementing MASTER construct, Next: Implementing CRITICAL construct, Up: The libgomp ABI
862 4.1 Implementing MASTER construct
863 =================================
865 if (omp_get_thread_num () == 0)
868 Alternately, we generate two copies of the parallel subfunction and
869 only include this in the version run by the master thread. Surely
870 that's not worthwhile though...
873 File: libgomp.info, Node: Implementing CRITICAL construct, Next: Implementing ATOMIC construct, Prev: Implementing MASTER construct, Up: The libgomp ABI
875 4.2 Implementing CRITICAL construct
876 ===================================
878 Without a specified name,
880 void GOMP_critical_start (void);
881 void GOMP_critical_end (void);
883 so that we don't get COPY relocations from libgomp to the main
886 With a specified name, use omp_set_lock and omp_unset_lock with name
887 being transformed into a variable declared like
889 omp_lock_t gomp_critical_user_<name> __attribute__((common))
891 Ideally the ABI would specify that all zero is a valid unlocked
892 state, and so we wouldn't actually need to initialize this at startup.
895 File: libgomp.info, Node: Implementing ATOMIC construct, Next: Implementing FLUSH construct, Prev: Implementing CRITICAL construct, Up: The libgomp ABI
897 4.3 Implementing ATOMIC construct
898 =================================
900 The target should implement the `__sync' builtins.
902 Failing that we could add
904 void GOMP_atomic_enter (void)
905 void GOMP_atomic_exit (void)
907 which reuses the regular lock code, but with yet another lock object
908 private to the library.
911 File: libgomp.info, Node: Implementing FLUSH construct, Next: Implementing BARRIER construct, Prev: Implementing ATOMIC construct, Up: The libgomp ABI
913 4.4 Implementing FLUSH construct
914 ================================
916 Expands to the `__sync_synchronize' builtin.
919 File: libgomp.info, Node: Implementing BARRIER construct, Next: Implementing THREADPRIVATE construct, Prev: Implementing FLUSH construct, Up: The libgomp ABI
921 4.5 Implementing BARRIER construct
922 ==================================
924 void GOMP_barrier (void)
927 File: libgomp.info, Node: Implementing THREADPRIVATE construct, Next: Implementing PRIVATE clause, Prev: Implementing BARRIER construct, Up: The libgomp ABI
929 4.6 Implementing THREADPRIVATE construct
930 ========================================
932 In _most_ cases we can map this directly to `__thread'. Except that
933 OMP allows constructors for C++ objects. We can either refuse to
934 support this (how often is it used?) or we can implement something akin
937 Even more ideally, this ctor feature is handled by extensions to the
938 main pthreads library. Failing that, we can have a set of entry points
939 to register ctor functions to be called.
942 File: libgomp.info, Node: Implementing PRIVATE clause, Next: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses, Prev: Implementing THREADPRIVATE construct, Up: The libgomp ABI
944 4.7 Implementing PRIVATE clause
945 ===============================
947 In association with a PARALLEL, or within the lexical extent of a
948 PARALLEL block, the variable becomes a local variable in the parallel
951 In association with FOR or SECTIONS blocks, create a new automatic
952 variable within the current function. This preserves the semantic of
953 new variable creation.
956 File: libgomp.info, Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses, Next: Implementing REDUCTION clause, Prev: Implementing PRIVATE clause, Up: The libgomp ABI
958 4.8 Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses
959 ========================================================================
961 Seems simple enough for PARALLEL blocks. Create a private struct for
962 communicating between parent and subfunction. In the parent, copy in
963 values for scalar and "small" structs; copy in addresses for others
964 TREE_ADDRESSABLE types. In the subfunction, copy the value into the
967 Not clear at all what to do with bare FOR or SECTION blocks. The
968 only thing I can figure is that we do something like
970 #pragma omp for firstprivate(x) lastprivate(y)
971 for (int i = 0; i < n; ++i)
985 where the "x=x" and "y=y" assignments actually have different uids
986 for the two variables, i.e. not something you could write directly in
987 C. Presumably this only makes sense if the "outer" x and y are global
990 COPYPRIVATE would work the same way, except the structure broadcast
991 would have to happen via SINGLE machinery instead.
994 File: libgomp.info, Node: Implementing REDUCTION clause, Next: Implementing PARALLEL construct, Prev: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses, Up: The libgomp ABI
996 4.9 Implementing REDUCTION clause
997 =================================
999 The private struct mentioned in the previous section should have a
1000 pointer to an array of the type of the variable, indexed by the
1001 thread's TEAM_ID. The thread stores its final value into the array,
1002 and after the barrier the master thread iterates over the array to
1006 File: libgomp.info, Node: Implementing PARALLEL construct, Next: Implementing FOR construct, Prev: Implementing REDUCTION clause, Up: The libgomp ABI
1008 4.10 Implementing PARALLEL construct
1009 ====================================
1011 #pragma omp parallel
1018 void subfunction (void *data)
1025 GOMP_parallel_start (subfunction, &data, num_threads);
1026 subfunction (&data);
1027 GOMP_parallel_end ();
1029 void GOMP_parallel_start (void (*fn)(void *), void *data, unsigned num_threads)
1031 The FN argument is the subfunction to be run in parallel.
1033 The DATA argument is a pointer to a structure used to communicate
1034 data in and out of the subfunction, as discussed above with respect to
1037 The NUM_THREADS argument is 1 if an IF clause is present and false,
1038 or the value of the NUM_THREADS clause, if present, or 0.
1040 The function needs to create the appropriate number of threads
1041 and/or launch them from the dock. It needs to create the team
1042 structure and assign team ids.
1044 void GOMP_parallel_end (void)
1046 Tears down the team and returns us to the previous
1047 `omp_in_parallel()' state.
1050 File: libgomp.info, Node: Implementing FOR construct, Next: Implementing ORDERED construct, Prev: Implementing PARALLEL construct, Up: The libgomp ABI
1052 4.11 Implementing FOR construct
1053 ===============================
1055 #pragma omp parallel for
1056 for (i = lb; i <= ub; i++)
1061 void subfunction (void *data)
1064 while (GOMP_loop_static_next (&_s0, &_e0))
1067 for (i = _s0; i < _e1; i++)
1070 GOMP_loop_end_nowait ();
1073 GOMP_parallel_loop_static (subfunction, NULL, 0, lb, ub+1, 1, 0);
1075 GOMP_parallel_end ();
1077 #pragma omp for schedule(runtime)
1078 for (i = 0; i < n; i++)
1085 if (GOMP_loop_runtime_start (0, n, 1, &_s0, &_e0))
1088 for (i = _s0, i < _e0; i++)
1090 } while (GOMP_loop_runtime_next (&_s0, _&e0));
1094 Note that while it looks like there is trickyness to propagating a
1095 non-constant STEP, there isn't really. We're explicitly allowed to
1096 evaluate it as many times as we want, and any variables involved should
1097 automatically be handled as PRIVATE or SHARED like any other variables.
1098 So the expression should remain evaluable in the subfunction. We can
1099 also pull it into a local variable if we like, but since its supposed
1100 to remain unchanged, we can also not if we like.
1102 If we have SCHEDULE(STATIC), and no ORDERED, then we ought to be
1103 able to get away with no work-sharing context at all, since we can
1104 simply perform the arithmetic directly in each thread to divide up the
1105 iterations. Which would mean that we wouldn't need to call any of
1108 There are separate routines for handling loops with an ORDERED
1109 clause. Bookkeeping for that is non-trivial...
1112 File: libgomp.info, Node: Implementing ORDERED construct, Next: Implementing SECTIONS construct, Prev: Implementing FOR construct, Up: The libgomp ABI
1114 4.12 Implementing ORDERED construct
1115 ===================================
1117 void GOMP_ordered_start (void)
1118 void GOMP_ordered_end (void)
1121 File: libgomp.info, Node: Implementing SECTIONS construct, Next: Implementing SINGLE construct, Prev: Implementing ORDERED construct, Up: The libgomp ABI
1123 4.13 Implementing SECTIONS construct
1124 ====================================
1128 #pragma omp sections
1140 for (i = GOMP_sections_start (3); i != 0; i = GOMP_sections_next ())
1156 File: libgomp.info, Node: Implementing SINGLE construct, Prev: Implementing SECTIONS construct, Up: The libgomp ABI
1158 4.14 Implementing SINGLE construct
1159 ==================================
1170 if (GOMP_single_start ())
1176 #pragma omp single copyprivate(x)
1181 datap = GOMP_single_copy_start ();
1186 GOMP_single_copy_end (&data);
1193 File: libgomp.info, Node: Reporting Bugs, Next: Copying, Prev: The libgomp ABI, Up: Top
1198 Bugs in the GNU OpenMP implementation should be reported via bugzilla
1199 (http://gcc.gnu.org/bugzilla/). In all cases, please add "openmp" to
1200 the keywords field in the bug report.
1203 File: libgomp.info, Node: Copying, Next: GNU Free Documentation License, Prev: Reporting Bugs, Up: Top
1205 GNU GENERAL PUBLIC LICENSE
1206 **************************
1208 Version 2, June 1991
1210 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
1211 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
1213 Everyone is permitted to copy and distribute verbatim copies
1214 of this license document, but changing it is not allowed.
1219 The licenses for most software are designed to take away your freedom
1220 to share and change it. By contrast, the GNU General Public License is
1221 intended to guarantee your freedom to share and change free
1222 software--to make sure the software is free for all its users. This
1223 General Public License applies to most of the Free Software
1224 Foundation's software and to any other program whose authors commit to
1225 using it. (Some other Free Software Foundation software is covered by
1226 the GNU Library General Public License instead.) You can apply it to
1229 When we speak of free software, we are referring to freedom, not
1230 price. Our General Public Licenses are designed to make sure that you
1231 have the freedom to distribute copies of free software (and charge for
1232 this service if you wish), that you receive source code or can get it
1233 if you want it, that you can change the software or use pieces of it in
1234 new free programs; and that you know you can do these things.
1236 To protect your rights, we need to make restrictions that forbid
1237 anyone to deny you these rights or to ask you to surrender the rights.
1238 These restrictions translate to certain responsibilities for you if you
1239 distribute copies of the software, or if you modify it.
1241 For example, if you distribute copies of such a program, whether
1242 gratis or for a fee, you must give the recipients all the rights that
1243 you have. You must make sure that they, too, receive or can get the
1244 source code. And you must show them these terms so they know their
1247 We protect your rights with two steps: (1) copyright the software,
1248 and (2) offer you this license which gives you legal permission to copy,
1249 distribute and/or modify the software.
1251 Also, for each author's protection and ours, we want to make certain
1252 that everyone understands that there is no warranty for this free
1253 software. If the software is modified by someone else and passed on, we
1254 want its recipients to know that what they have is not the original, so
1255 that any problems introduced by others will not reflect on the original
1256 authors' reputations.
1258 Finally, any free program is threatened constantly by software
1259 patents. We wish to avoid the danger that redistributors of a free
1260 program will individually obtain patent licenses, in effect making the
1261 program proprietary. To prevent this, we have made it clear that any
1262 patent must be licensed for everyone's free use or not licensed at all.
1264 The precise terms and conditions for copying, distribution and
1265 modification follow.
1267 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1268 0. This License applies to any program or other work which contains a
1269 notice placed by the copyright holder saying it may be distributed
1270 under the terms of this General Public License. The "Program",
1271 below, refers to any such program or work, and a "work based on
1272 the Program" means either the Program or any derivative work under
1273 copyright law: that is to say, a work containing the Program or a
1274 portion of it, either verbatim or with modifications and/or
1275 translated into another language. (Hereinafter, translation is
1276 included without limitation in the term "modification".) Each
1277 licensee is addressed as "you".
1279 Activities other than copying, distribution and modification are
1280 not covered by this License; they are outside its scope. The act
1281 of running the Program is not restricted, and the output from the
1282 Program is covered only if its contents constitute a work based on
1283 the Program (independent of having been made by running the
1284 Program). Whether that is true depends on what the Program does.
1286 1. You may copy and distribute verbatim copies of the Program's
1287 source code as you receive it, in any medium, provided that you
1288 conspicuously and appropriately publish on each copy an appropriate
1289 copyright notice and disclaimer of warranty; keep intact all the
1290 notices that refer to this License and to the absence of any
1291 warranty; and give any other recipients of the Program a copy of
1292 this License along with the Program.
1294 You may charge a fee for the physical act of transferring a copy,
1295 and you may at your option offer warranty protection in exchange
1298 2. You may modify your copy or copies of the Program or any portion
1299 of it, thus forming a work based on the Program, and copy and
1300 distribute such modifications or work under the terms of Section 1
1301 above, provided that you also meet all of these conditions:
1303 a. You must cause the modified files to carry prominent notices
1304 stating that you changed the files and the date of any change.
1306 b. You must cause any work that you distribute or publish, that
1307 in whole or in part contains or is derived from the Program
1308 or any part thereof, to be licensed as a whole at no charge
1309 to all third parties under the terms of this License.
1311 c. If the modified program normally reads commands interactively
1312 when run, you must cause it, when started running for such
1313 interactive use in the most ordinary way, to print or display
1314 an announcement including an appropriate copyright notice and
1315 a notice that there is no warranty (or else, saying that you
1316 provide a warranty) and that users may redistribute the
1317 program under these conditions, and telling the user how to
1318 view a copy of this License. (Exception: if the Program
1319 itself is interactive but does not normally print such an
1320 announcement, your work based on the Program is not required
1321 to print an announcement.)
1323 These requirements apply to the modified work as a whole. If
1324 identifiable sections of that work are not derived from the
1325 Program, and can be reasonably considered independent and separate
1326 works in themselves, then this License, and its terms, do not
1327 apply to those sections when you distribute them as separate
1328 works. But when you distribute the same sections as part of a
1329 whole which is a work based on the Program, the distribution of
1330 the whole must be on the terms of this License, whose permissions
1331 for other licensees extend to the entire whole, and thus to each
1332 and every part regardless of who wrote it.
1334 Thus, it is not the intent of this section to claim rights or
1335 contest your rights to work written entirely by you; rather, the
1336 intent is to exercise the right to control the distribution of
1337 derivative or collective works based on the Program.
1339 In addition, mere aggregation of another work not based on the
1340 Program with the Program (or with a work based on the Program) on
1341 a volume of a storage or distribution medium does not bring the
1342 other work under the scope of this License.
1344 3. You may copy and distribute the Program (or a work based on it,
1345 under Section 2) in object code or executable form under the terms
1346 of Sections 1 and 2 above provided that you also do one of the
1349 a. Accompany it with the complete corresponding machine-readable
1350 source code, which must be distributed under the terms of
1351 Sections 1 and 2 above on a medium customarily used for
1352 software interchange; or,
1354 b. Accompany it with a written offer, valid for at least three
1355 years, to give any third party, for a charge no more than your
1356 cost of physically performing source distribution, a complete
1357 machine-readable copy of the corresponding source code, to be
1358 distributed under the terms of Sections 1 and 2 above on a
1359 medium customarily used for software interchange; or,
1361 c. Accompany it with the information you received as to the offer
1362 to distribute corresponding source code. (This alternative is
1363 allowed only for noncommercial distribution and only if you
1364 received the program in object code or executable form with
1365 such an offer, in accord with Subsection b above.)
1367 The source code for a work means the preferred form of the work for
1368 making modifications to it. For an executable work, complete
1369 source code means all the source code for all modules it contains,
1370 plus any associated interface definition files, plus the scripts
1371 used to control compilation and installation of the executable.
1372 However, as a special exception, the source code distributed need
1373 not include anything that is normally distributed (in either
1374 source or binary form) with the major components (compiler,
1375 kernel, and so on) of the operating system on which the executable
1376 runs, unless that component itself accompanies the executable.
1378 If distribution of executable or object code is made by offering
1379 access to copy from a designated place, then offering equivalent
1380 access to copy the source code from the same place counts as
1381 distribution of the source code, even though third parties are not
1382 compelled to copy the source along with the object code.
1384 4. You may not copy, modify, sublicense, or distribute the Program
1385 except as expressly provided under this License. Any attempt
1386 otherwise to copy, modify, sublicense or distribute the Program is
1387 void, and will automatically terminate your rights under this
1388 License. However, parties who have received copies, or rights,
1389 from you under this License will not have their licenses
1390 terminated so long as such parties remain in full compliance.
1392 5. You are not required to accept this License, since you have not
1393 signed it. However, nothing else grants you permission to modify
1394 or distribute the Program or its derivative works. These actions
1395 are prohibited by law if you do not accept this License.
1396 Therefore, by modifying or distributing the Program (or any work
1397 based on the Program), you indicate your acceptance of this
1398 License to do so, and all its terms and conditions for copying,
1399 distributing or modifying the Program or works based on it.
1401 6. Each time you redistribute the Program (or any work based on the
1402 Program), the recipient automatically receives a license from the
1403 original licensor to copy, distribute or modify the Program
1404 subject to these terms and conditions. You may not impose any
1405 further restrictions on the recipients' exercise of the rights
1406 granted herein. You are not responsible for enforcing compliance
1407 by third parties to this License.
1409 7. If, as a consequence of a court judgment or allegation of patent
1410 infringement or for any other reason (not limited to patent
1411 issues), conditions are imposed on you (whether by court order,
1412 agreement or otherwise) that contradict the conditions of this
1413 License, they do not excuse you from the conditions of this
1414 License. If you cannot distribute so as to satisfy simultaneously
1415 your obligations under this License and any other pertinent
1416 obligations, then as a consequence you may not distribute the
1417 Program at all. For example, if a patent license would not permit
1418 royalty-free redistribution of the Program by all those who
1419 receive copies directly or indirectly through you, then the only
1420 way you could satisfy both it and this License would be to refrain
1421 entirely from distribution of the Program.
1423 If any portion of this section is held invalid or unenforceable
1424 under any particular circumstance, the balance of the section is
1425 intended to apply and the section as a whole is intended to apply
1426 in other circumstances.
1428 It is not the purpose of this section to induce you to infringe any
1429 patents or other property right claims or to contest validity of
1430 any such claims; this section has the sole purpose of protecting
1431 the integrity of the free software distribution system, which is
1432 implemented by public license practices. Many people have made
1433 generous contributions to the wide range of software distributed
1434 through that system in reliance on consistent application of that
1435 system; it is up to the author/donor to decide if he or she is
1436 willing to distribute software through any other system and a
1437 licensee cannot impose that choice.
1439 This section is intended to make thoroughly clear what is believed
1440 to be a consequence of the rest of this License.
1442 8. If the distribution and/or use of the Program is restricted in
1443 certain countries either by patents or by copyrighted interfaces,
1444 the original copyright holder who places the Program under this
1445 License may add an explicit geographical distribution limitation
1446 excluding those countries, so that distribution is permitted only
1447 in or among countries not thus excluded. In such case, this
1448 License incorporates the limitation as if written in the body of
1451 9. The Free Software Foundation may publish revised and/or new
1452 versions of the General Public License from time to time. Such
1453 new versions will be similar in spirit to the present version, but
1454 may differ in detail to address new problems or concerns.
1456 Each version is given a distinguishing version number. If the
1457 Program specifies a version number of this License which applies
1458 to it and "any later version", you have the option of following
1459 the terms and conditions either of that version or of any later
1460 version published by the Free Software Foundation. If the Program
1461 does not specify a version number of this License, you may choose
1462 any version ever published by the Free Software Foundation.
1464 10. If you wish to incorporate parts of the Program into other free
1465 programs whose distribution conditions are different, write to the
1466 author to ask for permission. For software which is copyrighted
1467 by the Free Software Foundation, write to the Free Software
1468 Foundation; we sometimes make exceptions for this. Our decision
1469 will be guided by the two goals of preserving the free status of
1470 all derivatives of our free software and of promoting the sharing
1471 and reuse of software generally.
1474 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
1475 WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
1476 LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
1477 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
1478 WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
1479 NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1480 FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
1481 QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
1482 PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
1483 SERVICING, REPAIR OR CORRECTION.
1485 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
1486 WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
1487 MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
1488 LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
1489 INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
1490 INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
1491 DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
1492 OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
1493 OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
1494 ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1496 END OF TERMS AND CONDITIONS
1497 Appendix: How to Apply These Terms to Your New Programs
1498 =======================================================
1500 If you develop a new program, and you want it to be of the greatest
1501 possible use to the public, the best way to achieve this is to make it
1502 free software which everyone can redistribute and change under these
1505 To do so, attach the following notices to the program. It is safest
1506 to attach them to the start of each source file to most effectively
1507 convey the exclusion of warranty; and each file should have at least
1508 the "copyright" line and a pointer to where the full notice is found.
1510 ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
1511 Copyright (C) YEAR NAME OF AUTHOR
1513 This program is free software; you can redistribute it and/or modify
1514 it under the terms of the GNU General Public License as published by
1515 the Free Software Foundation; either version 2 of the License, or
1516 (at your option) any later version.
1518 This program is distributed in the hope that it will be useful,
1519 but WITHOUT ANY WARRANTY; without even the implied warranty of
1520 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1521 GNU General Public License for more details.
1523 You should have received a copy of the GNU General Public License
1524 along with this program; if not, write to the Free Software
1525 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
1527 Also add information on how to contact you by electronic and paper
1530 If the program is interactive, make it output a short notice like
1531 this when it starts in an interactive mode:
1533 Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
1534 Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
1536 This is free software, and you are welcome to redistribute it
1537 under certain conditions; type `show c' for details.
1539 The hypothetical commands `show w' and `show c' should show the
1540 appropriate parts of the General Public License. Of course, the
1541 commands you use may be called something other than `show w' and `show
1542 c'; they could even be mouse-clicks or menu items--whatever suits your
1545 You should also get your employer (if you work as a programmer) or
1546 your school, if any, to sign a "copyright disclaimer" for the program,
1547 if necessary. Here is a sample; alter the names:
1549 Yoyodyne, Inc., hereby disclaims all copyright interest in the program
1550 `Gnomovision' (which makes passes at compilers) written by James Hacker.
1552 SIGNATURE OF TY COON, 1 April 1989
1553 Ty Coon, President of Vice
1555 This General Public License does not permit incorporating your
1556 program into proprietary programs. If your program is a subroutine
1557 library, you may consider it more useful to permit linking proprietary
1558 applications with the library. If this is what you want to do, use the
1559 GNU Library General Public License instead of this License.
1562 File: libgomp.info, Node: GNU Free Documentation License, Next: Funding, Prev: Copying, Up: Top
1564 GNU Free Documentation License
1565 ******************************
1567 Version 1.2, November 2002
1569 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
1570 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
1572 Everyone is permitted to copy and distribute verbatim copies
1573 of this license document, but changing it is not allowed.
1577 The purpose of this License is to make a manual, textbook, or other
1578 functional and useful document "free" in the sense of freedom: to
1579 assure everyone the effective freedom to copy and redistribute it,
1580 with or without modifying it, either commercially or
1581 noncommercially. Secondarily, this License preserves for the
1582 author and publisher a way to get credit for their work, while not
1583 being considered responsible for modifications made by others.
1585 This License is a kind of "copyleft", which means that derivative
1586 works of the document must themselves be free in the same sense.
1587 It complements the GNU General Public License, which is a copyleft
1588 license designed for free software.
1590 We have designed this License in order to use it for manuals for
1591 free software, because free software needs free documentation: a
1592 free program should come with manuals providing the same freedoms
1593 that the software does. But this License is not limited to
1594 software manuals; it can be used for any textual work, regardless
1595 of subject matter or whether it is published as a printed book.
1596 We recommend this License principally for works whose purpose is
1597 instruction or reference.
1599 1. APPLICABILITY AND DEFINITIONS
1601 This License applies to any manual or other work, in any medium,
1602 that contains a notice placed by the copyright holder saying it
1603 can be distributed under the terms of this License. Such a notice
1604 grants a world-wide, royalty-free license, unlimited in duration,
1605 to use that work under the conditions stated herein. The
1606 "Document", below, refers to any such manual or work. Any member
1607 of the public is a licensee, and is addressed as "you". You
1608 accept the license if you copy, modify or distribute the work in a
1609 way requiring permission under copyright law.
1611 A "Modified Version" of the Document means any work containing the
1612 Document or a portion of it, either copied verbatim, or with
1613 modifications and/or translated into another language.
1615 A "Secondary Section" is a named appendix or a front-matter section
1616 of the Document that deals exclusively with the relationship of the
1617 publishers or authors of the Document to the Document's overall
1618 subject (or to related matters) and contains nothing that could
1619 fall directly within that overall subject. (Thus, if the Document
1620 is in part a textbook of mathematics, a Secondary Section may not
1621 explain any mathematics.) The relationship could be a matter of
1622 historical connection with the subject or with related matters, or
1623 of legal, commercial, philosophical, ethical or political position
1626 The "Invariant Sections" are certain Secondary Sections whose
1627 titles are designated, as being those of Invariant Sections, in
1628 the notice that says that the Document is released under this
1629 License. If a section does not fit the above definition of
1630 Secondary then it is not allowed to be designated as Invariant.
1631 The Document may contain zero Invariant Sections. If the Document
1632 does not identify any Invariant Sections then there are none.
1634 The "Cover Texts" are certain short passages of text that are
1635 listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1636 that says that the Document is released under this License. A
1637 Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1638 be at most 25 words.
1640 A "Transparent" copy of the Document means a machine-readable copy,
1641 represented in a format whose specification is available to the
1642 general public, that is suitable for revising the document
1643 straightforwardly with generic text editors or (for images
1644 composed of pixels) generic paint programs or (for drawings) some
1645 widely available drawing editor, and that is suitable for input to
1646 text formatters or for automatic translation to a variety of
1647 formats suitable for input to text formatters. A copy made in an
1648 otherwise Transparent file format whose markup, or absence of
1649 markup, has been arranged to thwart or discourage subsequent
1650 modification by readers is not Transparent. An image format is
1651 not Transparent if used for any substantial amount of text. A
1652 copy that is not "Transparent" is called "Opaque".
1654 Examples of suitable formats for Transparent copies include plain
1655 ASCII without markup, Texinfo input format, LaTeX input format,
1656 SGML or XML using a publicly available DTD, and
1657 standard-conforming simple HTML, PostScript or PDF designed for
1658 human modification. Examples of transparent image formats include
1659 PNG, XCF and JPG. Opaque formats include proprietary formats that
1660 can be read and edited only by proprietary word processors, SGML or
1661 XML for which the DTD and/or processing tools are not generally
1662 available, and the machine-generated HTML, PostScript or PDF
1663 produced by some word processors for output purposes only.
1665 The "Title Page" means, for a printed book, the title page itself,
1666 plus such following pages as are needed to hold, legibly, the
1667 material this License requires to appear in the title page. For
1668 works in formats which do not have any title page as such, "Title
1669 Page" means the text near the most prominent appearance of the
1670 work's title, preceding the beginning of the body of the text.
1672 A section "Entitled XYZ" means a named subunit of the Document
1673 whose title either is precisely XYZ or contains XYZ in parentheses
1674 following text that translates XYZ in another language. (Here XYZ
1675 stands for a specific section name mentioned below, such as
1676 "Acknowledgements", "Dedications", "Endorsements", or "History".)
1677 To "Preserve the Title" of such a section when you modify the
1678 Document means that it remains a section "Entitled XYZ" according
1681 The Document may include Warranty Disclaimers next to the notice
1682 which states that this License applies to the Document. These
1683 Warranty Disclaimers are considered to be included by reference in
1684 this License, but only as regards disclaiming warranties: any other
1685 implication that these Warranty Disclaimers may have is void and
1686 has no effect on the meaning of this License.
1690 You may copy and distribute the Document in any medium, either
1691 commercially or noncommercially, provided that this License, the
1692 copyright notices, and the license notice saying this License
1693 applies to the Document are reproduced in all copies, and that you
1694 add no other conditions whatsoever to those of this License. You
1695 may not use technical measures to obstruct or control the reading
1696 or further copying of the copies you make or distribute. However,
1697 you may accept compensation in exchange for copies. If you
1698 distribute a large enough number of copies you must also follow
1699 the conditions in section 3.
1701 You may also lend copies, under the same conditions stated above,
1702 and you may publicly display copies.
1704 3. COPYING IN QUANTITY
1706 If you publish printed copies (or copies in media that commonly
1707 have printed covers) of the Document, numbering more than 100, and
1708 the Document's license notice requires Cover Texts, you must
1709 enclose the copies in covers that carry, clearly and legibly, all
1710 these Cover Texts: Front-Cover Texts on the front cover, and
1711 Back-Cover Texts on the back cover. Both covers must also clearly
1712 and legibly identify you as the publisher of these copies. The
1713 front cover must present the full title with all words of the
1714 title equally prominent and visible. You may add other material
1715 on the covers in addition. Copying with changes limited to the
1716 covers, as long as they preserve the title of the Document and
1717 satisfy these conditions, can be treated as verbatim copying in
1720 If the required texts for either cover are too voluminous to fit
1721 legibly, you should put the first ones listed (as many as fit
1722 reasonably) on the actual cover, and continue the rest onto
1725 If you publish or distribute Opaque copies of the Document
1726 numbering more than 100, you must either include a
1727 machine-readable Transparent copy along with each Opaque copy, or
1728 state in or with each Opaque copy a computer-network location from
1729 which the general network-using public has access to download
1730 using public-standard network protocols a complete Transparent
1731 copy of the Document, free of added material. If you use the
1732 latter option, you must take reasonably prudent steps, when you
1733 begin distribution of Opaque copies in quantity, to ensure that
1734 this Transparent copy will remain thus accessible at the stated
1735 location until at least one year after the last time you
1736 distribute an Opaque copy (directly or through your agents or
1737 retailers) of that edition to the public.
1739 It is requested, but not required, that you contact the authors of
1740 the Document well before redistributing any large number of
1741 copies, to give them a chance to provide you with an updated
1742 version of the Document.
1746 You may copy and distribute a Modified Version of the Document
1747 under the conditions of sections 2 and 3 above, provided that you
1748 release the Modified Version under precisely this License, with
1749 the Modified Version filling the role of the Document, thus
1750 licensing distribution and modification of the Modified Version to
1751 whoever possesses a copy of it. In addition, you must do these
1752 things in the Modified Version:
1754 A. Use in the Title Page (and on the covers, if any) a title
1755 distinct from that of the Document, and from those of
1756 previous versions (which should, if there were any, be listed
1757 in the History section of the Document). You may use the
1758 same title as a previous version if the original publisher of
1759 that version gives permission.
1761 B. List on the Title Page, as authors, one or more persons or
1762 entities responsible for authorship of the modifications in
1763 the Modified Version, together with at least five of the
1764 principal authors of the Document (all of its principal
1765 authors, if it has fewer than five), unless they release you
1766 from this requirement.
1768 C. State on the Title page the name of the publisher of the
1769 Modified Version, as the publisher.
1771 D. Preserve all the copyright notices of the Document.
1773 E. Add an appropriate copyright notice for your modifications
1774 adjacent to the other copyright notices.
1776 F. Include, immediately after the copyright notices, a license
1777 notice giving the public permission to use the Modified
1778 Version under the terms of this License, in the form shown in
1781 G. Preserve in that license notice the full lists of Invariant
1782 Sections and required Cover Texts given in the Document's
1785 H. Include an unaltered copy of this License.
1787 I. Preserve the section Entitled "History", Preserve its Title,
1788 and add to it an item stating at least the title, year, new
1789 authors, and publisher of the Modified Version as given on
1790 the Title Page. If there is no section Entitled "History" in
1791 the Document, create one stating the title, year, authors,
1792 and publisher of the Document as given on its Title Page,
1793 then add an item describing the Modified Version as stated in
1794 the previous sentence.
1796 J. Preserve the network location, if any, given in the Document
1797 for public access to a Transparent copy of the Document, and
1798 likewise the network locations given in the Document for
1799 previous versions it was based on. These may be placed in
1800 the "History" section. You may omit a network location for a
1801 work that was published at least four years before the
1802 Document itself, or if the original publisher of the version
1803 it refers to gives permission.
1805 K. For any section Entitled "Acknowledgements" or "Dedications",
1806 Preserve the Title of the section, and preserve in the
1807 section all the substance and tone of each of the contributor
1808 acknowledgements and/or dedications given therein.
1810 L. Preserve all the Invariant Sections of the Document,
1811 unaltered in their text and in their titles. Section numbers
1812 or the equivalent are not considered part of the section
1815 M. Delete any section Entitled "Endorsements". Such a section
1816 may not be included in the Modified Version.
1818 N. Do not retitle any existing section to be Entitled
1819 "Endorsements" or to conflict in title with any Invariant
1822 O. Preserve any Warranty Disclaimers.
1824 If the Modified Version includes new front-matter sections or
1825 appendices that qualify as Secondary Sections and contain no
1826 material copied from the Document, you may at your option
1827 designate some or all of these sections as invariant. To do this,
1828 add their titles to the list of Invariant Sections in the Modified
1829 Version's license notice. These titles must be distinct from any
1830 other section titles.
1832 You may add a section Entitled "Endorsements", provided it contains
1833 nothing but endorsements of your Modified Version by various
1834 parties--for example, statements of peer review or that the text
1835 has been approved by an organization as the authoritative
1836 definition of a standard.
1838 You may add a passage of up to five words as a Front-Cover Text,
1839 and a passage of up to 25 words as a Back-Cover Text, to the end
1840 of the list of Cover Texts in the Modified Version. Only one
1841 passage of Front-Cover Text and one of Back-Cover Text may be
1842 added by (or through arrangements made by) any one entity. If the
1843 Document already includes a cover text for the same cover,
1844 previously added by you or by arrangement made by the same entity
1845 you are acting on behalf of, you may not add another; but you may
1846 replace the old one, on explicit permission from the previous
1847 publisher that added the old one.
1849 The author(s) and publisher(s) of the Document do not by this
1850 License give permission to use their names for publicity for or to
1851 assert or imply endorsement of any Modified Version.
1853 5. COMBINING DOCUMENTS
1855 You may combine the Document with other documents released under
1856 this License, under the terms defined in section 4 above for
1857 modified versions, provided that you include in the combination
1858 all of the Invariant Sections of all of the original documents,
1859 unmodified, and list them all as Invariant Sections of your
1860 combined work in its license notice, and that you preserve all
1861 their Warranty Disclaimers.
1863 The combined work need only contain one copy of this License, and
1864 multiple identical Invariant Sections may be replaced with a single
1865 copy. If there are multiple Invariant Sections with the same name
1866 but different contents, make the title of each such section unique
1867 by adding at the end of it, in parentheses, the name of the
1868 original author or publisher of that section if known, or else a
1869 unique number. Make the same adjustment to the section titles in
1870 the list of Invariant Sections in the license notice of the
1873 In the combination, you must combine any sections Entitled
1874 "History" in the various original documents, forming one section
1875 Entitled "History"; likewise combine any sections Entitled
1876 "Acknowledgements", and any sections Entitled "Dedications". You
1877 must delete all sections Entitled "Endorsements."
1879 6. COLLECTIONS OF DOCUMENTS
1881 You may make a collection consisting of the Document and other
1882 documents released under this License, and replace the individual
1883 copies of this License in the various documents with a single copy
1884 that is included in the collection, provided that you follow the
1885 rules of this License for verbatim copying of each of the
1886 documents in all other respects.
1888 You may extract a single document from such a collection, and
1889 distribute it individually under this License, provided you insert
1890 a copy of this License into the extracted document, and follow
1891 this License in all other respects regarding verbatim copying of
1894 7. AGGREGATION WITH INDEPENDENT WORKS
1896 A compilation of the Document or its derivatives with other
1897 separate and independent documents or works, in or on a volume of
1898 a storage or distribution medium, is called an "aggregate" if the
1899 copyright resulting from the compilation is not used to limit the
1900 legal rights of the compilation's users beyond what the individual
1901 works permit. When the Document is included in an aggregate, this
1902 License does not apply to the other works in the aggregate which
1903 are not themselves derivative works of the Document.
1905 If the Cover Text requirement of section 3 is applicable to these
1906 copies of the Document, then if the Document is less than one half
1907 of the entire aggregate, the Document's Cover Texts may be placed
1908 on covers that bracket the Document within the aggregate, or the
1909 electronic equivalent of covers if the Document is in electronic
1910 form. Otherwise they must appear on printed covers that bracket
1911 the whole aggregate.
1915 Translation is considered a kind of modification, so you may
1916 distribute translations of the Document under the terms of section
1917 4. Replacing Invariant Sections with translations requires special
1918 permission from their copyright holders, but you may include
1919 translations of some or all Invariant Sections in addition to the
1920 original versions of these Invariant Sections. You may include a
1921 translation of this License, and all the license notices in the
1922 Document, and any Warranty Disclaimers, provided that you also
1923 include the original English version of this License and the
1924 original versions of those notices and disclaimers. In case of a
1925 disagreement between the translation and the original version of
1926 this License or a notice or disclaimer, the original version will
1929 If a section in the Document is Entitled "Acknowledgements",
1930 "Dedications", or "History", the requirement (section 4) to
1931 Preserve its Title (section 1) will typically require changing the
1936 You may not copy, modify, sublicense, or distribute the Document
1937 except as expressly provided for under this License. Any other
1938 attempt to copy, modify, sublicense or distribute the Document is
1939 void, and will automatically terminate your rights under this
1940 License. However, parties who have received copies, or rights,
1941 from you under this License will not have their licenses
1942 terminated so long as such parties remain in full compliance.
1944 10. FUTURE REVISIONS OF THIS LICENSE
1946 The Free Software Foundation may publish new, revised versions of
1947 the GNU Free Documentation License from time to time. Such new
1948 versions will be similar in spirit to the present version, but may
1949 differ in detail to address new problems or concerns. See
1950 `http://www.gnu.org/copyleft/'.
1952 Each version of the License is given a distinguishing version
1953 number. If the Document specifies that a particular numbered
1954 version of this License "or any later version" applies to it, you
1955 have the option of following the terms and conditions either of
1956 that specified version or of any later version that has been
1957 published (not as a draft) by the Free Software Foundation. If
1958 the Document does not specify a version number of this License,
1959 you may choose any version ever published (not as a draft) by the
1960 Free Software Foundation.
1962 ADDENDUM: How to use this License for your documents
1963 ====================================================
1965 To use this License in a document you have written, include a copy of
1966 the License in the document and put the following copyright and license
1967 notices just after the title page:
1969 Copyright (C) YEAR YOUR NAME.
1970 Permission is granted to copy, distribute and/or modify this document
1971 under the terms of the GNU Free Documentation License, Version 1.2
1972 or any later version published by the Free Software Foundation;
1973 with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
1974 Texts. A copy of the license is included in the section entitled ``GNU
1975 Free Documentation License''.
1977 If you have Invariant Sections, Front-Cover Texts and Back-Cover
1978 Texts, replace the "with...Texts." line with this:
1980 with the Invariant Sections being LIST THEIR TITLES, with
1981 the Front-Cover Texts being LIST, and with the Back-Cover Texts
1984 If you have Invariant Sections without Cover Texts, or some other
1985 combination of the three, merge those two alternatives to suit the
1988 If your document contains nontrivial examples of program code, we
1989 recommend releasing these examples in parallel under your choice of
1990 free software license, such as the GNU General Public License, to
1991 permit their use in free software.
1994 File: libgomp.info, Node: Funding, Next: Index, Prev: GNU Free Documentation License, Up: Top
1996 Funding Free Software
1997 *********************
1999 If you want to have more free software a few years from now, it makes
2000 sense for you to help encourage people to contribute funds for its
2001 development. The most effective approach known is to encourage
2002 commercial redistributors to donate.
2004 Users of free software systems can boost the pace of development by
2005 encouraging for-a-fee distributors to donate part of their selling price
2006 to free software developers--the Free Software Foundation, and others.
2008 The way to convince distributors to do this is to demand it and
2009 expect it from them. So when you compare distributors, judge them
2010 partly by how much they give to free software development. Show
2011 distributors they must compete to be the one who gives the most.
2013 To make this approach work, you must insist on numbers that you can
2014 compare, such as, "We will donate ten dollars to the Frobnitz project
2015 for each disk sold." Don't be satisfied with a vague promise, such as
2016 "A portion of the profits are donated," since it doesn't give a basis
2019 Even a precise fraction "of the profits from this disk" is not very
2020 meaningful, since creative accounting and unrelated business decisions
2021 can greatly alter what fraction of the sales price counts as profit.
2022 If the price you pay is $50, ten percent of the profit is probably less
2023 than a dollar; it might be a few cents, or nothing at all.
2025 Some redistributors do development work themselves. This is useful
2026 too; but to keep everyone honest, you need to inquire how much they do,
2027 and what kind. Some kinds of development make much more long-term
2028 difference than others. For example, maintaining a separate version of
2029 a program contributes very little; maintaining the standard version of a
2030 program for the whole community contributes much. Easy new ports
2031 contribute little, since someone else would surely do them; difficult
2032 ports such as adding a new CPU to the GNU Compiler Collection
2033 contribute more; major new features or packages contribute the most.
2035 By establishing the idea that supporting further development is "the
2036 proper thing to do" when distributing free software for a fee, we can
2037 assure a steady flow of resources into making more free software.
2039 Copyright (C) 1994 Free Software Foundation, Inc.
2040 Verbatim copying and redistribution of this section is permitted
2041 without royalty; alteration is not permitted.
2044 File: libgomp.info, Node: Index, Prev: Funding, Up: Top
2052 * Environment Variable <1>: GOMP_STACKSIZE. (line 6)
2053 * Environment Variable <2>: GOMP_CPU_AFFINITY. (line 6)
2054 * Environment Variable <3>: OMP_NESTED. (line 6)
2055 * Environment Variable <4>: OMP_NUM_THREADS. (line 6)
2056 * Environment Variable <5>: OMP_DYNAMIC. (line 6)
2057 * Environment Variable: OMP_SCHEDULE. (line 6)
2058 * FDL, GNU Free Documentation License: GNU Free Documentation License.
2060 * Implementation specific setting <1>: OMP_NUM_THREADS. (line 6)
2061 * Implementation specific setting <2>: GOMP_STACKSIZE. (line 6)
2062 * Implementation specific setting <3>: OMP_SCHEDULE. (line 6)
2063 * Implementation specific setting <4>: OMP_NESTED. (line 6)
2064 * Implementation specific setting: OMP_DYNAMIC. (line 6)
2065 * Introduction: Top. (line 6)
2071 Node: Enabling OpenMP
\x7f3273
2072 Node: Runtime Library Routines
\x7f4058
2073 Node: omp_get_dynamic
\x7f5759
2074 Node: omp_get_max_threads
\x7f6603
2075 Node: omp_get_nested
\x7f7259
2076 Node: omp_get_num_procs
\x7f8167
2077 Node: omp_get_num_threads
\x7f8681
2078 Node: omp_get_thread_num
\x7f9753
2079 Node: omp_in_parallel
\x7f10542
2080 Node: omp_set_dynamic
\x7f11186
2081 Node: omp_set_nested
\x7f12009
2082 Node: omp_set_num_threads
\x7f12874
2083 Node: omp_init_lock
\x7f13709
2084 Node: omp_set_lock
\x7f14362
2085 Node: omp_test_lock
\x7f15211
2086 Node: omp_unset_lock
\x7f16237
2087 Node: omp_destroy_lock
\x7f17163
2088 Node: omp_init_nest_lock
\x7f17833
2089 Node: omp_set_nest_lock
\x7f18565
2090 Node: omp_test_nest_lock
\x7f19474
2091 Node: omp_unset_nest_lock
\x7f20572
2092 Node: omp_destroy_nest_lock
\x7f21581
2093 Node: omp_get_wtick
\x7f22329
2094 Node: omp_get_wtime
\x7f22916
2095 Node: Environment Variables
\x7f23699
2096 Node: OMP_DYNAMIC
\x7f24412
2097 Node: OMP_NESTED
\x7f24969
2098 Node: OMP_NUM_THREADS
\x7f25563
2099 Node: OMP_SCHEDULE
\x7f26135
2100 Node: GOMP_CPU_AFFINITY
\x7f26783
2101 Node: GOMP_STACKSIZE
\x7f28264
2102 Node: The libgomp ABI
\x7f29038
2103 Node: Implementing MASTER construct
\x7f29836
2104 Node: Implementing CRITICAL construct
\x7f30249
2105 Node: Implementing ATOMIC construct
\x7f30997
2106 Node: Implementing FLUSH construct
\x7f31478
2107 Node: Implementing BARRIER construct
\x7f31749
2108 Node: Implementing THREADPRIVATE construct
\x7f32018
2109 Node: Implementing PRIVATE clause
\x7f32670
2110 Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses
\x7f33251
2111 Node: Implementing REDUCTION clause
\x7f34566
2112 Node: Implementing PARALLEL construct
\x7f35122
2113 Node: Implementing FOR construct
\x7f36379
2114 Node: Implementing ORDERED construct
\x7f38377
2115 Node: Implementing SECTIONS construct
\x7f38683
2116 Node: Implementing SINGLE construct
\x7f39449
2117 Node: Reporting Bugs
\x7f40111
2118 Node: Copying
\x7f40419
2119 Node: GNU Free Documentation License
\x7f59629
2120 Node: Funding
\x7f82040
2121 Node: Index
\x7f84557