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