xref: /openbsd/gnu/gcc/libgomp/libgomp.info (revision 274d7c50)
1This is libgomp.info, produced by makeinfo version 4.8 from
2/scratch/mitchell/gcc-releases/gcc-4.2.1/gcc-4.2.1/libgomp/libgomp.texi.
3
4   Copyright (C) 2006 Free Software Foundation, Inc.
5
6   Permission is granted to copy, distribute and/or modify this document
7under the terms of the GNU Free Documentation License, Version 1.1 or
8any later version published by the Free Software Foundation; with the
9Invariant Sections being "GNU General Public License" and "Funding Free
10Software", the Front-Cover texts being (a) (see below), and with the
11Back-Cover Texts being (b) (see below).  A copy of the license is
12included in the section entitled "GNU Free Documentation License".
13
14   (a) The FSF's Front-Cover Text is:
15
16   A GNU Manual
17
18   (b) The FSF's Back-Cover Text is:
19
20   You have freedom to copy and modify this GNU Manual, like GNU
21software.  Copies published by the Free Software Foundation raise
22funds for GNU development.
23
24INFO-DIR-SECTION GNU Libraries
25START-INFO-DIR-ENTRY
26* libgomp: (libgomp).                    GNU OpenMP runtime library
27END-INFO-DIR-ENTRY
28
29   This manual documents the GNU implementation of the OpenMP API for
30multi-platform shared-memory parallel programming in C/C++ and Fortran.
31
32   Published by the Free Software Foundation 51 Franklin Street, Fifth
33Floor Boston, MA 02110-1301 USA
34
35   Copyright (C) 2006 Free Software Foundation, Inc.
36
37   Permission is granted to copy, distribute and/or modify this document
38under the terms of the GNU Free Documentation License, Version 1.1 or
39any later version published by the Free Software Foundation; with the
40Invariant Sections being "GNU General Public License" and "Funding Free
41Software", the Front-Cover texts being (a) (see below), and with the
42Back-Cover Texts being (b) (see below).  A copy of the license is
43included in the section entitled "GNU Free Documentation License".
44
45   (a) The FSF's Front-Cover Text is:
46
47   A GNU Manual
48
49   (b) The FSF's Back-Cover Text is:
50
51   You have freedom to copy and modify this GNU Manual, like GNU
52software.  Copies published by the Free Software Foundation raise
53funds for GNU development.
54
55
56File: libgomp.info,  Node: Top,  Next: Enabling OpenMP,  Up: (dir)
57
58Introduction
59************
60
61This manual documents the usage of libgomp, the GNU implementation of
62the OpenMP (http://www.openmp.org) Application Programming Interface
63(API) for multi-platform shared-memory parallel programming in C/C++
64and Fortran.
65
66* Menu:
67
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.
82
83
84File: libgomp.info,  Node: Enabling OpenMP,  Next: Runtime Library Routines,  Prev: Top,  Up: Top
85
861 Enabling OpenMP
87*****************
88
89To activate the OpenMP extensions for C/C++ and Fortran, the
90compile-time flag `-fopenmp' must be specified. This enables the OpenMP
91directive `#pragma omp' in C/C++ and `!$omp' directives in free form,
92`c$omp', `*$omp' and `!$omp' directives in fixed form, `!$' conditional
93compilation sentinels in free form and `c$', `*$' and `!$' sentinels in
94fixed form, for Fortran. The flag also arranges for automatic linking
95of the OpenMP runtime library (*Note Runtime Library Routines::).
96
97   A complete description of all OpenMP directives accepted may be
98found in the OpenMP Application Program Interface
99(http://www.openmp.org) manual, version 2.5.
100
101
102File: libgomp.info,  Node: Runtime Library Routines,  Next: Environment Variables,  Prev: Enabling OpenMP,  Up: Top
103
1042 Runtime Library Routines
105**************************
106
107The runtime routines described here are defined by section 3 of the
108OpenMP specifications in version 2.5.
109
110   Control threads, processors and the parallel environment.
111
112* Menu:
113
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
124
125   Initialize, set, test, unset and destroy simple and nested locks.
126
127* Menu:
128
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
139
140   Portable, thread-based, wall clock timer.
141
142* Menu:
143
144* omp_get_wtick::            Get timer precision.
145* omp_get_wtime::            Elapsed wall clock time.
146
147
148File: libgomp.info,  Node: omp_get_dynamic,  Next: omp_get_max_threads,  Up: Runtime Library Routines
149
1502.1 `omp_get_dynamic' - Dynamic teams setting
151=============================================
152
153_Description_:
154     This function returns `true' if enabled, `false' otherwise.  Here,
155     `true' and `false' represent their language-specific counterparts.
156
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.
161
162_C/C++_:
163     _Prototype_:  `int omp_get_dynamic();'
164
165_Fortran_:
166     _Interface_:  `logical function omp_get_dynamic()'
167
168_See also_:
169     *Note omp_set_dynamic::, *Note OMP_DYNAMIC::
170
171_Reference_:
172     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.8.
173
174
175File: libgomp.info,  Node: omp_get_max_threads,  Next: omp_get_nested,  Prev: omp_get_dynamic,  Up: Runtime Library Routines
176
1772.2 `omp_get_max_threads' - Maximum number of threads
178=====================================================
179
180_Description_:
181     Return the maximum number of threads used for parallel regions
182     that do not use the clause `num_threads'.
183
184_C/C++_:
185     _Prototype_:  `int omp_get_max_threads();'
186
187_Fortran_:
188     _Interface_:  `integer function omp_get_max_threads()'
189
190_See also_:
191     *Note omp_set_num_threads::, *Note omp_set_dynamic::
192
193_Reference_:
194     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.3.
195
196
197File: libgomp.info,  Node: omp_get_nested,  Next: omp_get_num_procs,  Prev: omp_get_max_threads,  Up: Runtime Library Routines
198
1992.3 `omp_get_nested' - Nested parallel regions
200==============================================
201
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.
206
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.
211
212_C/C++_:
213     _Prototype_:  `int omp_get_nested();'
214
215_Fortran_:
216     _Interface_:  `integer function omp_get_nested()'
217
218_See also_:
219     *Note omp_set_nested::, *Note OMP_NESTED::
220
221_Reference_:
222     OpenMP specifications v2.5 (http://www.openmp.org/), section
223     3.2.10.
224
225
226File: libgomp.info,  Node: omp_get_num_procs,  Next: omp_get_num_threads,  Prev: omp_get_nested,  Up: Runtime Library Routines
227
2282.4 `omp_get_num_procs' - Number of processors online
229=====================================================
230
231_Description_:
232     Returns the number of processors online.
233
234_C/C++_:
235     _Prototype_:  `int omp_get_num_procs();'
236
237_Fortran_:
238     _Interface_:  `integer function omp_get_num_procs()'
239
240_Reference_:
241     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.5.
242
243
244File: libgomp.info,  Node: omp_get_num_threads,  Next: omp_get_thread_num,  Prev: omp_get_num_procs,  Up: Runtime Library Routines
245
2462.5 `omp_get_num_threads' - Size of the active team
247===================================================
248
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.
252
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.
259
260_C/C++_:
261     _Prototype_:  `int omp_get_num_threads();'
262
263_Fortran_:
264     _Interface_:  `integer function omp_get_num_threads()'
265
266_See also_:
267     *Note omp_get_max_threads::, *Note omp_set_num_threads::, *Note
268     OMP_NUM_THREADS::
269
270_Reference_:
271     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.2.
272
273
274File: libgomp.info,  Node: omp_get_thread_num,  Next: omp_in_parallel,  Prev: omp_get_num_threads,  Up: Runtime Library Routines
275
2762.6 `omp_get_thread_num' - Current thread ID
277============================================
278
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.
285
286_C/C++_:
287     _Prototype_:  `int omp_get_thread_num();'
288
289_Fortran_:
290     _Interface_:  `integer function omp_get_thread_num()'
291
292_See also_:
293     *Note omp_get_max_threads::
294
295_Reference_:
296     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.4.
297
298
299File: libgomp.info,  Node: omp_in_parallel,  Next: omp_set_dynamic,  Prev: omp_get_thread_num,  Up: Runtime Library Routines
300
3012.7 `omp_in_parallel' - Whether a parallel region is active
302===========================================================
303
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.
308
309_C/C++_:
310     _Prototype_:  `int omp_in_parallel();'
311
312_Fortran_:
313     _Interface_:  `logical function omp_in_parallel()'
314
315_Reference_:
316     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.6.
317
318
319File: libgomp.info,  Node: omp_set_dynamic,  Next: omp_set_nested,  Prev: omp_in_parallel,  Up: Runtime Library Routines
320
3212.8 `omp_set_dynamic' - Enable/disable dynamic teams
322====================================================
323
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.
329
330_C/C++_:
331     _Prototype_:  `void omp_set_dynamic(int);'
332
333_Fortran_:
334     _Interface_:  `subroutine omp_set_dynamic(set)'
335                   `integer, intent(in) :: set'
336
337_See also_:
338     *Note OMP_DYNAMIC::, *Note omp_get_dynamic::
339
340_Reference_:
341     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.7.
342
343
344File: libgomp.info,  Node: omp_set_nested,  Next: omp_set_num_threads,  Prev: omp_set_dynamic,  Up: Runtime Library Routines
345
3462.9 `omp_set_nested' - Enable/disable nested parallel regions
347=============================================================
348
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.
354
355_C/C++_:
356     _Prototype_:  `void omp_set_dynamic(int);'
357
358_Fortran_:
359     _Interface_:  `subroutine omp_set_dynamic(set)'
360                   `integer, intent(in) :: set'
361
362_See also_:
363     *Note OMP_NESTED::, *Note omp_get_nested::
364
365_Reference_:
366     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.9.
367
368
369File: libgomp.info,  Node: omp_set_num_threads,  Next: omp_init_lock,  Prev: omp_set_nested,  Up: Runtime Library Routines
370
3712.10 `omp_set_num_threads' - Set upper team size limit
372======================================================
373
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.
378
379_C/C++_:
380     _Prototype_:  `void omp_set_num_threads(int);'
381
382_Fortran_:
383     _Interface_:  `subroutine omp_set_num_threads(set)'
384                   `integer, intent(in) :: set'
385
386_See also_:
387     *Note OMP_NUM_THREADS::, *Note omp_get_num_threads::, *Note
388     omp_get_max_threads::
389
390_Reference_:
391     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.2.1.
392
393
394File: libgomp.info,  Node: omp_init_lock,  Next: omp_set_lock,  Prev: omp_set_num_threads,  Up: Runtime Library Routines
395
3962.11 `omp_init_lock' - Initialize simple lock
397=============================================
398
399_Description_:
400     Initialize a simple lock. After initialization, the lock is in an
401     unlocked state.
402
403_C/C++_:
404     _Prototype_:  `void omp_init_lock(omp_lock_t *lock);'
405
406_Fortran_:
407     _Interface_:  `subroutine omp_init_lock(lock)'
408                   `integer(omp_lock_kind), intent(out) :: lock'
409
410_See also_:
411     *Note omp_destroy_lock::
412
413_Reference_:
414     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.1.
415
416
417File: libgomp.info,  Node: omp_set_lock,  Next: omp_test_lock,  Prev: omp_init_lock,  Up: Runtime Library Routines
418
4192.12 `omp_set_lock' - Wait for and set simple lock
420==================================================
421
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.
427
428_C/C++_:
429     _Prototype_:  `void omp_set_lock(omp_lock_t *lock);'
430
431_Fortran_:
432     _Interface_:  `subroutine omp_set_lock(lock)'
433                   `integer(omp_lock_kind), intent(out) :: lock'
434
435_See also_:
436     *Note omp_init_lock::, *Note omp_test_lock::, *Note
437     omp_unset_lock::
438
439_Reference_:
440     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.3.
441
442
443File: libgomp.info,  Node: omp_test_lock,  Next: omp_unset_lock,  Prev: omp_set_lock,  Up: Runtime Library Routines
444
4452.13 `omp_test_lock' - Test and set simple lock if available
446============================================================
447
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.
454
455_C/C++_:
456     _Prototype_:  `int omp_test_lock(omp_lock_t *lock);'
457
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'
462
463_See also_:
464     *Note omp_init_lock::, *Note omp_set_lock::, *Note omp_set_lock::
465
466_Reference_:
467     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.5.
468
469
470File: libgomp.info,  Node: omp_unset_lock,  Next: omp_destroy_lock,  Prev: omp_test_lock,  Up: Runtime Library Routines
471
4722.14 `omp_unset_lock' - Unset simple lock
473=========================================
474
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.
482
483_C/C++_:
484     _Prototype_:  `void omp_unset_lock(omp_lock_t *lock);'
485
486_Fortran_:
487     _Interface_:  `subroutine omp_unset_lock(lock)'
488                   `integer(omp_lock_kind), intent(out) :: lock'
489
490_See also_:
491     *Note omp_set_lock::, *Note omp_test_lock::
492
493_Reference_:
494     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.4.
495
496
497File: libgomp.info,  Node: omp_destroy_lock,  Next: omp_init_nest_lock,  Prev: omp_unset_lock,  Up: Runtime Library Routines
498
4992.15 `omp_destroy_lock' - Destroy simple lock
500=============================================
501
502_Description_:
503     Destroy a simple lock. In order to be destroyed, a simple lock
504     must be in the unlocked state.
505
506_C/C++_:
507     _Prototype_:  `void omp_destroy_lock(omp_lock_t *);'
508
509_Fortran_:
510     _Interface_:  `subroutine omp_destroy_lock(lock)'
511                   `integer(omp_lock_kind), intent(inout) :: lock'
512
513_See also_:
514     *Note omp_init_lock::
515
516_Reference_:
517     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.2.
518
519
520File: libgomp.info,  Node: omp_init_nest_lock,  Next: omp_set_nest_lock,  Prev: omp_destroy_lock,  Up: Runtime Library Routines
521
5222.16 `omp_init_nest_lock' - Initialize nested lock
523==================================================
524
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.
528
529_C/C++_:
530     _Prototype_:  `void omp_init_nest_lock(omp_nest_lock_t *lock);'
531
532_Fortran_:
533     _Interface_:  `subroutine omp_init_nest_lock(lock)'
534                   `integer(omp_nest_lock_kind), intent(out) :: lock'
535
536_See also_:
537     *Note omp_destroy_nest_lock::
538
539_Reference_:
540     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.1.
541
542
543File: libgomp.info,  Node: omp_set_nest_lock,  Next: omp_test_nest_lock,  Prev: omp_init_nest_lock,  Up: Runtime Library Routines
544
5452.17 `omp_set_nest_lock' - Wait for and set simple lock
546=======================================================
547
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.
553
554_C/C++_:
555     _Prototype_:  `void omp_set_nest_lock(omp_nest_lock_t *lock);'
556
557_Fortran_:
558     _Interface_:  `subroutine omp_set_nest_lock(lock)'
559                   `integer(omp_nest_lock_kind), intent(out) :: lock'
560
561_See also_:
562     *Note omp_init_nest_lock::, *Note omp_unset_nest_lock::
563
564_Reference_:
565     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.3.
566
567
568File: libgomp.info,  Node: omp_test_nest_lock,  Next: omp_unset_nest_lock,  Prev: omp_set_nest_lock,  Up: Runtime Library Routines
569
5702.18 `omp_test_nest_lock' - Test and set nested lock if available
571=================================================================
572
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.
580
581_C/C++_:
582     _Prototype_:  `int omp_test_nest_lock(omp_nest_lock_t *lock);'
583
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'
588
589_See also_:
590     *Note omp_init_lock::, *Note omp_set_lock::, *Note omp_set_lock::
591
592_Reference_:
593     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.5.
594
595
596File: libgomp.info,  Node: omp_unset_nest_lock,  Next: omp_destroy_nest_lock,  Prev: omp_test_nest_lock,  Up: Runtime Library Routines
597
5982.19 `omp_unset_nest_lock' - Unset nested lock
599==============================================
600
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.
609
610_C/C++_:
611     _Prototype_:  `void omp_unset_nest_lock(omp_nest_lock_t *lock);'
612
613_Fortran_:
614     _Interface_:  `subroutine omp_unset_nest_lock(lock)'
615                   `integer(omp_nest_lock_kind), intent(out) :: lock'
616
617_See also_:
618     *Note omp_set_nest_lock::
619
620_Reference_:
621     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.4.
622
623
624File: libgomp.info,  Node: omp_destroy_nest_lock,  Next: omp_get_wtick,  Prev: omp_unset_nest_lock,  Up: Runtime Library Routines
625
6262.20 `omp_destroy_nest_lock' - Destroy nested lock
627==================================================
628
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.
633
634_C/C++_:
635     _Prototype_:  `void omp_destroy_nest_lock(omp_nest_lock_t *);'
636
637_Fortran_:
638     _Interface_:  `subroutine omp_destroy_nest_lock(lock)'
639                   `integer(omp_nest_lock_kind), intent(inout) :: lock'
640
641_See also_:
642     *Note omp_init_lock::
643
644_Reference_:
645     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.3.2.
646
647
648File: libgomp.info,  Node: omp_get_wtick,  Next: omp_get_wtime,  Prev: omp_destroy_nest_lock,  Up: Runtime Library Routines
649
6502.21 `omp_get_wtick' - Get timer precision
651==========================================
652
653_Description_:
654     Gets the timer precision, i.e., the number of seconds between two
655     successive clock ticks.
656
657_C/C++_:
658     _Prototype_:  `double omp_get_wtick();'
659
660_Fortran_:
661     _Interface_:  `double precision function omp_get_wtick()'
662
663_See also_:
664     *Note omp_get_wtime::
665
666_Reference_:
667     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.4.2.
668
669
670File: libgomp.info,  Node: omp_get_wtime,  Prev: omp_get_wtick,  Up: Runtime Library Routines
671
6722.22 `omp_get_wtime' - Elapsed wall clock time
673==============================================
674
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.
681
682_C/C++_:
683     _Prototype_:  `double omp_get_wtime();'
684
685_Fortran_:
686     _Interface_:  `double precision function omp_get_wtime()'
687
688_See also_:
689     *Note omp_get_wtick::
690
691_Reference_:
692     OpenMP specifications v2.5 (http://www.openmp.org/), section 3.4.1.
693
694
695File: libgomp.info,  Node: Environment Variables,  Next: The libgomp ABI,  Prev: Runtime Library Routines,  Up: Top
696
6973 Environment Variables
698***********************
699
700The variables `OMP_DYNAMIC', `OMP_NESTED', `OMP_NUM_THREADS' and
701`OMP_SCHEDULE' are defined by section 4 of the OpenMP specifications in
702version 2.5, while `GOMP_CPU_AFFINITY' and `GOMP_STACKSIZE' are GNU
703extensions.
704
705* Menu:
706
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
713
714
715File: libgomp.info,  Node: OMP_DYNAMIC,  Next: OMP_NESTED,  Up: Environment Variables
716
7173.1 `OMP_DYNAMIC' - Dynamic adjustment of threads
718=================================================
719
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.
725
726_See also_:
727     *Note omp_set_dynamic::
728
729_Reference_:
730     OpenMP specifications v2.5 (http://www.openmp.org/), section 4.3
731
732
733File: libgomp.info,  Node: OMP_NESTED,  Next: OMP_NUM_THREADS,  Prev: OMP_DYNAMIC,  Up: Environment Variables
734
7353.2 `OMP_NESTED' - Nested parallel regions
736==========================================
737
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.
743
744_See also_:
745     *Note omp_set_nested::
746
747_Reference_:
748     OpenMP specifications v2.5 (http://www.openmp.org/), section 4.4
749
750
751File: libgomp.info,  Node: OMP_NUM_THREADS,  Next: OMP_SCHEDULE,  Prev: OMP_NESTED,  Up: Environment Variables
752
7533.3 `OMP_NUM_THREADS' - Specifies the number of threads to use
754==============================================================
755
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.
760
761_See also_:
762     *Note omp_set_num_threads::
763
764_Reference_:
765     OpenMP specifications v2.5 (http://www.openmp.org/), section 4.2
766
767
768File: libgomp.info,  Node: OMP_SCHEDULE,  Next: GOMP_CPU_AFFINITY,  Prev: OMP_NUM_THREADS,  Up: Environment Variables
769
7703.4 `OMP_SCHEDULE' - How threads are scheduled
771==============================================
772
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.
779
780_Reference_:
781     OpenMP specifications v2.5 (http://www.openmp.org/), sections
782     2.5.1 and 4.1
783
784
785File: libgomp.info,  Node: GOMP_CPU_AFFINITY,  Next: GOMP_STACKSIZE,  Prev: OMP_SCHEDULE,  Up: Environment Variables
786
7873.5 `GOMP_CPU_AFFINITY' - Bind threads to specific CPUs
788=======================================================
789
790_Description_:
791     A patch for this extension has been submitted, but was not yet
792     applied at the time of writing.
793
794_Reference_:
795     GCC Patches Mailinglist
796     (http://gcc.gnu.org/ml/gcc-patches/2006-05/msg00982.html) GCC
797     Patches Mailinglist
798     (http://gcc.gnu.org/ml/gcc-patches/2006-05/msg01133.html)
799
800
801File: libgomp.info,  Node: GOMP_STACKSIZE,  Prev: GOMP_CPU_AFFINITY,  Up: Environment Variables
802
8033.6 `GOMP_STACKSIZE' - Set default thread stack size
804====================================================
805
806_Description_:
807     Set the default thread stack size in kilobytes. This is in
808     opposition to `pthread_attr_setstacksize' which gets the number of
809     bytes as an argument. If the stacksize can not be set due to
810     system constraints, an error is reported and the initial stacksize
811     is left unchanged. If undefined, the stack size is system
812     dependent.
813
814_Reference_:
815     GCC Patches Mailinglist
816     (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00493.html), GCC
817     Patches Mailinglist
818     (http://gcc.gnu.org/ml/gcc-patches/2006-06/msg00496.html)
819
820
821File: libgomp.info,  Node: The libgomp ABI,  Next: Reporting Bugs,  Prev: Environment Variables,  Up: Top
822
8234 The libgomp ABI
824*****************
825
826The following sections present notes on the external ABI as presented
827by libgomp. Only maintainers should need them.
828
829* Menu:
830
831* Implementing MASTER construct::
832* Implementing CRITICAL construct::
833* Implementing ATOMIC construct::
834* Implementing FLUSH construct::
835* Implementing BARRIER construct::
836* Implementing THREADPRIVATE construct::
837* Implementing PRIVATE clause::
838* Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses::
839* Implementing REDUCTION clause::
840* Implementing PARALLEL construct::
841* Implementing FOR construct::
842* Implementing ORDERED construct::
843* Implementing SECTIONS construct::
844* Implementing SINGLE construct::
845
846
847File: libgomp.info,  Node: Implementing MASTER construct,  Next: Implementing CRITICAL construct,  Up: The libgomp ABI
848
8494.1 Implementing MASTER construct
850=================================
851
852     if (omp_get_thread_num () == 0)
853       block
854
855   Alternately, we generate two copies of the parallel subfunction and
856only include this in the version run by the master thread.  Surely
857that's not worthwhile though...
858
859
860File: libgomp.info,  Node: Implementing CRITICAL construct,  Next: Implementing ATOMIC construct,  Prev: Implementing MASTER construct,  Up: The libgomp ABI
861
8624.2 Implementing CRITICAL construct
863===================================
864
865Without a specified name,
866
867       void GOMP_critical_start (void);
868       void GOMP_critical_end (void);
869
870   so that we don't get COPY relocations from libgomp to the main
871application.
872
873   With a specified name, use omp_set_lock and omp_unset_lock with name
874being transformed into a variable declared like
875
876       omp_lock_t gomp_critical_user_<name> __attribute__((common))
877
878   Ideally the ABI would specify that all zero is a valid unlocked
879state, and so we wouldn't actually need to initialize this at startup.
880
881
882File: libgomp.info,  Node: Implementing ATOMIC construct,  Next: Implementing FLUSH construct,  Prev: Implementing CRITICAL construct,  Up: The libgomp ABI
883
8844.3 Implementing ATOMIC construct
885=================================
886
887The target should implement the `__sync' builtins.
888
889   Failing that we could add
890
891       void GOMP_atomic_enter (void)
892       void GOMP_atomic_exit (void)
893
894   which reuses the regular lock code, but with yet another lock object
895private to the library.
896
897
898File: libgomp.info,  Node: Implementing FLUSH construct,  Next: Implementing BARRIER construct,  Prev: Implementing ATOMIC construct,  Up: The libgomp ABI
899
9004.4 Implementing FLUSH construct
901================================
902
903Expands to the `__sync_synchronize' builtin.
904
905
906File: libgomp.info,  Node: Implementing BARRIER construct,  Next: Implementing THREADPRIVATE construct,  Prev: Implementing FLUSH construct,  Up: The libgomp ABI
907
9084.5 Implementing BARRIER construct
909==================================
910
911       void GOMP_barrier (void)
912
913
914File: libgomp.info,  Node: Implementing THREADPRIVATE construct,  Next: Implementing PRIVATE clause,  Prev: Implementing BARRIER construct,  Up: The libgomp ABI
915
9164.6 Implementing THREADPRIVATE construct
917========================================
918
919In _most_ cases we can map this directly to `__thread'.  Except that
920OMP allows constructors for C++ objects.  We can either refuse to
921support this (how often is it used?) or we can implement something akin
922to .ctors.
923
924   Even more ideally, this ctor feature is handled by extensions to the
925main pthreads library.  Failing that, we can have a set of entry points
926to register ctor functions to be called.
927
928
929File: libgomp.info,  Node: Implementing PRIVATE clause,  Next: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Prev: Implementing THREADPRIVATE construct,  Up: The libgomp ABI
930
9314.7 Implementing PRIVATE clause
932===============================
933
934In association with a PARALLEL, or within the lexical extent of a
935PARALLEL block, the variable becomes a local variable in the parallel
936subfunction.
937
938   In association with FOR or SECTIONS blocks, create a new automatic
939variable within the current function.  This preserves the semantic of
940new variable creation.
941
942
943File: libgomp.info,  Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Next: Implementing REDUCTION clause,  Prev: Implementing PRIVATE clause,  Up: The libgomp ABI
944
9454.8 Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses
946========================================================================
947
948Seems simple enough for PARALLEL blocks.  Create a private struct for
949communicating between parent and subfunction.  In the parent, copy in
950values for scalar and "small" structs; copy in addresses for others
951TREE_ADDRESSABLE types.  In the subfunction, copy the value into the
952local variable.
953
954   Not clear at all what to do with bare FOR or SECTION blocks.  The
955only thing I can figure is that we do something like
956
957     #pragma omp for firstprivate(x) lastprivate(y)
958     for (int i = 0; i < n; ++i)
959       body;
960
961   which becomes
962
963     {
964       int x = x, y;
965
966       // for stuff
967
968       if (i == n)
969         y = y;
970     }
971
972   where the "x=x" and "y=y" assignments actually have different uids
973for the two variables, i.e. not something you could write directly in
974C.  Presumably this only makes sense if the "outer" x and y are global
975variables.
976
977   COPYPRIVATE would work the same way, except the structure broadcast
978would have to happen via SINGLE machinery instead.
979
980
981File: libgomp.info,  Node: Implementing REDUCTION clause,  Next: Implementing PARALLEL construct,  Prev: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Up: The libgomp ABI
982
9834.9 Implementing REDUCTION clause
984=================================
985
986The private struct mentioned in the previous section should have a
987pointer to an array of the type of the variable, indexed by the
988thread's TEAM_ID.  The thread stores its final value into the array,
989and after the barrier the master thread iterates over the array to
990collect the values.
991
992
993File: libgomp.info,  Node: Implementing PARALLEL construct,  Next: Implementing FOR construct,  Prev: Implementing REDUCTION clause,  Up: The libgomp ABI
994
9954.10 Implementing PARALLEL construct
996====================================
997
998       #pragma omp parallel
999       {
1000         body;
1001       }
1002
1003   becomes
1004
1005       void subfunction (void *data)
1006       {
1007         use data;
1008         body;
1009       }
1010
1011       setup data;
1012       GOMP_parallel_start (subfunction, &data, num_threads);
1013       subfunction (&data);
1014       GOMP_parallel_end ();
1015
1016       void GOMP_parallel_start (void (*fn)(void *), void *data, unsigned num_threads)
1017
1018   The FN argument is the subfunction to be run in parallel.
1019
1020   The DATA argument is a pointer to a structure used to communicate
1021data in and out of the subfunction, as discussed above with respect to
1022FIRSTPRIVATE et al.
1023
1024   The NUM_THREADS argument is 1 if an IF clause is present and false,
1025or the value of the NUM_THREADS clause, if present, or 0.
1026
1027   The function needs to create the appropriate number of threads
1028and/or launch them from the dock.  It needs to create the team
1029structure and assign team ids.
1030
1031       void GOMP_parallel_end (void)
1032
1033   Tears down the team and returns us to the previous
1034`omp_in_parallel()' state.
1035
1036
1037File: libgomp.info,  Node: Implementing FOR construct,  Next: Implementing ORDERED construct,  Prev: Implementing PARALLEL construct,  Up: The libgomp ABI
1038
10394.11 Implementing FOR construct
1040===============================
1041
1042       #pragma omp parallel for
1043       for (i = lb; i <= ub; i++)
1044         body;
1045
1046   becomes
1047
1048       void subfunction (void *data)
1049       {
1050         long _s0, _e0;
1051         while (GOMP_loop_static_next (&_s0, &_e0))
1052         {
1053           long _e1 = _e0, i;
1054           for (i = _s0; i < _e1; i++)
1055             body;
1056         }
1057         GOMP_loop_end_nowait ();
1058       }
1059
1060       GOMP_parallel_loop_static (subfunction, NULL, 0, lb, ub+1, 1, 0);
1061       subfunction (NULL);
1062       GOMP_parallel_end ();
1063
1064       #pragma omp for schedule(runtime)
1065       for (i = 0; i < n; i++)
1066         body;
1067
1068   becomes
1069
1070       {
1071         long i, _s0, _e0;
1072         if (GOMP_loop_runtime_start (0, n, 1, &_s0, &_e0))
1073           do {
1074             long _e1 = _e0;
1075             for (i = _s0, i < _e0; i++)
1076               body;
1077           } while (GOMP_loop_runtime_next (&_s0, _&e0));
1078         GOMP_loop_end ();
1079       }
1080
1081   Note that while it looks like there is trickyness to propagating a
1082non-constant STEP, there isn't really.  We're explicitly allowed to
1083evaluate it as many times as we want, and any variables involved should
1084automatically be handled as PRIVATE or SHARED like any other variables.
1085So the expression should remain evaluable in the subfunction.  We can
1086also pull it into a local variable if we like, but since its supposed
1087to remain unchanged, we can also not if we like.
1088
1089   If we have SCHEDULE(STATIC), and no ORDERED, then we ought to be
1090able to get away with no work-sharing context at all, since we can
1091simply perform the arithmetic directly in each thread to divide up the
1092iterations.  Which would mean that we wouldn't need to call any of
1093these routines.
1094
1095   There are separate routines for handling loops with an ORDERED
1096clause.  Bookkeeping for that is non-trivial...
1097
1098
1099File: libgomp.info,  Node: Implementing ORDERED construct,  Next: Implementing SECTIONS construct,  Prev: Implementing FOR construct,  Up: The libgomp ABI
1100
11014.12 Implementing ORDERED construct
1102===================================
1103
1104       void GOMP_ordered_start (void)
1105       void GOMP_ordered_end (void)
1106
1107
1108File: libgomp.info,  Node: Implementing SECTIONS construct,  Next: Implementing SINGLE construct,  Prev: Implementing ORDERED construct,  Up: The libgomp ABI
1109
11104.13 Implementing SECTIONS construct
1111====================================
1112
1113A block as
1114
1115       #pragma omp sections
1116       {
1117         #pragma omp section
1118         stmt1;
1119         #pragma omp section
1120         stmt2;
1121         #pragma omp section
1122         stmt3;
1123       }
1124
1125   becomes
1126
1127       for (i = GOMP_sections_start (3); i != 0; i = GOMP_sections_next ())
1128         switch (i)
1129           {
1130           case 1:
1131             stmt1;
1132             break;
1133           case 2:
1134             stmt2;
1135             break;
1136           case 3:
1137             stmt3;
1138             break;
1139           }
1140       GOMP_barrier ();
1141
1142
1143File: libgomp.info,  Node: Implementing SINGLE construct,  Prev: Implementing SECTIONS construct,  Up: The libgomp ABI
1144
11454.14 Implementing SINGLE construct
1146==================================
1147
1148A block like
1149
1150       #pragma omp single
1151       {
1152         body;
1153       }
1154
1155   becomes
1156
1157       if (GOMP_single_start ())
1158         body;
1159       GOMP_barrier ();
1160
1161   while
1162
1163       #pragma omp single copyprivate(x)
1164         body;
1165
1166   becomes
1167
1168       datap = GOMP_single_copy_start ();
1169       if (datap == NULL)
1170         {
1171           body;
1172           data.x = x;
1173           GOMP_single_copy_end (&data);
1174         }
1175       else
1176         x = datap->x;
1177       GOMP_barrier ();
1178
1179
1180File: libgomp.info,  Node: Reporting Bugs,  Next: Copying,  Prev: The libgomp ABI,  Up: Top
1181
11825 Reporting Bugs
1183****************
1184
1185Bugs in the GNU OpenMP implementation should be reported via bugzilla
1186(http://gcc.gnu.org/bugzilla/). In all cases, please add "openmp" to
1187the keywords field in the bug report.
1188
1189
1190File: libgomp.info,  Node: Copying,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
1191
1192GNU GENERAL PUBLIC LICENSE
1193**************************
1194
1195                         Version 2, June 1991
1196
1197     Copyright (C) 1989, 1991 Free Software Foundation, Inc.
1198     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
1199
1200     Everyone is permitted to copy and distribute verbatim copies
1201     of this license document, but changing it is not allowed.
1202
1203Preamble
1204========
1205
1206The licenses for most software are designed to take away your freedom
1207to share and change it.  By contrast, the GNU General Public License is
1208intended to guarantee your freedom to share and change free
1209software--to make sure the software is free for all its users.  This
1210General Public License applies to most of the Free Software
1211Foundation's software and to any other program whose authors commit to
1212using it.  (Some other Free Software Foundation software is covered by
1213the GNU Library General Public License instead.)  You can apply it to
1214your programs, too.
1215
1216   When we speak of free software, we are referring to freedom, not
1217price.  Our General Public Licenses are designed to make sure that you
1218have the freedom to distribute copies of free software (and charge for
1219this service if you wish), that you receive source code or can get it
1220if you want it, that you can change the software or use pieces of it in
1221new free programs; and that you know you can do these things.
1222
1223   To protect your rights, we need to make restrictions that forbid
1224anyone to deny you these rights or to ask you to surrender the rights.
1225These restrictions translate to certain responsibilities for you if you
1226distribute copies of the software, or if you modify it.
1227
1228   For example, if you distribute copies of such a program, whether
1229gratis or for a fee, you must give the recipients all the rights that
1230you have.  You must make sure that they, too, receive or can get the
1231source code.  And you must show them these terms so they know their
1232rights.
1233
1234   We protect your rights with two steps: (1) copyright the software,
1235and (2) offer you this license which gives you legal permission to copy,
1236distribute and/or modify the software.
1237
1238   Also, for each author's protection and ours, we want to make certain
1239that everyone understands that there is no warranty for this free
1240software.  If the software is modified by someone else and passed on, we
1241want its recipients to know that what they have is not the original, so
1242that any problems introduced by others will not reflect on the original
1243authors' reputations.
1244
1245   Finally, any free program is threatened constantly by software
1246patents.  We wish to avoid the danger that redistributors of a free
1247program will individually obtain patent licenses, in effect making the
1248program proprietary.  To prevent this, we have made it clear that any
1249patent must be licensed for everyone's free use or not licensed at all.
1250
1251   The precise terms and conditions for copying, distribution and
1252modification follow.
1253
1254    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
1255  0. This License applies to any program or other work which contains a
1256     notice placed by the copyright holder saying it may be distributed
1257     under the terms of this General Public License.  The "Program",
1258     below, refers to any such program or work, and a "work based on
1259     the Program" means either the Program or any derivative work under
1260     copyright law: that is to say, a work containing the Program or a
1261     portion of it, either verbatim or with modifications and/or
1262     translated into another language.  (Hereinafter, translation is
1263     included without limitation in the term "modification".)  Each
1264     licensee is addressed as "you".
1265
1266     Activities other than copying, distribution and modification are
1267     not covered by this License; they are outside its scope.  The act
1268     of running the Program is not restricted, and the output from the
1269     Program is covered only if its contents constitute a work based on
1270     the Program (independent of having been made by running the
1271     Program).  Whether that is true depends on what the Program does.
1272
1273  1. You may copy and distribute verbatim copies of the Program's
1274     source code as you receive it, in any medium, provided that you
1275     conspicuously and appropriately publish on each copy an appropriate
1276     copyright notice and disclaimer of warranty; keep intact all the
1277     notices that refer to this License and to the absence of any
1278     warranty; and give any other recipients of the Program a copy of
1279     this License along with the Program.
1280
1281     You may charge a fee for the physical act of transferring a copy,
1282     and you may at your option offer warranty protection in exchange
1283     for a fee.
1284
1285  2. You may modify your copy or copies of the Program or any portion
1286     of it, thus forming a work based on the Program, and copy and
1287     distribute such modifications or work under the terms of Section 1
1288     above, provided that you also meet all of these conditions:
1289
1290       a. You must cause the modified files to carry prominent notices
1291          stating that you changed the files and the date of any change.
1292
1293       b. You must cause any work that you distribute or publish, that
1294          in whole or in part contains or is derived from the Program
1295          or any part thereof, to be licensed as a whole at no charge
1296          to all third parties under the terms of this License.
1297
1298       c. If the modified program normally reads commands interactively
1299          when run, you must cause it, when started running for such
1300          interactive use in the most ordinary way, to print or display
1301          an announcement including an appropriate copyright notice and
1302          a notice that there is no warranty (or else, saying that you
1303          provide a warranty) and that users may redistribute the
1304          program under these conditions, and telling the user how to
1305          view a copy of this License.  (Exception: if the Program
1306          itself is interactive but does not normally print such an
1307          announcement, your work based on the Program is not required
1308          to print an announcement.)
1309
1310     These requirements apply to the modified work as a whole.  If
1311     identifiable sections of that work are not derived from the
1312     Program, and can be reasonably considered independent and separate
1313     works in themselves, then this License, and its terms, do not
1314     apply to those sections when you distribute them as separate
1315     works.  But when you distribute the same sections as part of a
1316     whole which is a work based on the Program, the distribution of
1317     the whole must be on the terms of this License, whose permissions
1318     for other licensees extend to the entire whole, and thus to each
1319     and every part regardless of who wrote it.
1320
1321     Thus, it is not the intent of this section to claim rights or
1322     contest your rights to work written entirely by you; rather, the
1323     intent is to exercise the right to control the distribution of
1324     derivative or collective works based on the Program.
1325
1326     In addition, mere aggregation of another work not based on the
1327     Program with the Program (or with a work based on the Program) on
1328     a volume of a storage or distribution medium does not bring the
1329     other work under the scope of this License.
1330
1331  3. You may copy and distribute the Program (or a work based on it,
1332     under Section 2) in object code or executable form under the terms
1333     of Sections 1 and 2 above provided that you also do one of the
1334     following:
1335
1336       a. Accompany it with the complete corresponding machine-readable
1337          source code, which must be distributed under the terms of
1338          Sections 1 and 2 above on a medium customarily used for
1339          software interchange; or,
1340
1341       b. Accompany it with a written offer, valid for at least three
1342          years, to give any third party, for a charge no more than your
1343          cost of physically performing source distribution, a complete
1344          machine-readable copy of the corresponding source code, to be
1345          distributed under the terms of Sections 1 and 2 above on a
1346          medium customarily used for software interchange; or,
1347
1348       c. Accompany it with the information you received as to the offer
1349          to distribute corresponding source code.  (This alternative is
1350          allowed only for noncommercial distribution and only if you
1351          received the program in object code or executable form with
1352          such an offer, in accord with Subsection b above.)
1353
1354     The source code for a work means the preferred form of the work for
1355     making modifications to it.  For an executable work, complete
1356     source code means all the source code for all modules it contains,
1357     plus any associated interface definition files, plus the scripts
1358     used to control compilation and installation of the executable.
1359     However, as a special exception, the source code distributed need
1360     not include anything that is normally distributed (in either
1361     source or binary form) with the major components (compiler,
1362     kernel, and so on) of the operating system on which the executable
1363     runs, unless that component itself accompanies the executable.
1364
1365     If distribution of executable or object code is made by offering
1366     access to copy from a designated place, then offering equivalent
1367     access to copy the source code from the same place counts as
1368     distribution of the source code, even though third parties are not
1369     compelled to copy the source along with the object code.
1370
1371  4. You may not copy, modify, sublicense, or distribute the Program
1372     except as expressly provided under this License.  Any attempt
1373     otherwise to copy, modify, sublicense or distribute the Program is
1374     void, and will automatically terminate your rights under this
1375     License.  However, parties who have received copies, or rights,
1376     from you under this License will not have their licenses
1377     terminated so long as such parties remain in full compliance.
1378
1379  5. You are not required to accept this License, since you have not
1380     signed it.  However, nothing else grants you permission to modify
1381     or distribute the Program or its derivative works.  These actions
1382     are prohibited by law if you do not accept this License.
1383     Therefore, by modifying or distributing the Program (or any work
1384     based on the Program), you indicate your acceptance of this
1385     License to do so, and all its terms and conditions for copying,
1386     distributing or modifying the Program or works based on it.
1387
1388  6. Each time you redistribute the Program (or any work based on the
1389     Program), the recipient automatically receives a license from the
1390     original licensor to copy, distribute or modify the Program
1391     subject to these terms and conditions.  You may not impose any
1392     further restrictions on the recipients' exercise of the rights
1393     granted herein.  You are not responsible for enforcing compliance
1394     by third parties to this License.
1395
1396  7. If, as a consequence of a court judgment or allegation of patent
1397     infringement or for any other reason (not limited to patent
1398     issues), conditions are imposed on you (whether by court order,
1399     agreement or otherwise) that contradict the conditions of this
1400     License, they do not excuse you from the conditions of this
1401     License.  If you cannot distribute so as to satisfy simultaneously
1402     your obligations under this License and any other pertinent
1403     obligations, then as a consequence you may not distribute the
1404     Program at all.  For example, if a patent license would not permit
1405     royalty-free redistribution of the Program by all those who
1406     receive copies directly or indirectly through you, then the only
1407     way you could satisfy both it and this License would be to refrain
1408     entirely from distribution of the Program.
1409
1410     If any portion of this section is held invalid or unenforceable
1411     under any particular circumstance, the balance of the section is
1412     intended to apply and the section as a whole is intended to apply
1413     in other circumstances.
1414
1415     It is not the purpose of this section to induce you to infringe any
1416     patents or other property right claims or to contest validity of
1417     any such claims; this section has the sole purpose of protecting
1418     the integrity of the free software distribution system, which is
1419     implemented by public license practices.  Many people have made
1420     generous contributions to the wide range of software distributed
1421     through that system in reliance on consistent application of that
1422     system; it is up to the author/donor to decide if he or she is
1423     willing to distribute software through any other system and a
1424     licensee cannot impose that choice.
1425
1426     This section is intended to make thoroughly clear what is believed
1427     to be a consequence of the rest of this License.
1428
1429  8. If the distribution and/or use of the Program is restricted in
1430     certain countries either by patents or by copyrighted interfaces,
1431     the original copyright holder who places the Program under this
1432     License may add an explicit geographical distribution limitation
1433     excluding those countries, so that distribution is permitted only
1434     in or among countries not thus excluded.  In such case, this
1435     License incorporates the limitation as if written in the body of
1436     this License.
1437
1438  9. The Free Software Foundation may publish revised and/or new
1439     versions of the General Public License from time to time.  Such
1440     new versions will be similar in spirit to the present version, but
1441     may differ in detail to address new problems or concerns.
1442
1443     Each version is given a distinguishing version number.  If the
1444     Program specifies a version number of this License which applies
1445     to it and "any later version", you have the option of following
1446     the terms and conditions either of that version or of any later
1447     version published by the Free Software Foundation.  If the Program
1448     does not specify a version number of this License, you may choose
1449     any version ever published by the Free Software Foundation.
1450
1451 10. If you wish to incorporate parts of the Program into other free
1452     programs whose distribution conditions are different, write to the
1453     author to ask for permission.  For software which is copyrighted
1454     by the Free Software Foundation, write to the Free Software
1455     Foundation; we sometimes make exceptions for this.  Our decision
1456     will be guided by the two goals of preserving the free status of
1457     all derivatives of our free software and of promoting the sharing
1458     and reuse of software generally.
1459
1460                                NO WARRANTY
1461 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
1462     WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
1463     LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
1464     HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
1465     WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
1466     NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1467     FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE
1468     QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
1469     PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
1470     SERVICING, REPAIR OR CORRECTION.
1471
1472 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
1473     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
1474     MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
1475     LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
1476     INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
1477     INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
1478     DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
1479     OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
1480     OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
1481     ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1482
1483                      END OF TERMS AND CONDITIONS
1484Appendix: How to Apply These Terms to Your New Programs
1485=======================================================
1486
1487If you develop a new program, and you want it to be of the greatest
1488possible use to the public, the best way to achieve this is to make it
1489free software which everyone can redistribute and change under these
1490terms.
1491
1492   To do so, attach the following notices to the program.  It is safest
1493to attach them to the start of each source file to most effectively
1494convey the exclusion of warranty; and each file should have at least
1495the "copyright" line and a pointer to where the full notice is found.
1496
1497     ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
1498     Copyright (C) YEAR  NAME OF AUTHOR
1499
1500     This program is free software; you can redistribute it and/or modify
1501     it under the terms of the GNU General Public License as published by
1502     the Free Software Foundation; either version 2 of the License, or
1503     (at your option) any later version.
1504
1505     This program is distributed in the hope that it will be useful,
1506     but WITHOUT ANY WARRANTY; without even the implied warranty of
1507     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1508     GNU General Public License for more details.
1509
1510     You should have received a copy of the GNU General Public License
1511     along with this program; if not, write to the Free Software
1512     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
1513
1514   Also add information on how to contact you by electronic and paper
1515mail.
1516
1517   If the program is interactive, make it output a short notice like
1518this when it starts in an interactive mode:
1519
1520     Gnomovision version 69, Copyright (C) YEAR NAME OF AUTHOR
1521     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
1522     type `show w'.
1523     This is free software, and you are welcome to redistribute it
1524     under certain conditions; type `show c' for details.
1525
1526   The hypothetical commands `show w' and `show c' should show the
1527appropriate parts of the General Public License.  Of course, the
1528commands you use may be called something other than `show w' and `show
1529c'; they could even be mouse-clicks or menu items--whatever suits your
1530program.
1531
1532   You should also get your employer (if you work as a programmer) or
1533your school, if any, to sign a "copyright disclaimer" for the program,
1534if necessary.  Here is a sample; alter the names:
1535
1536     Yoyodyne, Inc., hereby disclaims all copyright interest in the program
1537     `Gnomovision' (which makes passes at compilers) written by James Hacker.
1538
1539     SIGNATURE OF TY COON, 1 April 1989
1540     Ty Coon, President of Vice
1541
1542   This General Public License does not permit incorporating your
1543program into proprietary programs.  If your program is a subroutine
1544library, you may consider it more useful to permit linking proprietary
1545applications with the library.  If this is what you want to do, use the
1546GNU Library General Public License instead of this License.
1547
1548
1549File: libgomp.info,  Node: GNU Free Documentation License,  Next: Funding,  Prev: Copying,  Up: Top
1550
1551GNU Free Documentation License
1552******************************
1553
1554                      Version 1.2, November 2002
1555
1556     Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
1557     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
1558
1559     Everyone is permitted to copy and distribute verbatim copies
1560     of this license document, but changing it is not allowed.
1561
1562  0. PREAMBLE
1563
1564     The purpose of this License is to make a manual, textbook, or other
1565     functional and useful document "free" in the sense of freedom: to
1566     assure everyone the effective freedom to copy and redistribute it,
1567     with or without modifying it, either commercially or
1568     noncommercially.  Secondarily, this License preserves for the
1569     author and publisher a way to get credit for their work, while not
1570     being considered responsible for modifications made by others.
1571
1572     This License is a kind of "copyleft", which means that derivative
1573     works of the document must themselves be free in the same sense.
1574     It complements the GNU General Public License, which is a copyleft
1575     license designed for free software.
1576
1577     We have designed this License in order to use it for manuals for
1578     free software, because free software needs free documentation: a
1579     free program should come with manuals providing the same freedoms
1580     that the software does.  But this License is not limited to
1581     software manuals; it can be used for any textual work, regardless
1582     of subject matter or whether it is published as a printed book.
1583     We recommend this License principally for works whose purpose is
1584     instruction or reference.
1585
1586  1. APPLICABILITY AND DEFINITIONS
1587
1588     This License applies to any manual or other work, in any medium,
1589     that contains a notice placed by the copyright holder saying it
1590     can be distributed under the terms of this License.  Such a notice
1591     grants a world-wide, royalty-free license, unlimited in duration,
1592     to use that work under the conditions stated herein.  The
1593     "Document", below, refers to any such manual or work.  Any member
1594     of the public is a licensee, and is addressed as "you".  You
1595     accept the license if you copy, modify or distribute the work in a
1596     way requiring permission under copyright law.
1597
1598     A "Modified Version" of the Document means any work containing the
1599     Document or a portion of it, either copied verbatim, or with
1600     modifications and/or translated into another language.
1601
1602     A "Secondary Section" is a named appendix or a front-matter section
1603     of the Document that deals exclusively with the relationship of the
1604     publishers or authors of the Document to the Document's overall
1605     subject (or to related matters) and contains nothing that could
1606     fall directly within that overall subject.  (Thus, if the Document
1607     is in part a textbook of mathematics, a Secondary Section may not
1608     explain any mathematics.)  The relationship could be a matter of
1609     historical connection with the subject or with related matters, or
1610     of legal, commercial, philosophical, ethical or political position
1611     regarding them.
1612
1613     The "Invariant Sections" are certain Secondary Sections whose
1614     titles are designated, as being those of Invariant Sections, in
1615     the notice that says that the Document is released under this
1616     License.  If a section does not fit the above definition of
1617     Secondary then it is not allowed to be designated as Invariant.
1618     The Document may contain zero Invariant Sections.  If the Document
1619     does not identify any Invariant Sections then there are none.
1620
1621     The "Cover Texts" are certain short passages of text that are
1622     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
1623     that says that the Document is released under this License.  A
1624     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
1625     be at most 25 words.
1626
1627     A "Transparent" copy of the Document means a machine-readable copy,
1628     represented in a format whose specification is available to the
1629     general public, that is suitable for revising the document
1630     straightforwardly with generic text editors or (for images
1631     composed of pixels) generic paint programs or (for drawings) some
1632     widely available drawing editor, and that is suitable for input to
1633     text formatters or for automatic translation to a variety of
1634     formats suitable for input to text formatters.  A copy made in an
1635     otherwise Transparent file format whose markup, or absence of
1636     markup, has been arranged to thwart or discourage subsequent
1637     modification by readers is not Transparent.  An image format is
1638     not Transparent if used for any substantial amount of text.  A
1639     copy that is not "Transparent" is called "Opaque".
1640
1641     Examples of suitable formats for Transparent copies include plain
1642     ASCII without markup, Texinfo input format, LaTeX input format,
1643     SGML or XML using a publicly available DTD, and
1644     standard-conforming simple HTML, PostScript or PDF designed for
1645     human modification.  Examples of transparent image formats include
1646     PNG, XCF and JPG.  Opaque formats include proprietary formats that
1647     can be read and edited only by proprietary word processors, SGML or
1648     XML for which the DTD and/or processing tools are not generally
1649     available, and the machine-generated HTML, PostScript or PDF
1650     produced by some word processors for output purposes only.
1651
1652     The "Title Page" means, for a printed book, the title page itself,
1653     plus such following pages as are needed to hold, legibly, the
1654     material this License requires to appear in the title page.  For
1655     works in formats which do not have any title page as such, "Title
1656     Page" means the text near the most prominent appearance of the
1657     work's title, preceding the beginning of the body of the text.
1658
1659     A section "Entitled XYZ" means a named subunit of the Document
1660     whose title either is precisely XYZ or contains XYZ in parentheses
1661     following text that translates XYZ in another language.  (Here XYZ
1662     stands for a specific section name mentioned below, such as
1663     "Acknowledgements", "Dedications", "Endorsements", or "History".)
1664     To "Preserve the Title" of such a section when you modify the
1665     Document means that it remains a section "Entitled XYZ" according
1666     to this definition.
1667
1668     The Document may include Warranty Disclaimers next to the notice
1669     which states that this License applies to the Document.  These
1670     Warranty Disclaimers are considered to be included by reference in
1671     this License, but only as regards disclaiming warranties: any other
1672     implication that these Warranty Disclaimers may have is void and
1673     has no effect on the meaning of this License.
1674
1675  2. VERBATIM COPYING
1676
1677     You may copy and distribute the Document in any medium, either
1678     commercially or noncommercially, provided that this License, the
1679     copyright notices, and the license notice saying this License
1680     applies to the Document are reproduced in all copies, and that you
1681     add no other conditions whatsoever to those of this License.  You
1682     may not use technical measures to obstruct or control the reading
1683     or further copying of the copies you make or distribute.  However,
1684     you may accept compensation in exchange for copies.  If you
1685     distribute a large enough number of copies you must also follow
1686     the conditions in section 3.
1687
1688     You may also lend copies, under the same conditions stated above,
1689     and you may publicly display copies.
1690
1691  3. COPYING IN QUANTITY
1692
1693     If you publish printed copies (or copies in media that commonly
1694     have printed covers) of the Document, numbering more than 100, and
1695     the Document's license notice requires Cover Texts, you must
1696     enclose the copies in covers that carry, clearly and legibly, all
1697     these Cover Texts: Front-Cover Texts on the front cover, and
1698     Back-Cover Texts on the back cover.  Both covers must also clearly
1699     and legibly identify you as the publisher of these copies.  The
1700     front cover must present the full title with all words of the
1701     title equally prominent and visible.  You may add other material
1702     on the covers in addition.  Copying with changes limited to the
1703     covers, as long as they preserve the title of the Document and
1704     satisfy these conditions, can be treated as verbatim copying in
1705     other respects.
1706
1707     If the required texts for either cover are too voluminous to fit
1708     legibly, you should put the first ones listed (as many as fit
1709     reasonably) on the actual cover, and continue the rest onto
1710     adjacent pages.
1711
1712     If you publish or distribute Opaque copies of the Document
1713     numbering more than 100, you must either include a
1714     machine-readable Transparent copy along with each Opaque copy, or
1715     state in or with each Opaque copy a computer-network location from
1716     which the general network-using public has access to download
1717     using public-standard network protocols a complete Transparent
1718     copy of the Document, free of added material.  If you use the
1719     latter option, you must take reasonably prudent steps, when you
1720     begin distribution of Opaque copies in quantity, to ensure that
1721     this Transparent copy will remain thus accessible at the stated
1722     location until at least one year after the last time you
1723     distribute an Opaque copy (directly or through your agents or
1724     retailers) of that edition to the public.
1725
1726     It is requested, but not required, that you contact the authors of
1727     the Document well before redistributing any large number of
1728     copies, to give them a chance to provide you with an updated
1729     version of the Document.
1730
1731  4. MODIFICATIONS
1732
1733     You may copy and distribute a Modified Version of the Document
1734     under the conditions of sections 2 and 3 above, provided that you
1735     release the Modified Version under precisely this License, with
1736     the Modified Version filling the role of the Document, thus
1737     licensing distribution and modification of the Modified Version to
1738     whoever possesses a copy of it.  In addition, you must do these
1739     things in the Modified Version:
1740
1741       A. Use in the Title Page (and on the covers, if any) a title
1742          distinct from that of the Document, and from those of
1743          previous versions (which should, if there were any, be listed
1744          in the History section of the Document).  You may use the
1745          same title as a previous version if the original publisher of
1746          that version gives permission.
1747
1748       B. List on the Title Page, as authors, one or more persons or
1749          entities responsible for authorship of the modifications in
1750          the Modified Version, together with at least five of the
1751          principal authors of the Document (all of its principal
1752          authors, if it has fewer than five), unless they release you
1753          from this requirement.
1754
1755       C. State on the Title page the name of the publisher of the
1756          Modified Version, as the publisher.
1757
1758       D. Preserve all the copyright notices of the Document.
1759
1760       E. Add an appropriate copyright notice for your modifications
1761          adjacent to the other copyright notices.
1762
1763       F. Include, immediately after the copyright notices, a license
1764          notice giving the public permission to use the Modified
1765          Version under the terms of this License, in the form shown in
1766          the Addendum below.
1767
1768       G. Preserve in that license notice the full lists of Invariant
1769          Sections and required Cover Texts given in the Document's
1770          license notice.
1771
1772       H. Include an unaltered copy of this License.
1773
1774       I. Preserve the section Entitled "History", Preserve its Title,
1775          and add to it an item stating at least the title, year, new
1776          authors, and publisher of the Modified Version as given on
1777          the Title Page.  If there is no section Entitled "History" in
1778          the Document, create one stating the title, year, authors,
1779          and publisher of the Document as given on its Title Page,
1780          then add an item describing the Modified Version as stated in
1781          the previous sentence.
1782
1783       J. Preserve the network location, if any, given in the Document
1784          for public access to a Transparent copy of the Document, and
1785          likewise the network locations given in the Document for
1786          previous versions it was based on.  These may be placed in
1787          the "History" section.  You may omit a network location for a
1788          work that was published at least four years before the
1789          Document itself, or if the original publisher of the version
1790          it refers to gives permission.
1791
1792       K. For any section Entitled "Acknowledgements" or "Dedications",
1793          Preserve the Title of the section, and preserve in the
1794          section all the substance and tone of each of the contributor
1795          acknowledgements and/or dedications given therein.
1796
1797       L. Preserve all the Invariant Sections of the Document,
1798          unaltered in their text and in their titles.  Section numbers
1799          or the equivalent are not considered part of the section
1800          titles.
1801
1802       M. Delete any section Entitled "Endorsements".  Such a section
1803          may not be included in the Modified Version.
1804
1805       N. Do not retitle any existing section to be Entitled
1806          "Endorsements" or to conflict in title with any Invariant
1807          Section.
1808
1809       O. Preserve any Warranty Disclaimers.
1810
1811     If the Modified Version includes new front-matter sections or
1812     appendices that qualify as Secondary Sections and contain no
1813     material copied from the Document, you may at your option
1814     designate some or all of these sections as invariant.  To do this,
1815     add their titles to the list of Invariant Sections in the Modified
1816     Version's license notice.  These titles must be distinct from any
1817     other section titles.
1818
1819     You may add a section Entitled "Endorsements", provided it contains
1820     nothing but endorsements of your Modified Version by various
1821     parties--for example, statements of peer review or that the text
1822     has been approved by an organization as the authoritative
1823     definition of a standard.
1824
1825     You may add a passage of up to five words as a Front-Cover Text,
1826     and a passage of up to 25 words as a Back-Cover Text, to the end
1827     of the list of Cover Texts in the Modified Version.  Only one
1828     passage of Front-Cover Text and one of Back-Cover Text may be
1829     added by (or through arrangements made by) any one entity.  If the
1830     Document already includes a cover text for the same cover,
1831     previously added by you or by arrangement made by the same entity
1832     you are acting on behalf of, you may not add another; but you may
1833     replace the old one, on explicit permission from the previous
1834     publisher that added the old one.
1835
1836     The author(s) and publisher(s) of the Document do not by this
1837     License give permission to use their names for publicity for or to
1838     assert or imply endorsement of any Modified Version.
1839
1840  5. COMBINING DOCUMENTS
1841
1842     You may combine the Document with other documents released under
1843     this License, under the terms defined in section 4 above for
1844     modified versions, provided that you include in the combination
1845     all of the Invariant Sections of all of the original documents,
1846     unmodified, and list them all as Invariant Sections of your
1847     combined work in its license notice, and that you preserve all
1848     their Warranty Disclaimers.
1849
1850     The combined work need only contain one copy of this License, and
1851     multiple identical Invariant Sections may be replaced with a single
1852     copy.  If there are multiple Invariant Sections with the same name
1853     but different contents, make the title of each such section unique
1854     by adding at the end of it, in parentheses, the name of the
1855     original author or publisher of that section if known, or else a
1856     unique number.  Make the same adjustment to the section titles in
1857     the list of Invariant Sections in the license notice of the
1858     combined work.
1859
1860     In the combination, you must combine any sections Entitled
1861     "History" in the various original documents, forming one section
1862     Entitled "History"; likewise combine any sections Entitled
1863     "Acknowledgements", and any sections Entitled "Dedications".  You
1864     must delete all sections Entitled "Endorsements."
1865
1866  6. COLLECTIONS OF DOCUMENTS
1867
1868     You may make a collection consisting of the Document and other
1869     documents released under this License, and replace the individual
1870     copies of this License in the various documents with a single copy
1871     that is included in the collection, provided that you follow the
1872     rules of this License for verbatim copying of each of the
1873     documents in all other respects.
1874
1875     You may extract a single document from such a collection, and
1876     distribute it individually under this License, provided you insert
1877     a copy of this License into the extracted document, and follow
1878     this License in all other respects regarding verbatim copying of
1879     that document.
1880
1881  7. AGGREGATION WITH INDEPENDENT WORKS
1882
1883     A compilation of the Document or its derivatives with other
1884     separate and independent documents or works, in or on a volume of
1885     a storage or distribution medium, is called an "aggregate" if the
1886     copyright resulting from the compilation is not used to limit the
1887     legal rights of the compilation's users beyond what the individual
1888     works permit.  When the Document is included in an aggregate, this
1889     License does not apply to the other works in the aggregate which
1890     are not themselves derivative works of the Document.
1891
1892     If the Cover Text requirement of section 3 is applicable to these
1893     copies of the Document, then if the Document is less than one half
1894     of the entire aggregate, the Document's Cover Texts may be placed
1895     on covers that bracket the Document within the aggregate, or the
1896     electronic equivalent of covers if the Document is in electronic
1897     form.  Otherwise they must appear on printed covers that bracket
1898     the whole aggregate.
1899
1900  8. TRANSLATION
1901
1902     Translation is considered a kind of modification, so you may
1903     distribute translations of the Document under the terms of section
1904     4.  Replacing Invariant Sections with translations requires special
1905     permission from their copyright holders, but you may include
1906     translations of some or all Invariant Sections in addition to the
1907     original versions of these Invariant Sections.  You may include a
1908     translation of this License, and all the license notices in the
1909     Document, and any Warranty Disclaimers, provided that you also
1910     include the original English version of this License and the
1911     original versions of those notices and disclaimers.  In case of a
1912     disagreement between the translation and the original version of
1913     this License or a notice or disclaimer, the original version will
1914     prevail.
1915
1916     If a section in the Document is Entitled "Acknowledgements",
1917     "Dedications", or "History", the requirement (section 4) to
1918     Preserve its Title (section 1) will typically require changing the
1919     actual title.
1920
1921  9. TERMINATION
1922
1923     You may not copy, modify, sublicense, or distribute the Document
1924     except as expressly provided for under this License.  Any other
1925     attempt to copy, modify, sublicense or distribute the Document is
1926     void, and will automatically terminate your rights under this
1927     License.  However, parties who have received copies, or rights,
1928     from you under this License will not have their licenses
1929     terminated so long as such parties remain in full compliance.
1930
1931 10. FUTURE REVISIONS OF THIS LICENSE
1932
1933     The Free Software Foundation may publish new, revised versions of
1934     the GNU Free Documentation License from time to time.  Such new
1935     versions will be similar in spirit to the present version, but may
1936     differ in detail to address new problems or concerns.  See
1937     `http://www.gnu.org/copyleft/'.
1938
1939     Each version of the License is given a distinguishing version
1940     number.  If the Document specifies that a particular numbered
1941     version of this License "or any later version" applies to it, you
1942     have the option of following the terms and conditions either of
1943     that specified version or of any later version that has been
1944     published (not as a draft) by the Free Software Foundation.  If
1945     the Document does not specify a version number of this License,
1946     you may choose any version ever published (not as a draft) by the
1947     Free Software Foundation.
1948
1949ADDENDUM: How to use this License for your documents
1950====================================================
1951
1952To use this License in a document you have written, include a copy of
1953the License in the document and put the following copyright and license
1954notices just after the title page:
1955
1956       Copyright (C)  YEAR  YOUR NAME.
1957       Permission is granted to copy, distribute and/or modify this document
1958       under the terms of the GNU Free Documentation License, Version 1.2
1959       or any later version published by the Free Software Foundation;
1960       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
1961       Texts.  A copy of the license is included in the section entitled ``GNU
1962       Free Documentation License''.
1963
1964   If you have Invariant Sections, Front-Cover Texts and Back-Cover
1965Texts, replace the "with...Texts." line with this:
1966
1967         with the Invariant Sections being LIST THEIR TITLES, with
1968         the Front-Cover Texts being LIST, and with the Back-Cover Texts
1969         being LIST.
1970
1971   If you have Invariant Sections without Cover Texts, or some other
1972combination of the three, merge those two alternatives to suit the
1973situation.
1974
1975   If your document contains nontrivial examples of program code, we
1976recommend releasing these examples in parallel under your choice of
1977free software license, such as the GNU General Public License, to
1978permit their use in free software.
1979
1980
1981File: libgomp.info,  Node: Funding,  Next: Index,  Prev: GNU Free Documentation License,  Up: Top
1982
1983Funding Free Software
1984*********************
1985
1986If you want to have more free software a few years from now, it makes
1987sense for you to help encourage people to contribute funds for its
1988development.  The most effective approach known is to encourage
1989commercial redistributors to donate.
1990
1991   Users of free software systems can boost the pace of development by
1992encouraging for-a-fee distributors to donate part of their selling price
1993to free software developers--the Free Software Foundation, and others.
1994
1995   The way to convince distributors to do this is to demand it and
1996expect it from them.  So when you compare distributors, judge them
1997partly by how much they give to free software development.  Show
1998distributors they must compete to be the one who gives the most.
1999
2000   To make this approach work, you must insist on numbers that you can
2001compare, such as, "We will donate ten dollars to the Frobnitz project
2002for each disk sold."  Don't be satisfied with a vague promise, such as
2003"A portion of the profits are donated," since it doesn't give a basis
2004for comparison.
2005
2006   Even a precise fraction "of the profits from this disk" is not very
2007meaningful, since creative accounting and unrelated business decisions
2008can greatly alter what fraction of the sales price counts as profit.
2009If the price you pay is $50, ten percent of the profit is probably less
2010than a dollar; it might be a few cents, or nothing at all.
2011
2012   Some redistributors do development work themselves.  This is useful
2013too; but to keep everyone honest, you need to inquire how much they do,
2014and what kind.  Some kinds of development make much more long-term
2015difference than others.  For example, maintaining a separate version of
2016a program contributes very little; maintaining the standard version of a
2017program for the whole community contributes much.  Easy new ports
2018contribute little, since someone else would surely do them; difficult
2019ports such as adding a new CPU to the GNU Compiler Collection
2020contribute more; major new features or packages contribute the most.
2021
2022   By establishing the idea that supporting further development is "the
2023proper thing to do" when distributing free software for a fee, we can
2024assure a steady flow of resources into making more free software.
2025
2026     Copyright (C) 1994 Free Software Foundation, Inc.
2027     Verbatim copying and redistribution of this section is permitted
2028     without royalty; alteration is not permitted.
2029
2030
2031File: libgomp.info,  Node: Index,  Prev: Funding,  Up: Top
2032
2033Index
2034*****
2035
2036�[index�]
2037* Menu:
2038
2039* Environment Variable <1>:              GOMP_STACKSIZE.        (line 6)
2040* Environment Variable <2>:              GOMP_CPU_AFFINITY.     (line 6)
2041* Environment Variable <3>:              OMP_SCHEDULE.          (line 6)
2042* Environment Variable <4>:              OMP_NUM_THREADS.       (line 6)
2043* Environment Variable <5>:              OMP_NESTED.            (line 6)
2044* Environment Variable:                  OMP_DYNAMIC.           (line 6)
2045* FDL, GNU Free Documentation License:   GNU Free Documentation License.
2046                                                                (line 6)
2047* Implementation specific setting <1>:   GOMP_STACKSIZE.        (line 6)
2048* Implementation specific setting <2>:   OMP_SCHEDULE.          (line 6)
2049* Implementation specific setting <3>:   OMP_NUM_THREADS.       (line 6)
2050* Implementation specific setting <4>:   OMP_NESTED.            (line 6)
2051* Implementation specific setting:       OMP_DYNAMIC.           (line 6)
2052* Introduction:                          Top.                   (line 6)
2053
2054
2055
2056Tag Table:
2057Node: Top2111
2058Node: Enabling OpenMP3305
2059Node: Runtime Library Routines4090
2060Node: omp_get_dynamic5791
2061Node: omp_get_max_threads6635
2062Node: omp_get_nested7291
2063Node: omp_get_num_procs8199
2064Node: omp_get_num_threads8713
2065Node: omp_get_thread_num9785
2066Node: omp_in_parallel10574
2067Node: omp_set_dynamic11218
2068Node: omp_set_nested12041
2069Node: omp_set_num_threads12906
2070Node: omp_init_lock13741
2071Node: omp_set_lock14394
2072Node: omp_test_lock15243
2073Node: omp_unset_lock16269
2074Node: omp_destroy_lock17195
2075Node: omp_init_nest_lock17865
2076Node: omp_set_nest_lock18597
2077Node: omp_test_nest_lock19506
2078Node: omp_unset_nest_lock20604
2079Node: omp_destroy_nest_lock21613
2080Node: omp_get_wtick22361
2081Node: omp_get_wtime22948
2082Node: Environment Variables23731
2083Node: OMP_DYNAMIC24444
2084Node: OMP_NESTED25001
2085Node: OMP_NUM_THREADS25595
2086Node: OMP_SCHEDULE26167
2087Node: GOMP_CPU_AFFINITY26815
2088Node: GOMP_STACKSIZE27367
2089Node: The libgomp ABI28141
2090Node: Implementing MASTER construct28939
2091Node: Implementing CRITICAL construct29352
2092Node: Implementing ATOMIC construct30100
2093Node: Implementing FLUSH construct30581
2094Node: Implementing BARRIER construct30852
2095Node: Implementing THREADPRIVATE construct31121
2096Node: Implementing PRIVATE clause31773
2097Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses32354
2098Node: Implementing REDUCTION clause33669
2099Node: Implementing PARALLEL construct34225
2100Node: Implementing FOR construct35482
2101Node: Implementing ORDERED construct37480
2102Node: Implementing SECTIONS construct37786
2103Node: Implementing SINGLE construct38552
2104Node: Reporting Bugs39214
2105Node: Copying39522
2106Node: GNU Free Documentation License58732
2107Node: Funding81143
2108Node: Index83660
2109
2110End Tag Table
2111