OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [libgomp/] [libgomp.info] - Blame information for rev 179

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 38 julius
This is libgomp.info, produced by makeinfo version 4.8 from
2
/scratch/mitchell/gcc-releases/gcc-4.2.2/gcc-4.2.2/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
7
under the terms of the GNU Free Documentation License, Version 1.1 or
8
any later version published by the Free Software Foundation; with the
9
Invariant Sections being "GNU General Public License" and "Funding Free
10
Software", the Front-Cover texts being (a) (see below), and with the
11
Back-Cover Texts being (b) (see below).  A copy of the license is
12
included in the section entitled "GNU Free Documentation License".
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
21
software.  Copies published by the Free Software Foundation raise
22
funds for GNU development.
23
 
24
INFO-DIR-SECTION GNU Libraries
25
START-INFO-DIR-ENTRY
26
* libgomp: (libgomp).                    GNU OpenMP runtime library
27
END-INFO-DIR-ENTRY
28
 
29
   This manual documents the GNU implementation of the OpenMP API for
30
multi-platform shared-memory parallel programming in C/C++ and Fortran.
31
 
32
   Published by the Free Software Foundation 51 Franklin Street, Fifth
33
Floor 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
38
under the terms of the GNU Free Documentation License, Version 1.1 or
39
any later version published by the Free Software Foundation; with the
40
Invariant Sections being "GNU General Public License" and "Funding Free
41
Software", the Front-Cover texts being (a) (see below), and with the
42
Back-Cover Texts being (b) (see below).  A copy of the license is
43
included in the section entitled "GNU Free Documentation License".
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
52
software.  Copies published by the Free Software Foundation raise
53
funds for GNU development.
54
 
55

56
File: libgomp.info,  Node: Top,  Next: Enabling OpenMP,  Up: (dir)
57
 
58
Introduction
59
************
60
 
