WIP: fetch and make autoconf & friends
[msysgit.git] / mingw / info / libgomp.info
blobbbe1b98babf097285d19ddf42a60a168f10a4625
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:
16    A GNU Manual
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
25 START-INFO-DIR-ENTRY
26 * libgomp: (libgomp).                    GNU OpenMP runtime library
27 END-INFO-DIR-ENTRY
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:
47    A GNU Manual
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.
55 \x1f
56 File: libgomp.info,  Node: Top,  Next: Enabling OpenMP,  Up: (dir)
58 Introduction
59 ************
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++
64 and Fortran.
66 * Menu:
68 * Enabling OpenMP::            How to enable OpenMP for your applications.
69 * Runtime Library Routines::   The OpenMP runtime application programming
70                                interface.
71 * Environment Variables::      Influencing runtime behavior with environment
72                                variables.
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
80                                software.
81 * Index::                      Index of this documentation.
83 \x1f
84 File: libgomp.info,  Node: Enabling OpenMP,  Next: Runtime Library Routines,  Prev: Top,  Up: Top
86 1 Enabling OpenMP
87 *****************
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.
101 \x1f
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.
112 * Menu:
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.
127 * Menu:
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.
142 * Menu:
144 * omp_get_wtick::            Get timer precision.
145 * omp_get_wtime::            Elapsed wall clock time.
147 \x1f
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 =============================================
153 _Description_:
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
160      default.
162 _C/C++_:
163      _Prototype_:  `int omp_get_dynamic();'
165 _Fortran_:
166      _Interface_:  `logical function omp_get_dynamic()'
168 _See also_:
169      *Note omp_set_dynamic::, *Note OMP_DYNAMIC::
171 _Reference_:
172      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.8.
174 \x1f
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 =====================================================
180 _Description_:
181      Return the maximum number of threads used for parallel regions
182      that do not use the clause `num_threads'.
184 _C/C++_:
185      _Prototype_:  `int omp_get_max_threads();'
187 _Fortran_:
188      _Interface_:  `integer function omp_get_max_threads()'
190 _See also_:
191      *Note omp_set_num_threads::, *Note omp_set_dynamic::
193 _Reference_:
194      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.3.
196 \x1f
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 ==============================================
202 _Description_:
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
210      disabled by default.
212 _C/C++_:
213      _Prototype_:  `int omp_get_nested();'
215 _Fortran_:
216      _Interface_:  `integer function omp_get_nested()'
218 _See also_:
219      *Note omp_set_nested::, *Note OMP_NESTED::
221 _Reference_:
222      OpenMP specifications v2.5 (http://www.openmp.org/), section
223      3.2.10.
225 \x1f
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 =====================================================
231 _Description_:
232      Returns the number of processors online.
234 _C/C++_:
235      _Prototype_:  `int omp_get_num_procs();'
237 _Fortran_:
238      _Interface_:  `integer function omp_get_num_procs()'
240 _Reference_:
241      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.5.
243 \x1f
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 ===================================================
249 _Description_:
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
258      online is used.
260 _C/C++_:
261      _Prototype_:  `int omp_get_num_threads();'
263 _Fortran_:
264      _Interface_:  `integer function omp_get_num_threads()'
266 _See also_:
267      *Note omp_get_max_threads::, *Note omp_set_num_threads::, *Note
268      OMP_NUM_THREADS::
270 _Reference_:
271      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.2.
273 \x1f
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 ============================================
279 _Description_:
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
284      always 0.
286 _C/C++_:
287      _Prototype_:  `int omp_get_thread_num();'
289 _Fortran_:
290      _Interface_:  `integer function omp_get_thread_num()'
292 _See also_:
293      *Note omp_get_max_threads::
295 _Reference_:
296      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.4.
298 \x1f
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 ===========================================================
304 _Description_:
305      This function returns `true' if currently running in parallel,
306      `false' otherwise. Here, `true' and `false' represent their
307      language-specific counterparts.
309 _C/C++_:
310      _Prototype_:  `int omp_in_parallel();'
312 _Fortran_:
313      _Interface_:  `logical function omp_in_parallel()'
315 _Reference_:
316      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.6.
318 \x1f
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 ====================================================
324 _Description_:
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.
330 _C/C++_:
331      _Prototype_:  `void omp_set_dynamic(int);'
333 _Fortran_:
334      _Interface_:  `subroutine omp_set_dynamic(set)'
335                    `integer, intent(in) :: set'
337 _See also_:
338      *Note OMP_DYNAMIC::, *Note omp_get_dynamic::
340 _Reference_:
341      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.7.
343 \x1f
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 =============================================================
349 _Description_:
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.
355 _C/C++_:
356      _Prototype_:  `void omp_set_dynamic(int);'
358 _Fortran_:
359      _Interface_:  `subroutine omp_set_dynamic(set)'
360                    `integer, intent(in) :: set'
362 _See also_:
363      *Note OMP_NESTED::, *Note omp_get_nested::
365 _Reference_:
366      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.9.
368 \x1f
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 ======================================================
374 _Description_:
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.
379 _C/C++_:
380      _Prototype_:  `void omp_set_num_threads(int);'
382 _Fortran_:
383      _Interface_:  `subroutine omp_set_num_threads(set)'
384                    `integer, intent(in) :: set'
386 _See also_:
387      *Note OMP_NUM_THREADS::, *Note omp_get_num_threads::, *Note
388      omp_get_max_threads::
390 _Reference_:
391      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.1.
393 \x1f
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 =============================================
399 _Description_:
400      Initialize a simple lock. After initialization, the lock is in an
401      unlocked state.
403 _C/C++_:
404      _Prototype_:  `void omp_init_lock(omp_lock_t *lock);'
406 _Fortran_:
407      _Interface_:  `subroutine omp_init_lock(lock)'
408                    `integer(omp_lock_kind), intent(out) :: lock'
410 _See also_:
411      *Note omp_destroy_lock::
413 _Reference_:
414      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.1.
416 \x1f
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 ==================================================
422 _Description_:
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.
428 _C/C++_:
429      _Prototype_:  `void omp_set_lock(omp_lock_t *lock);'
431 _Fortran_:
432      _Interface_:  `subroutine omp_set_lock(lock)'
433                    `integer(omp_lock_kind), intent(out) :: lock'
435 _See also_:
436      *Note omp_init_lock::, *Note omp_test_lock::, *Note
437      omp_unset_lock::
439 _Reference_:
440      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.3.
442 \x1f
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 ============================================================
448 _Description_:
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.
455 _C/C++_:
456      _Prototype_:  `int omp_test_lock(omp_lock_t *lock);'
458 _Fortran_:
459      _Interface_:  `subroutine omp_test_lock(lock)'
460                    `logical(omp_logical_kind) :: omp_test_lock'
461                    `integer(omp_lock_kind), intent(out) :: lock'
463 _See also_:
464      *Note omp_init_lock::, *Note omp_set_lock::, *Note omp_set_lock::
466 _Reference_:
467      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.5.
469 \x1f
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 =========================================
475 _Description_:
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
481      itself.
483 _C/C++_:
484      _Prototype_:  `void omp_unset_lock(omp_lock_t *lock);'
486 _Fortran_:
487      _Interface_:  `subroutine omp_unset_lock(lock)'
488                    `integer(omp_lock_kind), intent(out) :: lock'
490 _See also_:
491      *Note omp_set_lock::, *Note omp_test_lock::
493 _Reference_:
494      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.4.
496 \x1f
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 =============================================
502 _Description_:
503      Destroy a simple lock. In order to be destroyed, a simple lock
504      must be in the unlocked state.
506 _C/C++_:
507      _Prototype_:  `void omp_destroy_lock(omp_lock_t *);'
509 _Fortran_:
510      _Interface_:  `subroutine omp_destroy_lock(lock)'
511                    `integer(omp_lock_kind), intent(inout) :: lock'
513 _See also_:
514      *Note omp_init_lock::
516 _Reference_:
517      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.2.
519 \x1f
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 ==================================================
525 _Description_:
526      Initialize a nested lock. After initialization, the lock is in an
527      unlocked state and the nesting count is set to zero.
529 _C/C++_:
530      _Prototype_:  `void omp_init_nest_lock(omp_nest_lock_t *lock);'
532 _Fortran_:
533      _Interface_:  `subroutine omp_init_nest_lock(lock)'
534                    `integer(omp_nest_lock_kind), intent(out) :: lock'
536 _See also_:
537      *Note omp_destroy_nest_lock::
539 _Reference_:
540      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.1.
542 \x1f
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 =======================================================
548 _Description_:
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.
554 _C/C++_:
555      _Prototype_:  `void omp_set_nest_lock(omp_nest_lock_t *lock);'
557 _Fortran_:
558      _Interface_:  `subroutine omp_set_nest_lock(lock)'
559                    `integer(omp_nest_lock_kind), intent(out) :: lock'
561 _See also_:
562      *Note omp_init_nest_lock::, *Note omp_unset_nest_lock::
564 _Reference_:
565      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.3.
567 \x1f
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 =================================================================
573 _Description_:
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
579      value equals zero.
581 _C/C++_:
582      _Prototype_:  `int omp_test_nest_lock(omp_nest_lock_t *lock);'
584 _Fortran_:
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'
589 _See also_:
590      *Note omp_init_lock::, *Note omp_set_lock::, *Note omp_set_lock::
592 _Reference_:
593      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.5.
595 \x1f
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 ==============================================
601 _Description_:
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
608      itself.
610 _C/C++_:
611      _Prototype_:  `void omp_unset_nest_lock(omp_nest_lock_t *lock);'
613 _Fortran_:
614      _Interface_:  `subroutine omp_unset_nest_lock(lock)'
615                    `integer(omp_nest_lock_kind), intent(out) :: lock'
617 _See also_:
618      *Note omp_set_nest_lock::
620 _Reference_:
621      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.4.
623 \x1f
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 ==================================================
629 _Description_:
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
632      zero.
634 _C/C++_:
635      _Prototype_:  `void omp_destroy_nest_lock(omp_nest_lock_t *);'
637 _Fortran_:
638      _Interface_:  `subroutine omp_destroy_nest_lock(lock)'
639                    `integer(omp_nest_lock_kind), intent(inout) :: lock'
641 _See also_:
642      *Note omp_init_lock::
644 _Reference_:
645      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.2.
647 \x1f
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 ==========================================
653 _Description_:
654      Gets the timer precision, i.e., the number of seconds between two
655      successive clock ticks.
657 _C/C++_:
658      _Prototype_:  `double omp_get_wtick();'
660 _Fortran_:
661      _Interface_:  `double precision function omp_get_wtick()'
663 _See also_:
664      *Note omp_get_wtime::
666 _Reference_:
667      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.4.2.
669 \x1f
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 ==============================================
675 _Description_:
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.
682 _C/C++_:
683      _Prototype_:  `double omp_get_wtime();'
685 _Fortran_:
686      _Interface_:  `double precision function omp_get_wtime()'
688 _See also_:
689      *Note omp_get_wtick::
691 _Reference_:
692      OpenMP specifications v2.5 (http://www.openmp.org/), section 3.4.1.
694 \x1f
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
703 extensions.
705 * Menu:
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
714 \x1f
715 File: libgomp.info,  Node: OMP_DYNAMIC,  Next: OMP_NESTED,  Up: Environment Variables
717 3.1 `OMP_DYNAMIC' - Dynamic adjustment of threads
718 =================================================
720 _Description_:
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
724      default.
726 _See also_:
727      *Note omp_set_dynamic::
729 _Reference_:
730      OpenMP specifications v2.5 (http://www.openmp.org/), section 4.3
732 \x1f
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 ==========================================
738 _Description_:
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.
744 _See also_:
745      *Note omp_set_nested::
747 _Reference_:
748      OpenMP specifications v2.5 (http://www.openmp.org/), section 4.4
750 \x1f
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 ==============================================================
756 _Description_:
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.
761 _See also_:
762      *Note omp_set_num_threads::
764 _Reference_:
765      OpenMP specifications v2.5 (http://www.openmp.org/), section 4.2
767 \x1f
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 ==============================================
773 _Description_:
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.
780 _Reference_:
781      OpenMP specifications v2.5 (http://www.openmp.org/), sections
782      2.5.1 and 4.1
784 \x1f
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 =======================================================
790 _Description_:
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.
813 \x1f
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 ====================================================
819 _Description_:
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
825      dependent.
827 _Reference_:
828      GCC Patches Mailinglist
829      (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00493.html), GCC
830      Patches Mailinglist
831      (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00496.html)
833 \x1f
834 File: libgomp.info,  Node: The libgomp ABI,  Next: Reporting Bugs,  Prev: Environment Variables,  Up: Top
836 4 The libgomp ABI
837 *****************
839 The following sections present notes on the external ABI as presented
840 by libgomp. Only maintainers should need them.
842 * Menu:
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::
859 \x1f
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)
866        block
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...
872 \x1f
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
884 application.
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.
894 \x1f
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.
910 \x1f
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.
918 \x1f
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)
926 \x1f
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
935 to .ctors.
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.
941 \x1f
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
949 subfunction.
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.
955 \x1f
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
965 local variable.
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)
972        body;
974    which becomes
976      {
977        int x = x, y;
979        // for stuff
981        if (i == n)
982          y = y;
983      }
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
988 variables.
990    COPYPRIVATE would work the same way, except the structure broadcast
991 would have to happen via SINGLE machinery instead.
993 \x1f
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
1003 collect the values.
1005 \x1f
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
1012        {
1013          body;
1014        }
1016    becomes
1018        void subfunction (void *data)
1019        {
1020          use data;
1021          body;
1022        }
1024        setup 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
1035 FIRSTPRIVATE et al.
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.
1049 \x1f
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++)
1057          body;
1059    becomes
1061        void subfunction (void *data)
1062        {
1063          long _s0, _e0;
1064          while (GOMP_loop_static_next (&_s0, &_e0))
1065          {
1066            long _e1 = _e0, i;
1067            for (i = _s0; i < _e1; i++)
1068              body;
1069          }
1070          GOMP_loop_end_nowait ();
1071        }
1073        GOMP_parallel_loop_static (subfunction, NULL, 0, lb, ub+1, 1, 0);
1074        subfunction (NULL);
1075        GOMP_parallel_end ();
1077        #pragma omp for schedule(runtime)
1078        for (i = 0; i < n; i++)
1079          body;
1081    becomes
1083        {
1084          long i, _s0, _e0;
1085          if (GOMP_loop_runtime_start (0, n, 1, &_s0, &_e0))
1086            do {
1087              long _e1 = _e0;
1088              for (i = _s0, i < _e0; i++)
1089                body;
1090            } while (GOMP_loop_runtime_next (&_s0, _&e0));
1091          GOMP_loop_end ();
1092        }
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
1106 these routines.
1108    There are separate routines for handling loops with an ORDERED
1109 clause.  Bookkeeping for that is non-trivial...
1111 \x1f
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)
1120 \x1f
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 ====================================
1126 A block as
1128        #pragma omp sections
1129        {
1130          #pragma omp section
1131          stmt1;
1132          #pragma omp section
1133          stmt2;
1134          #pragma omp section
1135          stmt3;
1136        }
1138    becomes
1140        for (i = GOMP_sections_start (3); i != 0; i = GOMP_sections_next ())
1141          switch (i)
1142            {
1143            case 1:
1144              stmt1;
1145              break;
1146            case 2:
1147              stmt2;
1148              break;
1149            case 3:
1150              stmt3;
1151              break;
1152            }
1153        GOMP_barrier ();
1155 \x1f
1156 File: libgomp.info,  Node: Implementing SINGLE construct,  Prev: Implementing SECTIONS construct,  Up: The libgomp ABI
1158 4.14 Implementing SINGLE construct
1159 ==================================
1161 A block like
1163        #pragma omp single
1164        {
1165          body;
1166        }
1168    becomes
1170        if (GOMP_single_start ())
1171          body;
1172        GOMP_barrier ();
1174    while
1176        #pragma omp single copyprivate(x)
1177          body;
1179    becomes
1181        datap = GOMP_single_copy_start ();
1182        if (datap == NULL)
1183          {
1184            body;
1185            data.x = x;
1186            GOMP_single_copy_end (&data);
1187          }
1188        else
1189          x = datap->x;
1190        GOMP_barrier ();
1192 \x1f
1193 File: libgomp.info,  Node: Reporting Bugs,  Next: Copying,  Prev: The libgomp ABI,  Up: Top
1195 5 Reporting Bugs
1196 ****************
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.
1202 \x1f
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.
1216 Preamble
1217 ========
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
1227 your programs, too.
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
1245 rights.
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
1296      for a fee.
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
1347      following:
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
1449      this License.
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.
1473                                 NO WARRANTY
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
1503 terms.
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
1528 mail.
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
1535      type `show w'.
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
1543 program.
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.
1561 \x1f
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.
1575   0. PREAMBLE
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
1624      regarding them.
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
1679      to this definition.
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.
1688   2. VERBATIM COPYING
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
1718      other respects.
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
1723      adjacent pages.
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.
1744   4. MODIFICATIONS
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
1779           the Addendum below.
1781        G. Preserve in that license notice the full lists of Invariant
1782           Sections and required Cover Texts given in the Document's
1783           license notice.
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
1813           titles.
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
1820           Section.
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
1871      combined work.
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
1892      that document.
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.
1913   8. TRANSLATION
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
1927      prevail.
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
1932      actual title.
1934   9. TERMINATION
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
1982          being LIST.
1984    If you have Invariant Sections without Cover Texts, or some other
1985 combination of the three, merge those two alternatives to suit the
1986 situation.
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.
1993 \x1f
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
2017 for comparison.
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.
2043 \x1f
2044 File: libgomp.info,  Node: Index,  Prev: Funding,  Up: Top
2046 Index
2047 *****
2049 \0\b[index\0\b]
2050 * Menu:
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.
2059                                                                 (line 6)
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)
2068 \x1f
2069 Tag Table:
2070 Node: Top\x7f2079
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
2122 \x1f
2123 End Tag Table