61
This manual documents the usage of libgomp, the GNU implementation of
62
the OpenMP (http://www.openmp.org) Application Programming Interface
63
(API) for multi-platform shared-memory parallel programming in C/C++
64
and Fortran.
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

84
File: libgomp.info,  Node: Enabling OpenMP,  Next: Runtime Library Routines,  Prev: Top,  Up: Top
85
 
86
1 Enabling OpenMP
87
*****************
88
 
89
To activate the OpenMP extensions for C/C++ and Fortran, the
90
compile-time flag `-fopenmp' must be specified. This enables the OpenMP
91
directive `#pragma omp' in C/C++ and `!$omp' directives in free form,
92
`c$omp', `*$omp' and `!$omp' directives in fixed form, `!$' conditional
93
compilation sentinels in free form and `c$', `*$' and `!$' sentinels in
94
fixed form, for Fortran. The flag also arranges for automatic linking
95
of the OpenMP runtime library (*Note Runtime Library Routines::).
96
 
97
   A complete description of all OpenMP directives accepted may be
98
found in the OpenMP Application Program Interface
99
(http://www.openmp.org) manual, version 2.5.
100
 
101

102
File: libgomp.info,  Node: Runtime Library Routines,  Next: Environment Variables,  Prev: Enabling OpenMP,  Up: Top
103
 
104
2 Runtime Library Routines
105
**************************
106
 
107
The runtime routines described here are defined by section 3 of the
108
OpenMP 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

148
File: libgomp.info,  Node: omp_get_dynamic,  Next: omp_get_max_threads,  Up: Runtime Library Routines
149
 
150
2.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

175
File: libgomp.info,  Node: omp_get_max_threads,  Next: omp_get_nested,  Prev: omp_get_dynamic,  Up: Runtime Library Routines
176
 
177
2.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

197
File: libgomp.info,  Node: omp_get_nested,  Next: omp_get_num_procs,  Prev: omp_get_max_threads,  Up: Runtime Library Routines
198
 
199
2.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

226
File: libgomp.info,  Node: omp_get_num_procs,  Next: omp_get_num_threads,  Prev: omp_get_nested,  Up: Runtime Library Routines
227
 
228
2.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

244
File: libgomp.info,  Node: omp_get_num_threads,  Next: omp_get_thread_num,  Prev: omp_get_num_procs,  Up: Runtime Library Routines
245
 
246
2.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

274
File: libgomp.info,  Node: omp_get_thread_num,  Next: omp_in_parallel,  Prev: omp_get_num_threads,  Up: Runtime Library Routines
275
 
276
2.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

299
File: libgomp.info,  Node: omp_in_parallel,  Next: omp_set_dynamic,  Prev: omp_get_thread_num,  Up: Runtime Library Routines
300
 
301
2.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

319
File: libgomp.info,  Node: omp_set_dynamic,  Next: omp_set_nested,  Prev: omp_in_parallel,  Up: Runtime Library Routines
320
 
321
2.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

344
File: libgomp.info,  Node: omp_set_nested,  Next: omp_set_num_threads,  Prev: omp_set_dynamic,  Up: Runtime Library Routines
345
 
346
2.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

369
File: libgomp.info,  Node: omp_set_num_threads,  Next: omp_init_lock,  Prev: omp_set_nested,  Up: Runtime Library Routines
370
 
371
2.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

394
File: libgomp.info,  Node: omp_init_lock,  Next: omp_set_lock,  Prev: omp_set_num_threads,  Up: Runtime Library Routines
395
 
396
2.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

417
File: libgomp.info,  Node: omp_set_lock,  Next: omp_test_lock,  Prev: omp_init_lock,  Up: Runtime Library Routines
418
 
419
2.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

443
File: libgomp.info,  Node: omp_test_lock,  Next: omp_unset_lock,  Prev: omp_set_lock,  Up: Runtime Library Routines
444
 
445
2.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

470
File: libgomp.info,  Node: omp_unset_lock,  Next: omp_destroy_lock,  Prev: omp_test_lock,  Up: Runtime Library Routines
471
 
472
2.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

497
File: libgomp.info,  Node: omp_destroy_lock,  Next: omp_init_nest_lock,  Prev: omp_unset_lock,  Up: Runtime Library Routines
498
 
499
2.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

520
File: libgomp.info,  Node: omp_init_nest_lock,  Next: omp_set_nest_lock,  Prev: omp_destroy_lock,  Up: Runtime Library Routines
521
 
522
2.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

543
File: libgomp.info,  Node: omp_set_nest_lock,  Next: omp_test_nest_lock,  Prev: omp_init_nest_lock,  Up: Runtime Library Routines
544
 
545
2.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

568
File: libgomp.info,  Node: omp_test_nest_lock,  Next: omp_unset_nest_lock,  Prev: omp_set_nest_lock,  Up: Runtime Library Routines
569
 
570
2.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

596
File: libgomp.info,  Node: omp_unset_nest_lock,  Next: omp_destroy_nest_lock,  Prev: omp_test_nest_lock,  Up: Runtime Library Routines
597
 
598
2.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

624
File: libgomp.info,  Node: omp_destroy_nest_lock,  Next: omp_get_wtick,  Prev: omp_unset_nest_lock,  Up: Runtime Library Routines
625
 
626
2.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

648
File: libgomp.info,  Node: omp_get_wtick,  Next: omp_get_wtime,  Prev: omp_destroy_nest_lock,  Up: Runtime Library Routines
649
 
650
2.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

670
File: libgomp.info,  Node: omp_get_wtime,  Prev: omp_get_wtick,  Up: Runtime Library Routines
671
 
672
2.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

695
File: libgomp.info,  Node: Environment Variables,  Next: The libgomp ABI,  Prev: Runtime Library Routines,  Up: Top
696
 
697
3 Environment Variables
698
***********************
699
 
700
The variables `OMP_DYNAMIC', `OMP_NESTED', `OMP_NUM_THREADS' and
701
`OMP_SCHEDULE' are defined by section 4 of the OpenMP specifications in
702
version 2.5, while `GOMP_CPU_AFFINITY' and `GOMP_STACKSIZE' are GNU
703
extensions.
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

715
File: libgomp.info,  Node: OMP_DYNAMIC,  Next: OMP_NESTED,  Up: Environment Variables
716
 
717
3.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

733
File: libgomp.info,  Node: OMP_NESTED,  Next: OMP_NUM_THREADS,  Prev: OMP_DYNAMIC,  Up: Environment Variables
734
 
735
3.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

751
File: libgomp.info,  Node: OMP_NUM_THREADS,  Next: OMP_SCHEDULE,  Prev: OMP_NESTED,  Up: Environment Variables
752
 
753
3.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

768
File: libgomp.info,  Node: OMP_SCHEDULE,  Next: GOMP_CPU_AFFINITY,  Prev: OMP_NUM_THREADS,  Up: Environment Variables
769
 
770
3.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

785
File: libgomp.info,  Node: GOMP_CPU_AFFINITY,  Next: GOMP_STACKSIZE,  Prev: OMP_SCHEDULE,  Up: Environment Variables
786
 
787
3.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

801
File: libgomp.info,  Node: GOMP_STACKSIZE,  Prev: GOMP_CPU_AFFINITY,  Up: Environment Variables
802
 
803
3.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

821
File: libgomp.info,  Node: The libgomp ABI,  Next: Reporting Bugs,  Prev: Environment Variables,  Up: Top
822
 
823
4 The libgomp ABI
824
*****************
825
 
826
The following sections present notes on the external ABI as presented
827
by 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

847
File: libgomp.info,  Node: Implementing MASTER construct,  Next: Implementing CRITICAL construct,  Up: The libgomp ABI
848
 
849
4.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
856
only include this in the version run by the master thread.  Surely
857
that's not worthwhile though...
858
 
859

860
File: libgomp.info,  Node: Implementing CRITICAL construct,  Next: Implementing ATOMIC construct,  Prev: Implementing MASTER construct,  Up: The libgomp ABI
861
 
862
4.2 Implementing CRITICAL construct
863
===================================
864
 
865
Without 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
871
application.
872
 
873
   With a specified name, use omp_set_lock and omp_unset_lock with name
874
being transformed into a variable declared like
875
 
876
       omp_lock_t gomp_critical_user_ __attribute__((common))
877
 
878
   Ideally the ABI would specify that all zero is a valid unlocked
879
state, and so we wouldn't actually need to initialize this at startup.
880
 
881

882
File: libgomp.info,  Node: Implementing ATOMIC construct,  Next: Implementing FLUSH construct,  Prev: Implementing CRITICAL construct,  Up: The libgomp ABI
883
 
884
4.3 Implementing ATOMIC construct
885
=================================
886
 
887
The 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
895
private to the library.
896
 
897

898
File: libgomp.info,  Node: Implementing FLUSH construct,  Next: Implementing BARRIER construct,  Prev: Implementing ATOMIC construct,  Up: The libgomp ABI
899
 
900
4.4 Implementing FLUSH construct
901
================================
902
 
903
Expands to the `__sync_synchronize' builtin.
904
 
905

906
File: libgomp.info,  Node: Implementing BARRIER construct,  Next: Implementing THREADPRIVATE construct,  Prev: Implementing FLUSH construct,  Up: The libgomp ABI
907
 
908
4.5 Implementing BARRIER construct
909
==================================
910
 
911
       void GOMP_barrier (void)
912
 
913

914
File: libgomp.info,  Node: Implementing THREADPRIVATE construct,  Next: Implementing PRIVATE clause,  Prev: Implementing BARRIER construct,  Up: The libgomp ABI
915
 
916
4.6 Implementing THREADPRIVATE construct
917
========================================
918
 
919
In _most_ cases we can map this directly to `__thread'.  Except that
920
OMP allows constructors for C++ objects.  We can either refuse to
921
support this (how often is it used?) or we can implement something akin
922
to .ctors.
923
 
924
   Even more ideally, this ctor feature is handled by extensions to the
925
main pthreads library.  Failing that, we can have a set of entry points
926
to register ctor functions to be called.
927
 
928

929
File: libgomp.info,  Node: Implementing PRIVATE clause,  Next: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Prev: Implementing THREADPRIVATE construct,  Up: The libgomp ABI
930
 
931
4.7 Implementing PRIVATE clause
932
===============================
933
 
934
In association with a PARALLEL, or within the lexical extent of a
935
PARALLEL block, the variable becomes a local variable in the parallel
936
subfunction.
937
 
938
   In association with FOR or SECTIONS blocks, create a new automatic
939
variable within the current function.  This preserves the semantic of
940
new variable creation.
941
 
942

943
File: libgomp.info,  Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Next: Implementing REDUCTION clause,  Prev: Implementing PRIVATE clause,  Up: The libgomp ABI
944
 
945
4.8 Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses
946
========================================================================
947
 
948
Seems simple enough for PARALLEL blocks.  Create a private struct for
949
communicating between parent and subfunction.  In the parent, copy in
950
values for scalar and "small" structs; copy in addresses for others
951
TREE_ADDRESSABLE types.  In the subfunction, copy the value into the
952
local variable.
953
 
954
   Not clear at all what to do with bare FOR or SECTION blocks.  The
955
only 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
973
for the two variables, i.e. not something you could write directly in
974
C.  Presumably this only makes sense if the "outer" x and y are global
975
variables.
976
 
977
   COPYPRIVATE would work the same way, except the structure broadcast
978
would have to happen via SINGLE machinery instead.
979
 
980

981
File: libgomp.info,  Node: Implementing REDUCTION clause,  Next: Implementing PARALLEL construct,  Prev: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses,  Up: The libgomp ABI
982
 
983
4.9 Implementing REDUCTION clause
984
=================================
985
 
986
The private struct mentioned in the previous section should have a
987
pointer to an array of the type of the variable, indexed by the
988
thread's TEAM_ID.  The thread stores its final value into the array,
989
and after the barrier the master thread iterates over the array to
990
collect the values.
991
 
992

993
File: libgomp.info,  Node: Implementing PARALLEL construct,  Next: Implementing FOR construct,  Prev: Implementing REDUCTION clause,  Up: The libgomp ABI
994
 
995
4.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
1021
data in and out of the subfunction, as discussed above with respect to
1022
FIRSTPRIVATE et al.
1023
 
1024
   The NUM_THREADS argument is 1 if an IF clause is present and false,
1025
or the value of the NUM_THREADS clause, if present, or 0.
1026
 
1027
   The function needs to create the appropriate number of threads
1028
and/or launch them from the dock.  It needs to create the team
1029
structure 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

1037
File: libgomp.info,  Node: Implementing FOR construct,  Next: Implementing ORDERED construct,  Prev: Implementing PARALLEL construct,  Up: The libgomp ABI
1038
 
1039
4.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
1082
non-constant STEP, there isn't really.  We're explicitly allowed to
1083
evaluate it as many times as we want, and any variables involved should
1084
automatically be handled as PRIVATE or SHARED like any other variables.
1085
So the expression should remain evaluable in the subfunction.  We can
1086
also pull it into a local variable if we like, but since its supposed
1087
to remain unchanged, we can also not if we like.
1088
 
1089
   If we have SCHEDULE(STATIC), and no ORDERED, then we ought to be
1090
able to get away with no work-sharing context at all, since we can
1091
simply perform the arithmetic directly in each thread to divide up the
1092
iterations.  Which would mean that we wouldn't need to call any of
1093
these routines.
1094
 
1095
   There are separate routines for handling loops with an ORDERED
1096
clause.  Bookkeeping for that is non-trivial...
1097
 
1098

1099
File: libgomp.info,  Node: Implementing ORDERED construct,  Next: Implementing SECTIONS construct,  Prev: Implementing FOR construct,  Up: The libgomp ABI
1100
 
1101
4.12 Implementing ORDERED construct
1102
===================================
1103
 
1104
       void GOMP_ordered_start (void)
1105
       void GOMP_ordered_end (void)
1106
 
1107

1108
File: libgomp.info,  Node: Implementing SECTIONS construct,  Next: Implementing SINGLE construct,  Prev: Implementing ORDERED construct,  Up: The libgomp ABI
1109
 
1110
4.13 Implementing SECTIONS construct
1111
====================================
1112
 
1113
A 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

1143
File: libgomp.info,  Node: Implementing SINGLE construct,  Prev: Implementing SECTIONS construct,  Up: The libgomp ABI
1144
 
1145
4.14 Implementing SINGLE construct
1146
==================================
1147
 
1148
A 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

1180
File: libgomp.info,  Node: Reporting Bugs,  Next: Copying,  Prev: The libgomp ABI,  Up: Top
1181
 
1182
5 Reporting Bugs
1183
****************
1184
 
1185
Bugs in the GNU OpenMP implementation should be reported via bugzilla
1186
(http://gcc.gnu.org/bugzilla/). In all cases, please add "openmp" to
1187
the keywords field in the bug report.
1188
 
1189

1190
File: libgomp.info,  Node: Copying,  Next: GNU Free Documentation License,  Prev: Reporting Bugs,  Up: Top
1191
 
1192
GNU 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
 
1203
Preamble
1204
========
1205
 
1206
The licenses for most software are designed to take away your freedom
1207
to share and change it.  By contrast, the GNU General Public License is
1208
intended to guarantee your freedom to share and change free
1209
software--to make sure the software is free for all its users.  This
1210
General Public License applies to most of the Free Software
1211
Foundation's software and to any other program whose authors commit to
1212
using it.  (Some other Free Software Foundation software is covered by
1213
the GNU Library General Public License instead.)  You can apply it to
1214
your programs, too.
1215
 
1216
   When we speak of free software, we are referring to freedom, not
1217
price.  Our General Public Licenses are designed to make sure that you
1218
have the freedom to distribute copies of free software (and charge for
1219
this service if you wish), that you receive source code or can get it
1220
if you want it, that you can change the software or use pieces of it in
1221
new free programs; and that you know you can do these things.
1222
 
1223
   To protect your rights, we need to make restrictions that forbid
1224
anyone to deny you these rights or to ask you to surrender the rights.
1225
These restrictions translate to certain responsibilities for you if you
1226
distribute copies of the software, or if you modify it.
1227
 
1228
   For example, if you distribute copies of such a program, whether
1229
gratis or for a fee, you must give the recipients all the rights that
1230
you have.  You must make sure that they, too, receive or can get the
1231
source code.  And you must show them these terms so they know their
1232
rights.
1233
 
1234
   We protect your rights with two steps: (1) copyright the software,
1235
and (2) offer you this license which gives you legal permission to copy,
1236
distribute and/or modify the software.
1237
 
1238
   Also, for each author's protection and ours, we want to make certain
1239
that everyone understands that there is no warranty for this free
1240
software.  If the software is modified by someone else and passed on, we
1241
want its recipients to know that what they have is not the original, so
1242
that any problems introduced by others will not reflect on the original
1243
authors' reputations.
1244
 
1245
   Finally, any free program is threatened constantly by software
1246
patents.  We wish to avoid the danger that redistributors of a free
1247
program will individually obtain patent licenses, in effect making the
1248
program proprietary.  To prevent this, we have made it clear that any
1249
patent must be licensed for everyone's free use or not licensed at all.
1250
 
1251
   The precise terms and conditions for copying, distribution and
1252
modification 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
1484
Appendix: How to Apply These Terms to Your New Programs
1485
=======================================================
1486
 
1487
If you develop a new program, and you want it to be of the greatest
1488
possible use to the public, the best way to achieve this is to make it
1489
free software which everyone can redistribute and change under these
1490
terms.
1491
 
1492
   To do so, attach the following notices to the program.  It is safest
1493
to attach them to the start of each source file to most effectively
1494
convey the exclusion of warranty; and each file should have at least
1495
the "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
1515
mail.
1516
 
1517
   If the program is interactive, make it output a short notice like
1518
this 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
1527
appropriate parts of the General Public License.  Of course, the
1528
commands you use may be called something other than `show w' and `show
1529
c'; they could even be mouse-clicks or menu items--whatever suits your
1530
program.
1531
 
1532
   You should also get your employer (if you work as a programmer) or
1533
your school, if any, to sign a "copyright disclaimer" for the program,
1534
if 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
1543
program into proprietary programs.  If your program is a subroutine
1544
library, you may consider it more useful to permit linking proprietary
1545
applications with the library.  If this is what you want to do, use the
1546
GNU Library General Public License instead of this License.
1547
 
1548

1549
File: libgomp.info,  Node: GNU Free Documentation License,  Next: Funding,  Prev: Copying,  Up: Top
1550
 
1551
GNU 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
 
1949
ADDENDUM: How to use this License for your documents
1950
====================================================
1951
 
1952
To use this License in a document you have written, include a copy of
1953
the License in the document and put the following copyright and license
1954
notices 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
1965
Texts, 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
1972
combination of the three, merge those two alternatives to suit the
1973
situation.
1974
 
1975
   If your document contains nontrivial examples of program code, we
1976
recommend releasing these examples in parallel under your choice of
1977
free software license, such as the GNU General Public License, to
1978
permit their use in free software.
1979
 
1980

1981
File: libgomp.info,  Node: Funding,  Next: Index,  Prev: GNU Free Documentation License,  Up: Top
1982
 
1983
Funding Free Software
1984
*********************
1985
 
1986
If you want to have more free software a few years from now, it makes
1987
sense for you to help encourage people to contribute funds for its
1988
development.  The most effective approach known is to encourage
1989
commercial redistributors to donate.
1990
 
1991
   Users of free software systems can boost the pace of development by
1992
encouraging for-a-fee distributors to donate part of their selling price
1993
to free software developers--the Free Software Foundation, and others.
1994
 
1995
   The way to convince distributors to do this is to demand it and
1996
expect it from them.  So when you compare distributors, judge them
1997
partly by how much they give to free software development.  Show
1998
distributors 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
2001
compare, such as, "We will donate ten dollars to the Frobnitz project
2002
for 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
2004
for comparison.
2005
 
2006
   Even a precise fraction "of the profits from this disk" is not very
2007
meaningful, since creative accounting and unrelated business decisions
2008
can greatly alter what fraction of the sales price counts as profit.
2009
If the price you pay is $50, ten percent of the profit is probably less
2010
than a dollar; it might be a few cents, or nothing at all.
2011
 
2012
   Some redistributors do development work themselves.  This is useful
2013
too; but to keep everyone honest, you need to inquire how much they do,
2014
and what kind.  Some kinds of development make much more long-term
2015
difference than others.  For example, maintaining a separate version of
2016
a program contributes very little; maintaining the standard version of a
2017
program for the whole community contributes much.  Easy new ports
2018
contribute little, since someone else would surely do them; difficult
2019
ports such as adding a new CPU to the GNU Compiler Collection
2020
contribute more; major new features or packages contribute the most.
2021
 
2022
   By establishing the idea that supporting further development is "the
2023
proper thing to do" when distributing free software for a fee, we can
2024
assure 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

2031
File: libgomp.info,  Node: Index,  Prev: Funding,  Up: Top
2032
 
2033
Index
2034
*****
2035
 
2036
 
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
 
2051
 
2052
* Introduction:                          Top.                   (line 6)
2053
2054
2055

2056
Tag Table:
2057
Node: Top2111
2058
Node: Enabling OpenMP3305
2059
Node: Runtime Library Routines4090
2060
Node: omp_get_dynamic5791
2061
Node: omp_get_max_threads6635
2062
Node: omp_get_nested7291
2063
Node: omp_get_num_procs8199
2064
Node: omp_get_num_threads8713
2065
Node: omp_get_thread_num9785
2066
Node: omp_in_parallel10574
2067
Node: omp_set_dynamic11218
2068
Node: omp_set_nested12041
2069
Node: omp_set_num_threads12906
2070
Node: omp_init_lock13741
2071
Node: omp_set_lock14394
2072
Node: omp_test_lock15243
2073
Node: omp_unset_lock16269
2074
Node: omp_destroy_lock17195
2075
Node: omp_init_nest_lock17865
2076
Node: omp_set_nest_lock18597
2077
Node: omp_test_nest_lock19506
2078
Node: omp_unset_nest_lock20604
2079
Node: omp_destroy_nest_lock21613
2080
Node: omp_get_wtick22361
2081
Node: omp_get_wtime22948
2082
Node: Environment Variables23731
2083
Node: OMP_DYNAMIC24444
2084
Node: OMP_NESTED25001
2085
Node: OMP_NUM_THREADS25595
2086
Node: OMP_SCHEDULE26167
2087
Node: GOMP_CPU_AFFINITY26815
2088
Node: GOMP_STACKSIZE27367
2089
Node: The libgomp ABI28141
2090
Node: Implementing MASTER construct28939
2091
Node: Implementing CRITICAL construct29352
2092
Node: Implementing ATOMIC construct30100
2093
Node: Implementing FLUSH construct30581
2094
Node: Implementing BARRIER construct30852
2095
Node: Implementing THREADPRIVATE construct31121
2096
Node: Implementing PRIVATE clause31773
2097
Node: Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses32354
2098
Node: Implementing REDUCTION clause33669
2099
Node: Implementing PARALLEL construct34225
2100
Node: Implementing FOR construct35482
2101
Node: Implementing ORDERED construct37480
2102
Node: Implementing SECTIONS construct37786
2103
Node: Implementing SINGLE construct38552
2104
Node: Reporting Bugs39214
2105
Node: Copying39522
2106
Node: GNU Free Documentation License58732
2107
Node: Funding81143

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.