diff options
author | Martin Liska <mliska@suse.cz> | 2022-11-07 12:54:13 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-11-09 09:00:35 +0100 |
commit | c63539ffe4c0e327337a1a51f638d9c8c958cb26 (patch) | |
tree | b7e150794087c7f95700d86df3075e27c37c1f77 /libgomp | |
parent | 38ec5e4bc8fed58e278e6dcad999d38c5efc1340 (diff) | |
download | gcc-c63539ffe4c0e327337a1a51f638d9c8c958cb26.zip gcc-c63539ffe4c0e327337a1a51f638d9c8c958cb26.tar.gz gcc-c63539ffe4c0e327337a1a51f638d9c8c958cb26.tar.bz2 |
sphinx: copy files from texi2rst-generated repository
ChangeLog:
* doc/Makefile: New file.
* doc/_static/custom.css: New file.
* doc/baseconf.py: New file.
* doc/bsd.rst: New file.
* doc/contrib.rst: New file.
* doc/contribute.rst: New file.
* doc/cppdiropts.rst: New file.
* doc/cppenv.rst: New file.
* doc/cppopts.rst: New file.
* doc/cppwarnopts.rst: New file.
* doc/favicon.ico: New file.
* doc/funding.rst: New file.
* doc/gcc_sphinx.py: New file.
* doc/gnu.rst: New file.
* doc/gnu_free_documentation_license.rst: New file.
* doc/gpl-3.0.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/lgpl-2.1.rst: New file.
* doc/logo.pdf: New file.
* doc/logo.svg: New file.
* doc/md.rst: New file.
* doc/requirements.txt: New file.
gcc/d/ChangeLog:
* doc/conf.py: New file.
* doc/copyright.rst: New file.
* doc/general-public-license-3.rst: New file.
* doc/gnu-free-documentation-license.rst: New file.
* doc/index.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/invoking-gdc.rst: New file.
* doc/invoking-gdc/code-generation.rst: New file.
* doc/invoking-gdc/developer-options.rst: New file.
* doc/invoking-gdc/input-and-output-files.rst: New file.
* doc/invoking-gdc/options-for-directory-search.rst: New file.
* doc/invoking-gdc/options-for-linking.rst: New file.
* doc/invoking-gdc/runtime-options.rst: New file.
* doc/invoking-gdc/warnings.rst: New file.
gcc/ChangeLog:
* doc/cpp/character-sets.rst: New file.
* doc/cpp/conditional-syntax.rst: New file.
* doc/cpp/conditional-uses.rst: New file.
* doc/cpp/conditionals.rst: New file.
* doc/cpp/conf.py: New file.
* doc/cpp/copyright.rst: New file.
* doc/cpp/deleted-code.rst: New file.
* doc/cpp/diagnostics.rst: New file.
* doc/cpp/environment-variables.rst: New file.
* doc/cpp/gnu-free-documentation-license.rst: New file.
* doc/cpp/header-files.rst: New file.
* doc/cpp/header-files/alternatives-to-wrapper-ifndef.rst: New file.
* doc/cpp/header-files/computed-includes.rst: New file.
* doc/cpp/header-files/include-operation.rst: New file.
* doc/cpp/header-files/include-syntax.rst: New file.
* doc/cpp/header-files/once-only-headers.rst: New file.
* doc/cpp/header-files/search-path.rst: New file.
* doc/cpp/header-files/system-headers.rst: New file.
* doc/cpp/header-files/wrapper-headers.rst: New file.
* doc/cpp/implementation-defined-behavior.rst: New file.
* doc/cpp/implementation-details.rst: New file.
* doc/cpp/implementation-limits.rst: New file.
* doc/cpp/index.rst: New file.
* doc/cpp/indices-and-tables.rst: New file.
* doc/cpp/initial-processing.rst: New file.
* doc/cpp/invocation.rst: New file.
* doc/cpp/line-control.rst: New file.
* doc/cpp/macros.rst: New file.
* doc/cpp/macros/concatenation.rst: New file.
* doc/cpp/macros/directives-within-macro-arguments.rst: New file.
* doc/cpp/macros/function-like-macros.rst: New file.
* doc/cpp/macros/macro-arguments.rst: New file.
* doc/cpp/macros/macro-pitfalls.rst: New file.
* doc/cpp/macros/object-like-macros.rst: New file.
* doc/cpp/macros/predefined-macros.rst: New file.
* doc/cpp/macros/stringizing.rst: New file.
* doc/cpp/macros/undefining-and-redefining-macros.rst: New file.
* doc/cpp/macros/variadic-macros.rst: New file.
* doc/cpp/obsolete-features.rst: New file.
* doc/cpp/other-directives.rst: New file.
* doc/cpp/overview.rst: New file.
* doc/cpp/pragmas.rst: New file.
* doc/cpp/preprocessor-output.rst: New file.
* doc/cpp/the-preprocessing-language.rst: New file.
* doc/cpp/tokenization.rst: New file.
* doc/cpp/traditional-lexical-analysis.rst: New file.
* doc/cpp/traditional-macros.rst: New file.
* doc/cpp/traditional-miscellany.rst: New file.
* doc/cpp/traditional-mode.rst: New file.
* doc/cpp/traditional-warnings.rst: New file.
* doc/cppinternals/conf.py: New file.
* doc/cppinternals/copyright.rst: New file.
* doc/cppinternals/cppinternals.rst: New file.
* doc/cppinternals/cpplib.rst: New file.
* doc/cppinternals/files.rst: New file.
* doc/cppinternals/index.rst: New file.
* doc/cppinternals/indices-and-tables.rst: New file.
* doc/cppinternals/internal-representation-of-macros.rst: New file.
* doc/cppinternals/just-which-line-number-anyway.rst: New file.
* doc/cppinternals/lexing-a-line.rst: New file.
* doc/cppinternals/lexing-a-token.rst: New file.
* doc/cppinternals/looking-for-a-function-like-macros-opening-parenthesis.rst: New file.
* doc/cppinternals/macro-expansion-overview.rst: New file.
* doc/cppinternals/marking-tokens-ineligible-for-future-expansion.rst: New file.
* doc/cppinternals/multiple-include-optimization.rst: New file.
* doc/cppinternals/overview.rst: New file.
* doc/cppinternals/representation-of-line-numbers.rst: New file.
* doc/cppinternals/scanning-the-replacement-list-for-macros-to-expand.rst: New file.
* doc/gcc/binary-compatibility.rst: New file.
* doc/gcc/c++-implementation-defined-behavior.rst: New file.
* doc/gcc/c-implementation-defined-behavior.rst: New file.
* doc/gcc/c-implementation-defined-behavior/architecture.rst: New file.
* doc/gcc/c-implementation-defined-behavior/arrays-and-pointers.rst: New file.
* doc/gcc/c-implementation-defined-behavior/characters.rst: New file.
* doc/gcc/c-implementation-defined-behavior/declarators.rst: New file.
* doc/gcc/c-implementation-defined-behavior/environment.rst: New file.
* doc/gcc/c-implementation-defined-behavior/floating-point.rst: New file.
* doc/gcc/c-implementation-defined-behavior/hints.rst: New file.
* doc/gcc/c-implementation-defined-behavior/identifiers.rst: New file.
* doc/gcc/c-implementation-defined-behavior/integers.rst: New file.
* doc/gcc/c-implementation-defined-behavior/library-functions.rst: New file.
* doc/gcc/c-implementation-defined-behavior/locale-specific-behavior.rst: New file.
* doc/gcc/c-implementation-defined-behavior/preprocessing-directives.rst: New file.
* doc/gcc/c-implementation-defined-behavior/qualifiers.rst: New file.
* doc/gcc/c-implementation-defined-behavior/statements.rst: New file.
* doc/gcc/c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst:
New file.
* doc/gcc/c-implementation-defined-behavior/translation.rst: New file.
* doc/gcc/conditionally-supported-behavior.rst: New file.
* doc/gcc/conf.py: New file.
* doc/gcc/contributing-to-gcc-development.rst: New file.
* doc/gcc/contributors-to-gcc.rst: New file.
* doc/gcc/copyright.rst: New file.
* doc/gcc/exception-handling.rst: New file.
* doc/gcc/extensions-to-the-c++-language.rst: New file.
* doc/gcc/extensions-to-the-c++-language/backwards-compatibility.rst: New file.
* doc/gcc/extensions-to-the-c++-language/c++-concepts.rst: New file.
* doc/gcc/extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst:
New file.
* doc/gcc/extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c++-language/deprecated-features.rst: New file.
* doc/gcc/extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst:
New file.
* doc/gcc/extensions-to-the-c++-language/function-multiversioning.rst: New file.
* doc/gcc/extensions-to-the-c++-language/restricting-pointer-aliasing.rst: New file.
* doc/gcc/extensions-to-the-c++-language/type-traits.rst: New file.
* doc/gcc/extensions-to-the-c++-language/vague-linkage.rst: New file.
* doc/gcc/extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst:
New file.
* doc/gcc/extensions-to-the-c++-language/wheres-the-template.rst: New file.
* doc/gcc/extensions-to-the-c-language-family.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/128-bit-integers.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/additional-floating-types.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/alternate-keywords.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/an-inline-function-is-as-fast-as-a-macro.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/arithmetic-on-void-and-function-pointers.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/arrays-of-length-zero.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/arrays-of-variable-length.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/attribute-syntax.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/binary-constants-using-the-0b-prefix.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/built-in-functions-for-memory-model-aware-atomic-operations.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/built-in-functions-to-perform-arithmetic-with-overflow-checking.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/c++-style-comments.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/case-ranges.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/cast-to-a-union-type.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/complex-numbers.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/compound-literals.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/conditionals-with-omitted-operands.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/constructing-function-calls.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/decimal-floating-types.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/aarch64-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/amd-gcn-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arc-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arm-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/avr-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/blackfin-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/bpf-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/c-sky-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/common-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/epiphany-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/h8-300-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/ia-64-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32c-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32r-d-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m68k-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mcore-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mep-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microblaze-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microsoft-windows-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mips-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/msp430-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nds32-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nios-ii-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nvidia-ptx-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/powerpc-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/risc-v-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rl78-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rx-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/s-390-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/sh-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/symbian-os-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/v850-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/visium-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/x86-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/xstormy16-function-attributes.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/designated-initializers.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/determining-the-alignment-of-functions-types-or-variables.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/dollar-signs-in-identifier-names.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/double-word-integers.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/enumerator-attributes.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/fixed-point-types.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/format-checks-specific-to-particular-target-machines.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/function-names-as-strings.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/getting-the-return-or-frame-address-of-a-function.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/half-precision-floating-point.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/hex-floats.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/how-to-use-inline-assembly-language-in-c-code.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/incomplete-enum-types.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/label-attributes.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/labels-as-values.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/legacy-sync-built-in-functions-for-atomic-memory-access.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/locally-declared-labels.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/macros-with-a-variable-number-of-arguments.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/mixed-declarations-labels-and-code.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/named-address-spaces.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/nested-functions.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/non-constant-initializers.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/non-lvalue-arrays-may-have-subscripts.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/nonlocal-gotos.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/object-size-checking-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/other-built-in-functions-provided-by-gcc.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/pointer-arguments-in-variadic-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/pointers-to-arrays-with-qualifiers-work-as-expected.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/pragmas-accepted-by-gcc.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/prototypes-and-old-style-function-definitions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/referring-to-a-type-with-typeof.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/slightly-looser-rules-for-escaped-newlines.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-types.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-variables.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/statement-attributes.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/statements-and-declarations-in-expressions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/structures-with-no-members.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/support-for-offsetof.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/aarch64-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/alpha-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/altera-nios-ii-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-simd-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-armv8-m-security-extensions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-c-language-extensions-acle.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-floating-point-status-and-control-intrinsics.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-iwmmxt-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/avr-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/basic-powerpc-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/blackfin-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/bpf-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/fr-v-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-dsp-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-loongson-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-paired-single-support.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-simd-architecture-msa-support.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/msp430-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/nds32-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/other-mips-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/picochip-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-altivec-vsx-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-atomic-memory-operation-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-hardware-transactional-memory-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-matrix-multiply-assist-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/pru-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/risc-v-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/rx-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/s-390-system-z-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/sh-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/sparc-vis-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/ti-c6x-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-control-flow-protection-intrinsics.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-transactional-memory-intrinsics.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/the-character-esc-in-constants.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/thread-local-storage.rst: New file.
* doc/gcc/extensions-to-the-c-language-family/unnamed-structure-and-union-fields.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/using-vector-instructions-through-built-in-functions.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/when-is-a-volatile-object-accessed.rst:
New file.
* doc/gcc/extensions-to-the-c-language-family/x86-specific-memory-model-extensions-for-transactional-memory.rst:
New file.
* doc/gcc/funding.rst: New file.
* doc/gcc/gcc-command-options.rst: New file.
* doc/gcc/gcc-command-options/c++-modules.rst: New file.
* doc/gcc/gcc-command-options/compiling-c++-programs.rst: New file.
* doc/gcc/gcc-command-options/description.rst: New file.
* doc/gcc/gcc-command-options/environment-variables-affecting-gcc.rst: New file.
* doc/gcc/gcc-command-options/gcc-developer-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/adapteva-epiphany-options.rst:
New file.
* doc/gcc/gcc-command-options/machine-dependent-options/amd-gcn-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/arc-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/arm-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/avr-mmcu.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/blackfin-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/c-sky-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/c6x-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/cris-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/darwin-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/dec-alpha-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/ebpf-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/fr30-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/frv-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/ft32-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/gnu-linux-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/h8-300-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/hppa-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/ia-64-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/ibm-rs-6000-and-powerpc-options.rst:
New file.
* doc/gcc/gcc-command-options/machine-dependent-options/lm32-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/loongarch-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/m32c-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/m32r-d-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/m680x0-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/mcore-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/mep-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/microblaze-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/mips-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/mmix-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/mn10300-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/moxie-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/msp430-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/nds32-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/nios-ii-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/nvidia-ptx-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/openrisc-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/options-for-system-v.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/pdp-11-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/picochip-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/powerpc-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/pru-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/risc-v-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/rl78-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/rx-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/s-390-and-zseries-options.rst:
New file.
* doc/gcc/gcc-command-options/machine-dependent-options/score-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/sh-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/solaris-2-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/sparc-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/v850-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/vax-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/visium-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/vms-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/vxworks-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/x86-windows-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/xstormy16-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/xtensa-options.rst: New file.
* doc/gcc/gcc-command-options/machine-dependent-options/zseries-options.rst: New file.
* doc/gcc/gcc-command-options/option-summary.rst: New file.
* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst: New file.
* doc/gcc/gcc-command-options/options-controlling-c-dialect.rst: New file.
* doc/gcc/gcc-command-options/options-controlling-objective-c-and-objective-c++-dialects.rst:
New file.
* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst: New file.
* doc/gcc/gcc-command-options/options-controlling-the-preprocessor.rst: New file.
* doc/gcc/gcc-command-options/options-for-code-generation-conventions.rst: New file.
* doc/gcc/gcc-command-options/options-for-debugging-your-program.rst: New file.
* doc/gcc/gcc-command-options/options-for-directory-search.rst: New file.
* doc/gcc/gcc-command-options/options-for-linking.rst: New file.
* doc/gcc/gcc-command-options/options-that-control-optimization.rst: New file.
* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst: New file.
* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
New file.
* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst: New file.
* doc/gcc/gcc-command-options/passing-options-to-the-assembler.rst: New file.
* doc/gcc/gcc-command-options/program-instrumentation-options.rst: New file.
* doc/gcc/gcc-command-options/specifying-subprocesses-and-the-switches-to-pass-to-them.rst:
New file.
* doc/gcc/gcc-command-options/using-precompiled-headers.rst: New file.
* doc/gcc/gcc.rst: New file.
* doc/gcc/gcov-dump.rst: New file.
* doc/gcc/gcov-tool.rst: New file.
* doc/gcc/gcov.rst: New file.
* doc/gcc/gcov/brief-description-of-gcov-data-files.rst: New file.
* doc/gcc/gcov/data-file-relocation-to-support-cross-profiling.rst: New file.
* doc/gcc/gcov/introduction-to-gcov.rst: New file.
* doc/gcc/gcov/invoking-gcov.rst: New file.
* doc/gcc/gcov/profiling-and-test-coverage-in-freestanding-environments.rst: New file.
* doc/gcc/gcov/using-gcov-with-gcc-optimization.rst: New file.
* doc/gcc/general-public-license-3.rst: New file.
* doc/gcc/gnu-free-documentation-license.rst: New file.
* doc/gcc/gnu-objective-c-features.rst: New file.
* doc/gcc/gnu-objective-c-features/compatibilityalias.rst: New file.
* doc/gcc/gnu-objective-c-features/constant-string-objects.rst: New file.
* doc/gcc/gnu-objective-c-features/exceptions.rst: New file.
* doc/gcc/gnu-objective-c-features/fast-enumeration.rst: New file.
* doc/gcc/gnu-objective-c-features/garbage-collection.rst: New file.
* doc/gcc/gnu-objective-c-features/gnu-objective-c-runtime-api.rst: New file.
* doc/gcc/gnu-objective-c-features/load-executing-code-before-main.rst: New file.
* doc/gcc/gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst: New file.
* doc/gcc/gnu-objective-c-features/synchronization.rst: New file.
* doc/gcc/gnu-objective-c-features/type-encoding.rst: New file.
* doc/gcc/gnu.rst: New file.
* doc/gcc/have-you-found-a-bug.rst: New file.
* doc/gcc/how-and-where-to-report-bugs.rst: New file.
* doc/gcc/how-to-get-help-with-gcc.rst: New file.
* doc/gcc/index.rst: New file.
* doc/gcc/indices-and-tables.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst:
New file.
* doc/gcc/known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst:
New file.
* doc/gcc/known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst:
New file.
* doc/gcc/known-causes-of-trouble-with-gcc/fixed-header-files.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc/interoperation.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc/standard-libraries.rst: New file.
* doc/gcc/known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst:
New file.
* doc/gcc/language-standards-supported-by-gcc.rst: New file.
* doc/gcc/language-standards-supported-by-gcc/c++-language.rst: New file.
* doc/gcc/language-standards-supported-by-gcc/c-language.rst: New file.
* doc/gcc/language-standards-supported-by-gcc/d-language.rst: New file.
* doc/gcc/language-standards-supported-by-gcc/go-language.rst: New file.
* doc/gcc/language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst:
New file.
* doc/gcc/language-standards-supported-by-gcc/references-for-other-languages.rst: New file.
* doc/gcc/lto-dump.rst: New file.
* doc/gcc/programming-languages-supported-by-gcc.rst: New file.
* doc/gcc/reporting-bugs.rst: New file.
* doc/gccint/analysis-and-optimization-of-gimple-tuples.rst: New file.
* doc/gccint/analysis-and-optimization-of-gimple-tuples/alias-analysis.rst: New file.
* doc/gccint/analysis-and-optimization-of-gimple-tuples/annotations.rst: New file.
* doc/gccint/analysis-and-optimization-of-gimple-tuples/memory-model.rst: New file.
* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst: New file.
* doc/gccint/analysis-and-optimization-of-gimple-tuples/static-single-assignment.rst:
New file.
* doc/gccint/analysis-and-representation-of-loops.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/data-dependency-analysis.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/iv-analysis-on-rtl.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/loop-closed-ssa-form.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/loop-manipulation.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/loop-querying.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/loop-representation.rst: New file.
* doc/gccint/analysis-and-representation-of-loops/number-of-iterations-analysis.rst:
New file.
* doc/gccint/analysis-and-representation-of-loops/scalar-evolutions.rst: New file.
* doc/gccint/analyzer-internals.rst: New file.
* doc/gccint/collect2.rst: New file.
* doc/gccint/conf.py: New file.
* doc/gccint/contributing-to-gcc-development.rst: New file.
* doc/gccint/contributors-to-gcc.rst: New file.
* doc/gccint/control-flow-graph.rst: New file.
* doc/gccint/control-flow-graph/basic-blocks.rst: New file.
* doc/gccint/control-flow-graph/edges.rst: New file.
* doc/gccint/control-flow-graph/liveness-information.rst: New file.
* doc/gccint/control-flow-graph/maintaining-the-cfg.rst: New file.
* doc/gccint/control-flow-graph/profile-information.rst: New file.
* doc/gccint/copyright.rst: New file.
* doc/gccint/debugging-the-analyzer.rst: New file.
* doc/gccint/funding.rst: New file.
* doc/gccint/gcc-and-portability.rst: New file.
* doc/gccint/general-public-license-3.rst: New file.
* doc/gccint/generic.rst: New file.
* doc/gccint/generic/attributes-in-trees.rst: New file.
* doc/gccint/generic/c-and-c++-trees.rst: New file.
* doc/gccint/generic/declarations.rst: New file.
* doc/gccint/generic/deficiencies.rst: New file.
* doc/gccint/generic/expressions.rst: New file.
* doc/gccint/generic/functions.rst: New file.
* doc/gccint/generic/language-dependent-trees.rst: New file.
* doc/gccint/generic/overview.rst: New file.
* doc/gccint/generic/statements.rst: New file.
* doc/gccint/generic/types.rst: New file.
* doc/gccint/gimple-api.rst: New file.
* doc/gccint/gimple.rst: New file.
* doc/gccint/gimple/adding-a-new-gimple-statement-code.rst: New file.
* doc/gccint/gimple/class-hierarchy-of-gimple-statements.rst: New file.
* doc/gccint/gimple/exception-handling.rst: New file.
* doc/gccint/gimple/gimple-instruction-set.rst: New file.
* doc/gccint/gimple/gimple-sequences.rst: New file.
* doc/gccint/gimple/manipulating-gimple-statements.rst: New file.
* doc/gccint/gimple/operands.rst: New file.
* doc/gccint/gimple/sequence-iterators.rst: New file.
* doc/gccint/gimple/statement-and-operand-traversals.rst: New file.
* doc/gccint/gimple/temporaries.rst: New file.
* doc/gccint/gimple/tuple-representation.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleasm.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleassign.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplebind.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplecall.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplecatch.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplecond.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpledebug.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleehfilter.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplegoto.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplelabel.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplenop.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicload.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicstore.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompcontinue.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompcritical.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompfor.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompmaster.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompordered.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompparallel.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompreturn.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompsection.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompsections.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleompsingle.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplephi.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleresx.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplereturn.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpleswitch.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimpletry.rst: New file.
* doc/gccint/gimple/tuple-specific-accessors/gimplewithcleanupexpr.rst: New file.
* doc/gccint/gnu-free-documentation-license.rst: New file.
* doc/gccint/guidelines-for-diagnostics.rst: New file.
* doc/gccint/guidelines-for-options.rst: New file.
* doc/gccint/host-common.rst: New file.
* doc/gccint/host-configuration.rst: New file.
* doc/gccint/host-filesystem.rst: New file.
* doc/gccint/host-makefile-fragments.rst: New file.
* doc/gccint/host-misc.rst: New file.
* doc/gccint/index.rst: New file.
* doc/gccint/indices-and-tables.rst: New file.
* doc/gccint/interfacing-to-gcc-output.rst: New file.
* doc/gccint/introduction.rst: New file.
* doc/gccint/language-front-ends-in-gcc.rst: New file.
* doc/gccint/link-time-optimization.rst: New file.
* doc/gccint/link-time-optimization/design-overview.rst: New file.
* doc/gccint/link-time-optimization/internal-flags-controlling-lto1.rst: New file.
* doc/gccint/link-time-optimization/lto-file-sections.rst: New file.
* doc/gccint/link-time-optimization/using-summary-information-in-ipa-passes.rst: New file.
* doc/gccint/link-time-optimization/whole-program-assumptions-linker-plugin-and-symbol-visibilities.rst:
New file.
* doc/gccint/machine-descriptions.rst: New file.
* doc/gccint/machine-descriptions/c-statements-for-assembler-output.rst: New file.
* doc/gccint/machine-descriptions/canonicalization-of-instructions.rst: New file.
* doc/gccint/machine-descriptions/conditional-execution.rst: New file.
* doc/gccint/machine-descriptions/constant-definitions.rst: New file.
* doc/gccint/machine-descriptions/defining-how-to-split-instructions.rst: New file.
* doc/gccint/machine-descriptions/defining-jump-instruction-patterns.rst: New file.
* doc/gccint/machine-descriptions/defining-looping-instruction-patterns.rst: New file.
* doc/gccint/machine-descriptions/defining-rtl-sequences-for-code-generation.rst: New file.
* doc/gccint/machine-descriptions/everything-about-instruction-patterns.rst: New file.
* doc/gccint/machine-descriptions/example-of-defineinsn.rst: New file.
* doc/gccint/machine-descriptions/including-patterns-in-machine-descriptions.rst: New file.
* doc/gccint/machine-descriptions/instruction-attributes.rst: New file.
* doc/gccint/machine-descriptions/interdependence-of-patterns.rst: New file.
* doc/gccint/machine-descriptions/iterators.rst: New file.
* doc/gccint/machine-descriptions/machine-specific-peephole-optimizers.rst: New file.
* doc/gccint/machine-descriptions/operand-constraints.rst: New file.
* doc/gccint/machine-descriptions/output-templates-and-operand-substitution.rst: New file.
* doc/gccint/machine-descriptions/overview-of-how-the-machine-description-is-used.rst:
New file.
* doc/gccint/machine-descriptions/predicates.rst: New file.
* doc/gccint/machine-descriptions/rtl-template.rst: New file.
* doc/gccint/machine-descriptions/rtl-templates-transformations.rst: New file.
* doc/gccint/machine-descriptions/standard-pattern-names-for-generation.rst: New file.
* doc/gccint/machine-descriptions/when-the-order-of-patterns-matters.rst: New file.
* doc/gccint/makefile-fragments.rst: New file.
* doc/gccint/match-and-simplify.rst: New file.
* doc/gccint/memory-management-and-type-information.rst: New file.
* doc/gccint/memory-management-and-type-information/how-to-invoke-the-garbage-collector.rst:
New file.
* doc/gccint/memory-management-and-type-information/marking-roots-for-the-garbage-collector.rst:
New file.
* doc/gccint/memory-management-and-type-information/source-files-containing-type-information.rst:
New file.
* doc/gccint/memory-management-and-type-information/support-for-inheritance.rst: New file.
* doc/gccint/memory-management-and-type-information/support-for-user-provided-gc-marking-routines.rst:
New file.
* doc/gccint/memory-management-and-type-information/the-inside-of-a-gty.rst: New file.
* doc/gccint/memory-management-and-type-information/troubleshooting-the-garbage-collector.rst:
New file.
* doc/gccint/option-file-format.rst: New file.
* doc/gccint/option-properties.rst: New file.
* doc/gccint/option-specification-files.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler/gimplification-pass.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler/inter-procedural-optimization-passes.rst:
New file.
* doc/gccint/passes-and-files-of-the-compiler/optimization-info.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler/parsing-pass.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler/pass-manager.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler/rtl-passes.rst: New file.
* doc/gccint/passes-and-files-of-the-compiler/tree-ssa-passes.rst: New file.
* doc/gccint/plugins.rst: New file.
* doc/gccint/plugins/building-gcc-plugins.rst: New file.
* doc/gccint/plugins/controlling-which-passes-are-being-run.rst: New file.
* doc/gccint/plugins/giving-information-about-a-plugin.rst: New file.
* doc/gccint/plugins/interacting-with-the-gcc-garbage-collector.rst: New file.
* doc/gccint/plugins/interacting-with-the-pass-manager.rst: New file.
* doc/gccint/plugins/keeping-track-of-available-passes.rst: New file.
* doc/gccint/plugins/loading-plugins.rst: New file.
* doc/gccint/plugins/plugin-api.rst: New file.
* doc/gccint/plugins/recording-information-about-pass-execution.rst: New file.
* doc/gccint/plugins/registering-custom-attributes-or-pragmas.rst: New file.
* doc/gccint/rtl-representation.rst: New file.
* doc/gccint/rtl-representation/access-to-operands.rst: New file.
* doc/gccint/rtl-representation/access-to-special-operands.rst: New file.
* doc/gccint/rtl-representation/assembler-instructions-as-expressions.rst: New file.
* doc/gccint/rtl-representation/bit-fields.rst: New file.
* doc/gccint/rtl-representation/comparison-operations.rst: New file.
* doc/gccint/rtl-representation/constant-expression-types.rst: New file.
* doc/gccint/rtl-representation/conversions.rst: New file.
* doc/gccint/rtl-representation/declarations.rst: New file.
* doc/gccint/rtl-representation/embedded-side-effects-on-addresses.rst: New file.
* doc/gccint/rtl-representation/flags-in-an-rtl-expression.rst: New file.
* doc/gccint/rtl-representation/insns.rst: New file.
* doc/gccint/rtl-representation/machine-modes.rst: New file.
* doc/gccint/rtl-representation/on-the-side-ssa-form-for-rtl.rst: New file.
* doc/gccint/rtl-representation/reading-rtl.rst: New file.
* doc/gccint/rtl-representation/registers-and-memory.rst: New file.
* doc/gccint/rtl-representation/rtl-classes-and-formats.rst: New file.
* doc/gccint/rtl-representation/rtl-expressions-for-arithmetic.rst: New file.
* doc/gccint/rtl-representation/rtl-object-types.rst: New file.
* doc/gccint/rtl-representation/rtl-representation-of-function-call-insns.rst: New file.
* doc/gccint/rtl-representation/side-effect-expressions.rst: New file.
* doc/gccint/rtl-representation/structure-sharing-assumptions.rst: New file.
* doc/gccint/rtl-representation/variable-location-debug-information-in-rtl.rst: New file.
* doc/gccint/rtl-representation/vector-operations.rst: New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants.rst: New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/alignment-of-polyints.rst: New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/arithmetic-on-polyints.rst: New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/comparisons-involving-polyint.rst:
New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/computing-bounds-on-polyints.rst:
New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/consequences-of-using-polyint.rst:
New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/converting-polyints.rst: New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/guidelines-for-using-polyint.rst:
New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/miscellaneous-polyint-routines.rst:
New file.
* doc/gccint/sizes-and-offsets-as-runtime-invariants/overview-of-polyint.rst: New file.
* doc/gccint/source-tree-structure-and-build-system.rst: New file.
* doc/gccint/source-tree-structure-and-build-system/configure-terms-and-history.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory.rst: New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-language-front-end.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-target-back-end.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/build-system-in-the-gcc-directory.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/building-documentation.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/configuration-in-the-gcc-directory.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/headers-installed-by-gcc.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/library-source-files-and-headers-under-the-gcc-directory.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/makefile-targets.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/subdirectories-of-gcc.rst:
New file.
* doc/gccint/source-tree-structure-and-build-system/top-level-source-directory.rst:
New file.
* doc/gccint/standard-header-file-directories.rst: New file.
* doc/gccint/static-analyzer.rst: New file.
* doc/gccint/target-macros.rst: New file.
* doc/gccint/target-macros/adding-support-for-named-address-spaces.rst: New file.
* doc/gccint/target-macros/addressing-modes.rst: New file.
* doc/gccint/target-macros/adjusting-the-instruction-scheduler.rst: New file.
* doc/gccint/target-macros/anchored-addresses.rst: New file.
* doc/gccint/target-macros/c++-abi-parameters.rst: New file.
* doc/gccint/target-macros/condition-code-status.rst: New file.
* doc/gccint/target-macros/controlling-debugging-information-format.rst: New file.
* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst: New file.
* doc/gccint/target-macros/cross-compilation-and-floating-point.rst: New file.
* doc/gccint/target-macros/d-abi-parameters.rst: New file.
* doc/gccint/target-macros/defining-coprocessor-specifics-for-mips-targets.rst: New file.
* doc/gccint/target-macros/defining-data-structures-for-per-function-information.rst:
New file.
* doc/gccint/target-macros/defining-target-specific-uses-of-attribute.rst: New file.
* doc/gccint/target-macros/defining-the-output-assembler-language.rst: New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-alignment.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/how-initialization-functions-are-handled.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-dispatch-tables.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-uninitialized-variables.rst:
New file.
* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
New file.
* doc/gccint/target-macros/describing-relative-costs-of-operations.rst: New file.
* doc/gccint/target-macros/dividing-the-output-into-sections-texts-data.rst: New file.
* doc/gccint/target-macros/emulating-tls.rst: New file.
* doc/gccint/target-macros/implementing-the-varargs-macros.rst: New file.
* doc/gccint/target-macros/implicit-calls-to-library-routines.rst: New file.
* doc/gccint/target-macros/layout-of-source-language-data-types.rst: New file.
* doc/gccint/target-macros/miscellaneous-parameters.rst: New file.
* doc/gccint/target-macros/mode-switching-instructions.rst: New file.
* doc/gccint/target-macros/parameters-for-precompiled-header-validity-checking.rst:
New file.
* doc/gccint/target-macros/position-independent-code.rst: New file.
* doc/gccint/target-macros/register-classes.rst: New file.
* doc/gccint/target-macros/register-usage.rst: New file.
* doc/gccint/target-macros/run-time-target-specification.rst: New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions.rst: New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/caller-saves-register-allocation.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/eliminating-frame-pointer-and-arg-pointer.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/exception-handling-support.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/function-entry-and-exit.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/generating-code-for-profiling.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-large-values-are-returned.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-scalar-function-values-are-returned.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/miscellaneous-register-hooks.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/permitting-tail-calls.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/shrink-wrapping-separate-components.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/specifying-how-stack-checking-is-done.rst:
New file.
* doc/gccint/target-macros/stack-layout-and-calling-conventions/stack-smashing-protection.rst:
New file.
* doc/gccint/target-macros/storage-layout.rst: New file.
* doc/gccint/target-macros/support-for-nested-functions.rst: New file.
* doc/gccint/target-macros/the-global-targetm-variable.rst: New file.
* doc/gccint/target-makefile-fragments.rst: New file.
* doc/gccint/testsuites.rst: New test.
* doc/gccint/testsuites/ada-language-testsuites.rst: New test.
* doc/gccint/testsuites/c-language-testsuites.rst: New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests.rst: New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests/commands-for-use-in-dg-final.rst:
New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests/features-for-dg-add-options.rst:
New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests/keywords-describing-target-attributes.rst:
New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests/selecting-targets-to-which-a-test-applies.rst:
New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests/syntax-and-descriptions-of-test-directives.rst:
New test.
* doc/gccint/testsuites/directives-used-within-dejagnu-tests/variants-of-dg-require-support.rst:
New test.
* doc/gccint/testsuites/idioms-used-in-testsuite-code.rst: New test.
* doc/gccint/testsuites/support-for-testing-binary-compatibility.rst: New test.
* doc/gccint/testsuites/support-for-testing-gcov.rst: New test.
* doc/gccint/testsuites/support-for-testing-gimple-passes.rst: New test.
* doc/gccint/testsuites/support-for-testing-link-time-optimizations.rst: New test.
* doc/gccint/testsuites/support-for-testing-profile-directed-optimizations.rst: New test.
* doc/gccint/testsuites/support-for-testing-rtl-passes.rst: New test.
* doc/gccint/testsuites/support-for-torture-testing-using-multiple-options.rst: New test.
* doc/gccint/the-gcc-low-level-runtime-library.rst: New file.
* doc/gccint/the-gcc-low-level-runtime-library/language-independent-routines-for-exception-handling.rst:
New file.
* doc/gccint/the-gcc-low-level-runtime-library/miscellaneous-runtime-library-routines.rst:
New file.
* doc/gccint/the-gcc-low-level-runtime-library/routines-for-decimal-floating-point-emulation.rst:
New file.
* doc/gccint/the-gcc-low-level-runtime-library/routines-for-fixed-point-fractional-emulation.rst:
New file.
* doc/gccint/the-gcc-low-level-runtime-library/routines-for-floating-point-emulation.rst:
New file.
* doc/gccint/the-gcc-low-level-runtime-library/routines-for-integer-arithmetic.rst:
New file.
* doc/gccint/the-language.rst: New file.
* doc/gccint/user-experience-guidelines.rst: New file.
* doc/install/binaries.rst: New file.
* doc/install/building.rst: New file.
* doc/install/building/building-a-cross-compiler.rst: New file.
* doc/install/building/building-a-native-compiler.rst: New file.
* doc/install/building/building-in-parallel.rst: New file.
* doc/install/building/building-the-ada-compiler.rst: New file.
* doc/install/building/building-the-d-compiler.rst: New file.
* doc/install/building/building-with-profile-feedback.rst: New file.
* doc/install/conf.py: New file.
* doc/install/configuration.rst: New file.
* doc/install/copyright.rst: New file.
* doc/install/downloading-gcc.rst: New file.
* doc/install/final-installation.rst: New file.
* doc/install/gnu-free-documentation-license.rst: New file.
* doc/install/host-target-specific-installation-notes-for-gcc.rst: New file.
* doc/install/how-can-you-run-the-testsuite-on-selected-tests.rst: New test.
* doc/install/how-to-interpret-test-results.rst: New file.
* doc/install/index.rst: New file.
* doc/install/indices-and-tables.rst: New file.
* doc/install/installing-gcc.rst: New file.
* doc/install/passing-options-and-running-multiple-testsuites.rst: New test.
* doc/install/prerequisites.rst: New file.
* doc/install/submitting-test-results.rst: New file.
* doc/install/testing.rst: New file.
gcc/fortran/ChangeLog:
* doc/gfc-internals/code-that-interacts-with-the-user.rst: New file.
* doc/gfc-internals/command-line-options.rst: New file.
* doc/gfc-internals/conf.py: New file.
* doc/gfc-internals/copyright.rst: New file.
* doc/gfc-internals/error-handling.rst: New file.
* doc/gfc-internals/frontend-data-structures.rst: New file.
* doc/gfc-internals/generating-the-intermediate-language-for-later-stages.rst: New file.
* doc/gfc-internals/generating-the-intermediate-language-for-later-stages/accessing-declarations.rst:
New file.
* doc/gfc-internals/generating-the-intermediate-language-for-later-stages/basic-data-structures.rst:
New file.
* doc/gfc-internals/generating-the-intermediate-language-for-later-stages/converting-expressions-to-tree.rst:
New file.
* doc/gfc-internals/generating-the-intermediate-language-for-later-stages/translating-statements.rst:
New file.
* doc/gfc-internals/gfccode.rst: New file.
* doc/gfc-internals/gfcexpr.rst: New file.
* doc/gfc-internals/gnu-free-documentation-license.rst: New file.
* doc/gfc-internals/index.rst: New file.
* doc/gfc-internals/indices-and-tables.rst: New file.
* doc/gfc-internals/internals-of-fortran-2003-oop-features.rst: New file.
* doc/gfc-internals/introduction.rst: New file.
* doc/gfc-internals/symbol-versioning.rst: New file.
* doc/gfc-internals/the-libgfortran-runtime-library.rst: New file.
* doc/gfc-internals/type-bound-operators.rst: New file.
* doc/gfc-internals/type-bound-procedures.rst: New file.
* doc/gfortran/about-gnu-fortran.rst: New file.
* doc/gfortran/coarray-programming.rst: New file.
* doc/gfortran/compiler-characteristics.rst: New file.
* doc/gfortran/compiler-characteristics/asynchronous-i-o.rst: New file.
* doc/gfortran/compiler-characteristics/data-consistency-and-durability.rst: New file.
* doc/gfortran/compiler-characteristics/evaluation-of-logical-expressions.rst: New file.
* doc/gfortran/compiler-characteristics/file-format-of-unformatted-sequential-files.rst:
New file.
* doc/gfortran/compiler-characteristics/file-operations-on-symbolic-links.rst: New file.
* doc/gfortran/compiler-characteristics/files-opened-without-an-explicit-action=-specifier.rst:
New file.
* doc/gfortran/compiler-characteristics/internal-representation-of-logical-variables.rst:
New file.
* doc/gfortran/compiler-characteristics/kind-type-parameters.rst: New file.
* doc/gfortran/compiler-characteristics/max-and-min-intrinsics-with-real-nan-arguments.rst:
New file.
* doc/gfortran/compiler-characteristics/thread-safety-of-the-runtime-library.rst: New file.
* doc/gfortran/conf.py: New file.
* doc/gfortran/contributing.rst: New file.
* doc/gfortran/contributors-to-gnu-fortran.rst: New file.
* doc/gfortran/copyright.rst: New file.
* doc/gfortran/extensions-implemented-in-gnu-fortran.rst: New file.
* doc/gfortran/extensions-not-implemented-in-gnu-fortran.rst: New file.
* doc/gfortran/extensions.rst: New file.
* doc/gfortran/function-abi-documentation.rst: New file.
* doc/gfortran/funding.rst: New file.
* doc/gfortran/general-public-license-3.rst: New file.
* doc/gfortran/gnu-fortran-and-gcc.rst: New file.
* doc/gfortran/gnu-fortran-command-options.rst: New file.
* doc/gfortran/gnu-fortran-command-options/description.rst: New file.
* doc/gfortran/gnu-fortran-command-options/enable-and-customize-preprocessing.rst: New file.
* doc/gfortran/gnu-fortran-command-options/environment-variables-affecting-gfortran.rst:
New file.
* doc/gfortran/gnu-fortran-command-options/influencing-runtime-behavior.rst: New file.
* doc/gfortran/gnu-fortran-command-options/influencing-the-linking-step.rst: New file.
* doc/gfortran/gnu-fortran-command-options/option-summary.rst: New file.
* doc/gfortran/gnu-fortran-command-options/options-controlling-fortran-dialect.rst:
New file.
* doc/gfortran/gnu-fortran-command-options/options-for-code-generation-conventions.rst:
New file.
* doc/gfortran/gnu-fortran-command-options/options-for-debugging-your-program-or-gnu-fortran.rst:
New file.
* doc/gfortran/gnu-fortran-command-options/options-for-directory-search.rst: New file.
* doc/gfortran/gnu-fortran-command-options/options-for-interoperability-with-other-languages.rst:
New file.
* doc/gfortran/gnu-fortran-command-options/options-to-request-or-suppress-errors-and-warnings.rst:
New file.
* doc/gfortran/gnu-fortran-compiler-directives.rst: New file.
* doc/gfortran/gnu-free-documentation-license.rst: New file.
* doc/gfortran/index.rst: New file.
* doc/gfortran/indices-and-tables.rst: New file.
* doc/gfortran/interoperability-with-c.rst: New file.
* doc/gfortran/intrinsic-modules.rst: New file.
* doc/gfortran/intrinsic-modules/ieee-modules-ieeeexceptions-ieeearithmetic-and-ieeefeatures.rst:
New file.
* doc/gfortran/intrinsic-modules/isocbinding.rst: New file.
* doc/gfortran/intrinsic-modules/isofortranenv.rst: New file.
* doc/gfortran/intrinsic-modules/openacc-module-openacc.rst: New file.
* doc/gfortran/intrinsic-modules/openmp-modules-omplib-and-omplibkinds.rst: New file.
* doc/gfortran/intrinsic-procedures.rst: New file.
* doc/gfortran/intrinsic-procedures/abort.rst: New file.
* doc/gfortran/intrinsic-procedures/abs.rst: New file.
* doc/gfortran/intrinsic-procedures/access.rst: New file.
* doc/gfortran/intrinsic-procedures/achar.rst: New file.
* doc/gfortran/intrinsic-procedures/acos.rst: New file.
* doc/gfortran/intrinsic-procedures/acosd.rst: New file.
* doc/gfortran/intrinsic-procedures/acosh.rst: New file.
* doc/gfortran/intrinsic-procedures/adjustl.rst: New file.
* doc/gfortran/intrinsic-procedures/adjustr.rst: New file.
* doc/gfortran/intrinsic-procedures/aimag.rst: New file.
* doc/gfortran/intrinsic-procedures/aint.rst: New file.
* doc/gfortran/intrinsic-procedures/alarm.rst: New file.
* doc/gfortran/intrinsic-procedures/all.rst: New file.
* doc/gfortran/intrinsic-procedures/allocated.rst: New file.
* doc/gfortran/intrinsic-procedures/and.rst: New file.
* doc/gfortran/intrinsic-procedures/anint.rst: New file.
* doc/gfortran/intrinsic-procedures/any.rst: New file.
* doc/gfortran/intrinsic-procedures/asin.rst: New file.
* doc/gfortran/intrinsic-procedures/asind.rst: New file.
* doc/gfortran/intrinsic-procedures/asinh.rst: New file.
* doc/gfortran/intrinsic-procedures/associated.rst: New file.
* doc/gfortran/intrinsic-procedures/atan.rst: New file.
* doc/gfortran/intrinsic-procedures/atan2.rst: New file.
* doc/gfortran/intrinsic-procedures/atan2d.rst: New file.
* doc/gfortran/intrinsic-procedures/atand.rst: New file.
* doc/gfortran/intrinsic-procedures/atanh.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicadd.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicand.rst: New file.
* doc/gfortran/intrinsic-procedures/atomiccas.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicdefine.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicfetchadd.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicfetchand.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicfetchor.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicfetchxor.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicor.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicref.rst: New file.
* doc/gfortran/intrinsic-procedures/atomicxor.rst: New file.
* doc/gfortran/intrinsic-procedures/backtrace.rst: New file.
* doc/gfortran/intrinsic-procedures/besselj0.rst: New file.
* doc/gfortran/intrinsic-procedures/besselj1.rst: New file.
* doc/gfortran/intrinsic-procedures/besseljn.rst: New file.
* doc/gfortran/intrinsic-procedures/bessely0.rst: New file.
* doc/gfortran/intrinsic-procedures/bessely1.rst: New file.
* doc/gfortran/intrinsic-procedures/besselyn.rst: New file.
* doc/gfortran/intrinsic-procedures/bge.rst: New file.
* doc/gfortran/intrinsic-procedures/bgt.rst: New file.
* doc/gfortran/intrinsic-procedures/bitsize.rst: New file.
* doc/gfortran/intrinsic-procedures/ble.rst: New file.
* doc/gfortran/intrinsic-procedures/blt.rst: New file.
* doc/gfortran/intrinsic-procedures/btest.rst: New file.
* doc/gfortran/intrinsic-procedures/cassociated.rst: New file.
* doc/gfortran/intrinsic-procedures/ceiling.rst: New file.
* doc/gfortran/intrinsic-procedures/cfpointer.rst: New file.
* doc/gfortran/intrinsic-procedures/cfprocpointer.rst: New file.
* doc/gfortran/intrinsic-procedures/cfunloc.rst: New file.
* doc/gfortran/intrinsic-procedures/char.rst: New file.
* doc/gfortran/intrinsic-procedures/chdir.rst: New file.
* doc/gfortran/intrinsic-procedures/chmod.rst: New file.
* doc/gfortran/intrinsic-procedures/cloc.rst: New file.
* doc/gfortran/intrinsic-procedures/cmplx.rst: New file.
* doc/gfortran/intrinsic-procedures/cobroadcast.rst: New file.
* doc/gfortran/intrinsic-procedures/comax.rst: New file.
* doc/gfortran/intrinsic-procedures/comin.rst: New file.
* doc/gfortran/intrinsic-procedures/commandargumentcount.rst: New file.
* doc/gfortran/intrinsic-procedures/compileroptions.rst: New file.
* doc/gfortran/intrinsic-procedures/compilerversion.rst: New file.
* doc/gfortran/intrinsic-procedures/complex.rst: New file.
* doc/gfortran/intrinsic-procedures/conjg.rst: New file.
* doc/gfortran/intrinsic-procedures/coreduce.rst: New file.
* doc/gfortran/intrinsic-procedures/cos.rst: New file.
* doc/gfortran/intrinsic-procedures/cosd.rst: New file.
* doc/gfortran/intrinsic-procedures/cosh.rst: New file.
* doc/gfortran/intrinsic-procedures/cosum.rst: New file.
* doc/gfortran/intrinsic-procedures/cotan.rst: New file.
* doc/gfortran/intrinsic-procedures/cotand.rst: New file.
* doc/gfortran/intrinsic-procedures/count.rst: New file.
* doc/gfortran/intrinsic-procedures/cputime.rst: New file.
* doc/gfortran/intrinsic-procedures/cshift.rst: New file.
* doc/gfortran/intrinsic-procedures/csizeof.rst: New file.
* doc/gfortran/intrinsic-procedures/ctime.rst: New file.
* doc/gfortran/intrinsic-procedures/dateandtime.rst: New file.
* doc/gfortran/intrinsic-procedures/dble.rst: New file.
* doc/gfortran/intrinsic-procedures/dcmplx.rst: New file.
* doc/gfortran/intrinsic-procedures/digits.rst: New file.
* doc/gfortran/intrinsic-procedures/dim.rst: New file.
* doc/gfortran/intrinsic-procedures/dotproduct.rst: New file.
* doc/gfortran/intrinsic-procedures/dprod.rst: New file.
* doc/gfortran/intrinsic-procedures/dreal.rst: New file.
* doc/gfortran/intrinsic-procedures/dshiftl.rst: New file.
* doc/gfortran/intrinsic-procedures/dshiftr.rst: New file.
* doc/gfortran/intrinsic-procedures/dtime.rst: New file.
* doc/gfortran/intrinsic-procedures/eoshift.rst: New file.
* doc/gfortran/intrinsic-procedures/epsilon.rst: New file.
* doc/gfortran/intrinsic-procedures/erf.rst: New file.
* doc/gfortran/intrinsic-procedures/erfc.rst: New file.
* doc/gfortran/intrinsic-procedures/erfcscaled.rst: New file.
* doc/gfortran/intrinsic-procedures/etime.rst: New file.
* doc/gfortran/intrinsic-procedures/eventquery.rst: New file.
* doc/gfortran/intrinsic-procedures/executecommandline.rst: New file.
* doc/gfortran/intrinsic-procedures/exit.rst: New file.
* doc/gfortran/intrinsic-procedures/exp.rst: New file.
* doc/gfortran/intrinsic-procedures/exponent.rst: New file.
* doc/gfortran/intrinsic-procedures/extendstypeof.rst: New file.
* doc/gfortran/intrinsic-procedures/fdate.rst: New file.
* doc/gfortran/intrinsic-procedures/fget.rst: New file.
* doc/gfortran/intrinsic-procedures/fgetc.rst: New file.
* doc/gfortran/intrinsic-procedures/findloc.rst: New file.
* doc/gfortran/intrinsic-procedures/floor.rst: New file.
* doc/gfortran/intrinsic-procedures/flush.rst: New file.
* doc/gfortran/intrinsic-procedures/fnum.rst: New file.
* doc/gfortran/intrinsic-procedures/fput.rst: New file.
* doc/gfortran/intrinsic-procedures/fputc.rst: New file.
* doc/gfortran/intrinsic-procedures/fraction.rst: New file.
* doc/gfortran/intrinsic-procedures/free.rst: New file.
* doc/gfortran/intrinsic-procedures/fseek.rst: New file.
* doc/gfortran/intrinsic-procedures/fstat.rst: New file.
* doc/gfortran/intrinsic-procedures/ftell.rst: New file.
* doc/gfortran/intrinsic-procedures/gamma.rst: New file.
* doc/gfortran/intrinsic-procedures/gerror.rst: New file.
* doc/gfortran/intrinsic-procedures/getarg.rst: New file.
* doc/gfortran/intrinsic-procedures/getcommand.rst: New file.
* doc/gfortran/intrinsic-procedures/getcommandargument.rst: New file.
* doc/gfortran/intrinsic-procedures/getcwd.rst: New file.
* doc/gfortran/intrinsic-procedures/getenv.rst: New file.
* doc/gfortran/intrinsic-procedures/getenvironmentvariable.rst: New file.
* doc/gfortran/intrinsic-procedures/getgid.rst: New file.
* doc/gfortran/intrinsic-procedures/getlog.rst: New file.
* doc/gfortran/intrinsic-procedures/getpid.rst: New file.
* doc/gfortran/intrinsic-procedures/getuid.rst: New file.
* doc/gfortran/intrinsic-procedures/gmtime.rst: New file.
* doc/gfortran/intrinsic-procedures/hostnm.rst: New file.
* doc/gfortran/intrinsic-procedures/huge.rst: New file.
* doc/gfortran/intrinsic-procedures/hypot.rst: New file.
* doc/gfortran/intrinsic-procedures/iachar.rst: New file.
* doc/gfortran/intrinsic-procedures/iall.rst: New file.
* doc/gfortran/intrinsic-procedures/iand.rst: New file.
* doc/gfortran/intrinsic-procedures/iany.rst: New file.
* doc/gfortran/intrinsic-procedures/iargc.rst: New file.
* doc/gfortran/intrinsic-procedures/ibclr.rst: New file.
* doc/gfortran/intrinsic-procedures/ibits.rst: New file.
* doc/gfortran/intrinsic-procedures/ibset.rst: New file.
* doc/gfortran/intrinsic-procedures/ichar.rst: New file.
* doc/gfortran/intrinsic-procedures/idate.rst: New file.
* doc/gfortran/intrinsic-procedures/ieor.rst: New file.
* doc/gfortran/intrinsic-procedures/ierrno.rst: New file.
* doc/gfortran/intrinsic-procedures/imageindex.rst: New file.
* doc/gfortran/intrinsic-procedures/index.rst: New file.
* doc/gfortran/intrinsic-procedures/int.rst: New file.
* doc/gfortran/intrinsic-procedures/int2.rst: New file.
* doc/gfortran/intrinsic-procedures/int8.rst: New file.
* doc/gfortran/intrinsic-procedures/introduction-to-intrinsic-procedures.rst: New file.
* doc/gfortran/intrinsic-procedures/ior.rst: New file.
* doc/gfortran/intrinsic-procedures/iparity.rst: New file.
* doc/gfortran/intrinsic-procedures/irand.rst: New file.
* doc/gfortran/intrinsic-procedures/isatty.rst: New file.
* doc/gfortran/intrinsic-procedures/iscontiguous.rst: New file.
* doc/gfortran/intrinsic-procedures/ishft.rst: New file.
* doc/gfortran/intrinsic-procedures/ishftc.rst: New file.
* doc/gfortran/intrinsic-procedures/isiostatend.rst: New file.
* doc/gfortran/intrinsic-procedures/isiostateor.rst: New file.
* doc/gfortran/intrinsic-procedures/isnan.rst: New file.
* doc/gfortran/intrinsic-procedures/itime.rst: New file.
* doc/gfortran/intrinsic-procedures/kill.rst: New file.
* doc/gfortran/intrinsic-procedures/kind.rst: New file.
* doc/gfortran/intrinsic-procedures/lbound.rst: New file.
* doc/gfortran/intrinsic-procedures/lcobound.rst: New file.
* doc/gfortran/intrinsic-procedures/leadz.rst: New file.
* doc/gfortran/intrinsic-procedures/len.rst: New file.
* doc/gfortran/intrinsic-procedures/lentrim.rst: New file.
* doc/gfortran/intrinsic-procedures/lge.rst: New file.
* doc/gfortran/intrinsic-procedures/lgt.rst: New file.
* doc/gfortran/intrinsic-procedures/link.rst: New file.
* doc/gfortran/intrinsic-procedures/lle.rst: New file.
* doc/gfortran/intrinsic-procedures/llt.rst: New file.
* doc/gfortran/intrinsic-procedures/lnblnk.rst: New file.
* doc/gfortran/intrinsic-procedures/loc.rst: New file.
* doc/gfortran/intrinsic-procedures/log.rst: New file.
* doc/gfortran/intrinsic-procedures/log10.rst: New file.
* doc/gfortran/intrinsic-procedures/loggamma.rst: New file.
* doc/gfortran/intrinsic-procedures/logical.rst: New file.
* doc/gfortran/intrinsic-procedures/lshift.rst: New file.
* doc/gfortran/intrinsic-procedures/lstat.rst: New file.
* doc/gfortran/intrinsic-procedures/ltime.rst: New file.
* doc/gfortran/intrinsic-procedures/malloc.rst: New file.
* doc/gfortran/intrinsic-procedures/maskl.rst: New file.
* doc/gfortran/intrinsic-procedures/maskr.rst: New file.
* doc/gfortran/intrinsic-procedures/matmul.rst: New file.
* doc/gfortran/intrinsic-procedures/max.rst: New file.
* doc/gfortran/intrinsic-procedures/maxexponent.rst: New file.
* doc/gfortran/intrinsic-procedures/maxloc.rst: New file.
* doc/gfortran/intrinsic-procedures/maxval.rst: New file.
* doc/gfortran/intrinsic-procedures/mclock.rst: New file.
* doc/gfortran/intrinsic-procedures/mclock8.rst: New file.
* doc/gfortran/intrinsic-procedures/merge.rst: New file.
* doc/gfortran/intrinsic-procedures/mergebits.rst: New file.
* doc/gfortran/intrinsic-procedures/min.rst: New file.
* doc/gfortran/intrinsic-procedures/minexponent.rst: New file.
* doc/gfortran/intrinsic-procedures/minloc.rst: New file.
* doc/gfortran/intrinsic-procedures/minval.rst: New file.
* doc/gfortran/intrinsic-procedures/mod.rst: New file.
* doc/gfortran/intrinsic-procedures/modulo.rst: New file.
* doc/gfortran/intrinsic-procedures/movealloc.rst: New file.
* doc/gfortran/intrinsic-procedures/mvbits.rst: New file.
* doc/gfortran/intrinsic-procedures/nearest.rst: New file.
* doc/gfortran/intrinsic-procedures/newline.rst: New file.
* doc/gfortran/intrinsic-procedures/nint.rst: New file.
* doc/gfortran/intrinsic-procedures/norm2.rst: New file.
* doc/gfortran/intrinsic-procedures/not.rst: New file.
* doc/gfortran/intrinsic-procedures/null.rst: New file.
* doc/gfortran/intrinsic-procedures/numimages.rst: New file.
* doc/gfortran/intrinsic-procedures/or.rst: New file.
* doc/gfortran/intrinsic-procedures/pack.rst: New file.
* doc/gfortran/intrinsic-procedures/parity.rst: New file.
* doc/gfortran/intrinsic-procedures/perror.rst: New file.
* doc/gfortran/intrinsic-procedures/popcnt.rst: New file.
* doc/gfortran/intrinsic-procedures/poppar.rst: New file.
* doc/gfortran/intrinsic-procedures/precision.rst: New file.
* doc/gfortran/intrinsic-procedures/present.rst: New file.
* doc/gfortran/intrinsic-procedures/product.rst: New file.
* doc/gfortran/intrinsic-procedures/radix.rst: New file.
* doc/gfortran/intrinsic-procedures/ran.rst: New file.
* doc/gfortran/intrinsic-procedures/rand.rst: New file.
* doc/gfortran/intrinsic-procedures/randominit.rst: New file.
* doc/gfortran/intrinsic-procedures/randomnumber.rst: New file.
* doc/gfortran/intrinsic-procedures/randomseed.rst: New file.
* doc/gfortran/intrinsic-procedures/range.rst: New file.
* doc/gfortran/intrinsic-procedures/rank.rst: New file.
* doc/gfortran/intrinsic-procedures/real.rst: New file.
* doc/gfortran/intrinsic-procedures/rename.rst: New file.
* doc/gfortran/intrinsic-procedures/repeat.rst: New file.
* doc/gfortran/intrinsic-procedures/reshape.rst: New file.
* doc/gfortran/intrinsic-procedures/rrspacing.rst: New file.
* doc/gfortran/intrinsic-procedures/rshift.rst: New file.
* doc/gfortran/intrinsic-procedures/sametypeas.rst: New file.
* doc/gfortran/intrinsic-procedures/scale.rst: New file.
* doc/gfortran/intrinsic-procedures/scan.rst: New file.
* doc/gfortran/intrinsic-procedures/secnds.rst: New file.
* doc/gfortran/intrinsic-procedures/second.rst: New file.
* doc/gfortran/intrinsic-procedures/selectedcharkind.rst: New file.
* doc/gfortran/intrinsic-procedures/selectedintkind.rst: New file.
* doc/gfortran/intrinsic-procedures/selectedrealkind.rst: New file.
* doc/gfortran/intrinsic-procedures/setexponent.rst: New file.
* doc/gfortran/intrinsic-procedures/shape.rst: New file.
* doc/gfortran/intrinsic-procedures/shifta.rst: New file.
* doc/gfortran/intrinsic-procedures/shiftl.rst: New file.
* doc/gfortran/intrinsic-procedures/shiftr.rst: New file.
* doc/gfortran/intrinsic-procedures/sign.rst: New file.
* doc/gfortran/intrinsic-procedures/signal.rst: New file.
* doc/gfortran/intrinsic-procedures/sin.rst: New file.
* doc/gfortran/intrinsic-procedures/sind.rst: New file.
* doc/gfortran/intrinsic-procedures/sinh.rst: New file.
* doc/gfortran/intrinsic-procedures/size.rst: New file.
* doc/gfortran/intrinsic-procedures/sizeof.rst: New file.
* doc/gfortran/intrinsic-procedures/sleep.rst: New file.
* doc/gfortran/intrinsic-procedures/spacing.rst: New file.
* doc/gfortran/intrinsic-procedures/spread.rst: New file.
* doc/gfortran/intrinsic-procedures/sqrt.rst: New file.
* doc/gfortran/intrinsic-procedures/srand.rst: New file.
* doc/gfortran/intrinsic-procedures/stat.rst: New file.
* doc/gfortran/intrinsic-procedures/storagesize.rst: New file.
* doc/gfortran/intrinsic-procedures/sum.rst: New file.
* doc/gfortran/intrinsic-procedures/symlnk.rst: New file.
* doc/gfortran/intrinsic-procedures/system.rst: New file.
* doc/gfortran/intrinsic-procedures/systemclock.rst: New file.
* doc/gfortran/intrinsic-procedures/tan.rst: New file.
* doc/gfortran/intrinsic-procedures/tand.rst: New file.
* doc/gfortran/intrinsic-procedures/tanh.rst: New file.
* doc/gfortran/intrinsic-procedures/thisimage.rst: New file.
* doc/gfortran/intrinsic-procedures/time.rst: New file.
* doc/gfortran/intrinsic-procedures/time8.rst: New file.
* doc/gfortran/intrinsic-procedures/tiny.rst: New file.
* doc/gfortran/intrinsic-procedures/trailz.rst: New file.
* doc/gfortran/intrinsic-procedures/transfer.rst: New file.
* doc/gfortran/intrinsic-procedures/transpose.rst: New file.
* doc/gfortran/intrinsic-procedures/trim.rst: New file.
* doc/gfortran/intrinsic-procedures/ttynam.rst: New file.
* doc/gfortran/intrinsic-procedures/ubound.rst: New file.
* doc/gfortran/intrinsic-procedures/ucobound.rst: New file.
* doc/gfortran/intrinsic-procedures/umask.rst: New file.
* doc/gfortran/intrinsic-procedures/unlink.rst: New file.
* doc/gfortran/intrinsic-procedures/unpack.rst: New file.
* doc/gfortran/intrinsic-procedures/verify.rst: New file.
* doc/gfortran/intrinsic-procedures/xor.rst: New file.
* doc/gfortran/introduction.rst: New file.
* doc/gfortran/mixed-language-programming.rst: New file.
* doc/gfortran/naming-and-argument-passing-conventions.rst: New file.
* doc/gfortran/non-fortran-main-program.rst: New file.
* doc/gfortran/projects.rst: New file.
* doc/gfortran/runtime.rst: New file.
* doc/gfortran/runtime/gfortranconvertunit.rst: New file.
* doc/gfortran/runtime/gfortranerrorbacktrace.rst: New file.
* doc/gfortran/runtime/gfortranformattedbuffersize.rst: New file.
* doc/gfortran/runtime/gfortranlistseparator.rst: New file.
* doc/gfortran/runtime/gfortranoptionalplus.rst: New file.
* doc/gfortran/runtime/gfortranshowlocus.rst: New file.
* doc/gfortran/runtime/gfortranstderrunit.rst: New file.
* doc/gfortran/runtime/gfortranstdinunit.rst: New file.
* doc/gfortran/runtime/gfortranstdoutunit.rst: New file.
* doc/gfortran/runtime/gfortranunbufferedall.rst: New file.
* doc/gfortran/runtime/gfortranunbufferedpreconnected.rst: New file.
* doc/gfortran/runtime/gfortranunformattedbuffersize.rst: New file.
* doc/gfortran/runtime/tmpdir.rst: New file.
* doc/gfortran/standards.rst: New file.
* doc/gfortran/type-and-enum-abi-documentation.rst: New file.
gcc/go/ChangeLog:
* doc/c-interoperability.rst: New file.
* doc/c-type-interoperability.rst: New file.
* doc/compiler-directives.rst: New file.
* doc/conf.py: New file.
* doc/copyright.rst: New file.
* doc/function-names.rst: New file.
* doc/general-public-license-3.rst: New file.
* doc/gnu-free-documentation-license.rst: New file.
* doc/import-and-export.rst: New file.
* doc/index.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/introduction.rst: New file.
* doc/invoking-gccgo.rst: New file.
libgomp/ChangeLog:
* doc/amd-radeon-gcn.rst: New file.
* doc/conf.py: New file.
* doc/copyright.rst: New file.
* doc/cuda-streams-usage.rst: New file.
* doc/enabling-openacc.rst: New file.
* doc/enabling-openmp.rst: New file.
* doc/first-invocation-nvidia-cublas-library-api.rst: New file.
* doc/first-invocation-openacc-library-api.rst: New file.
* doc/funding.rst: New file.
* doc/general-public-license-3.rst: New file.
* doc/gnu-free-documentation-license.rst: New file.
* doc/implementation-status-and-implementation-defined-behavior.rst: New file.
* doc/index.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/introduction.rst: New file.
* doc/memory-allocation-with-libmemkind.rst: New file.
* doc/nvptx.rst: New file.
* doc/offload-target-specifics.rst: New file.
* doc/openacc-environment-variables.rst: New file.
* doc/openacc-environment-variables/accdevicenum.rst: New file.
* doc/openacc-environment-variables/accdevicetype.rst: New file.
* doc/openacc-environment-variables/accproflib.rst: New file.
* doc/openacc-environment-variables/gccaccnotify.rst: New file.
* doc/openacc-introduction.rst: New file.
* doc/openacc-library-and-environment-variables.rst: New file.
* doc/openacc-library-interoperability.rst: New file.
* doc/openacc-profiling-interface.rst: New file.
* doc/openacc-runtime-library-routines.rst: New file.
* doc/openacc-runtime-library-routines/accasynctest.rst: New file.
* doc/openacc-runtime-library-routines/accasynctestall.rst: New file.
* doc/openacc-runtime-library-routines/accattach.rst: New file.
* doc/openacc-runtime-library-routines/acccopyin.rst: New file.
* doc/openacc-runtime-library-routines/acccopyout.rst: New file.
* doc/openacc-runtime-library-routines/acccreate.rst: New file.
* doc/openacc-runtime-library-routines/accdelete.rst: New file.
* doc/openacc-runtime-library-routines/accdetach.rst: New file.
* doc/openacc-runtime-library-routines/accdeviceptr.rst: New file.
* doc/openacc-runtime-library-routines/accfree.rst: New file.
* doc/openacc-runtime-library-routines/accgetcudastream.rst: New file.
* doc/openacc-runtime-library-routines/accgetcurrentcudacontext.rst: New file.
* doc/openacc-runtime-library-routines/accgetcurrentcudadevice.rst: New file.
* doc/openacc-runtime-library-routines/accgetdevicenum.rst: New file.
* doc/openacc-runtime-library-routines/accgetdevicetype.rst: New file.
* doc/openacc-runtime-library-routines/accgetnumdevices.rst: New file.
* doc/openacc-runtime-library-routines/accgetproperty.rst: New file.
* doc/openacc-runtime-library-routines/acchostptr.rst: New file.
* doc/openacc-runtime-library-routines/accinit.rst: New file.
* doc/openacc-runtime-library-routines/accispresent.rst: New file.
* doc/openacc-runtime-library-routines/accmalloc.rst: New file.
* doc/openacc-runtime-library-routines/accmapdata.rst: New file.
* doc/openacc-runtime-library-routines/accmemcpyfromdevice.rst: New file.
* doc/openacc-runtime-library-routines/accmemcpytodevice.rst: New file.
* doc/openacc-runtime-library-routines/accondevice.rst: New file.
* doc/openacc-runtime-library-routines/accpresentorcopyin.rst: New file.
* doc/openacc-runtime-library-routines/accpresentorcreate.rst: New file.
* doc/openacc-runtime-library-routines/accproflookup.rst: New file.
* doc/openacc-runtime-library-routines/accprofregister.rst: New file.
* doc/openacc-runtime-library-routines/accprofunregister.rst: New file.
* doc/openacc-runtime-library-routines/accregisterlibrary.rst: New file.
* doc/openacc-runtime-library-routines/accsetcudastream.rst: New file.
* doc/openacc-runtime-library-routines/accsetdevicenum.rst: New file.
* doc/openacc-runtime-library-routines/accsetdevicetype.rst: New file.
* doc/openacc-runtime-library-routines/accshutdown.rst: New file.
* doc/openacc-runtime-library-routines/accunmapdata.rst: New file.
* doc/openacc-runtime-library-routines/accupdatedevice.rst: New file.
* doc/openacc-runtime-library-routines/accupdateself.rst: New file.
* doc/openacc-runtime-library-routines/accwait.rst: New file.
* doc/openacc-runtime-library-routines/accwaitall.rst: New file.
* doc/openacc-runtime-library-routines/accwaitallasync.rst: New file.
* doc/openacc-runtime-library-routines/accwaitasync.rst: New file.
* doc/openmp-context-selectors.rst: New file.
* doc/openmp-environment-variables.rst: New file.
* doc/openmp-environment-variables/gompcpuaffinity.rst: New file.
* doc/openmp-environment-variables/gompdebug.rst: New file.
* doc/openmp-environment-variables/gomprtemsthreadpools.rst: New file.
* doc/openmp-environment-variables/gompspincount.rst: New file.
* doc/openmp-environment-variables/gompstacksize.rst: New file.
* doc/openmp-environment-variables/ompcancellation.rst: New file.
* doc/openmp-environment-variables/ompdefaultdevice.rst: New file.
* doc/openmp-environment-variables/ompdisplayenv.rst: New file.
* doc/openmp-environment-variables/ompdynamic.rst: New file.
* doc/openmp-environment-variables/ompmaxactivelevels.rst: New file.
* doc/openmp-environment-variables/ompmaxtaskpriority.rst: New file.
* doc/openmp-environment-variables/ompnested.rst: New file.
* doc/openmp-environment-variables/ompnumteams.rst: New file.
* doc/openmp-environment-variables/ompnumthreads.rst: New file.
* doc/openmp-environment-variables/ompplaces.rst: New file.
* doc/openmp-environment-variables/ompprocbind.rst: New file.
* doc/openmp-environment-variables/ompschedule.rst: New file.
* doc/openmp-environment-variables/ompstacksize.rst: New file.
* doc/openmp-environment-variables/omptargetoffload.rst: New file.
* doc/openmp-environment-variables/ompteamsthreadlimit.rst: New file.
* doc/openmp-environment-variables/ompthreadlimit.rst: New file.
* doc/openmp-environment-variables/ompwaitpolicy.rst: New file.
* doc/openmp-implementation-specifics.rst: New file.
* doc/openmp-implementation-status.rst: New file.
* doc/openmp-implementation-status/openmp-45.rst: New file.
* doc/openmp-implementation-status/openmp-50.rst: New file.
* doc/openmp-implementation-status/openmp-51.rst: New file.
* doc/openmp-implementation-status/openmp-52.rst: New file.
* doc/openmp-runtime-library-routines.rst: New file.
* doc/openmp-runtime-library-routines/ompdestroylock.rst: New file.
* doc/openmp-runtime-library-routines/ompdestroynestlock.rst: New file.
* doc/openmp-runtime-library-routines/ompfulfillevent.rst: New file.
* doc/openmp-runtime-library-routines/ompgetactivelevel.rst: New file.
* doc/openmp-runtime-library-routines/ompgetancestorthreadnum.rst: New file.
* doc/openmp-runtime-library-routines/ompgetcancellation.rst: New file.
* doc/openmp-runtime-library-routines/ompgetdefaultdevice.rst: New file.
* doc/openmp-runtime-library-routines/ompgetdevicenum.rst: New file.
* doc/openmp-runtime-library-routines/ompgetdynamic.rst: New file.
* doc/openmp-runtime-library-routines/ompgetinitialdevice.rst: New file.
* doc/openmp-runtime-library-routines/ompgetlevel.rst: New file.
* doc/openmp-runtime-library-routines/ompgetmaxactivelevels.rst: New file.
* doc/openmp-runtime-library-routines/ompgetmaxtaskpriority.rst: New file.
* doc/openmp-runtime-library-routines/ompgetmaxteams.rst: New file.
* doc/openmp-runtime-library-routines/ompgetmaxthreads.rst: New file.
* doc/openmp-runtime-library-routines/ompgetnested.rst: New file.
* doc/openmp-runtime-library-routines/ompgetnumdevices.rst: New file.
* doc/openmp-runtime-library-routines/ompgetnumprocs.rst: New file.
* doc/openmp-runtime-library-routines/ompgetnumteams.rst: New file.
* doc/openmp-runtime-library-routines/ompgetnumthreads.rst: New file.
* doc/openmp-runtime-library-routines/ompgetprocbind.rst: New file.
* doc/openmp-runtime-library-routines/ompgetschedule.rst: New file.
* doc/openmp-runtime-library-routines/ompgetsupportedactivelevels.rst: New file.
* doc/openmp-runtime-library-routines/ompgetteamnum.rst: New file.
* doc/openmp-runtime-library-routines/ompgetteamsize.rst: New file.
* doc/openmp-runtime-library-routines/ompgetteamsthreadlimit.rst: New file.
* doc/openmp-runtime-library-routines/ompgetthreadlimit.rst: New file.
* doc/openmp-runtime-library-routines/ompgetthreadnum.rst: New file.
* doc/openmp-runtime-library-routines/ompgetwtick.rst: New file.
* doc/openmp-runtime-library-routines/ompgetwtime.rst: New file.
* doc/openmp-runtime-library-routines/ompinfinal.rst: New file.
* doc/openmp-runtime-library-routines/ompinitlock.rst: New file.
* doc/openmp-runtime-library-routines/ompinitnestlock.rst: New file.
* doc/openmp-runtime-library-routines/ompinparallel.rst: New file.
* doc/openmp-runtime-library-routines/ompisinitialdevice.rst: New file.
* doc/openmp-runtime-library-routines/ompsetdefaultdevice.rst: New file.
* doc/openmp-runtime-library-routines/ompsetdynamic.rst: New file.
* doc/openmp-runtime-library-routines/ompsetlock.rst: New file.
* doc/openmp-runtime-library-routines/ompsetmaxactivelevels.rst: New file.
* doc/openmp-runtime-library-routines/ompsetnested.rst: New file.
* doc/openmp-runtime-library-routines/ompsetnestlock.rst: New file.
* doc/openmp-runtime-library-routines/ompsetnumteams.rst: New file.
* doc/openmp-runtime-library-routines/ompsetnumthreads.rst: New file.
* doc/openmp-runtime-library-routines/ompsetschedule.rst: New file.
* doc/openmp-runtime-library-routines/ompsetteamsthreadlimit.rst: New file.
* doc/openmp-runtime-library-routines/omptestlock.rst: New file.
* doc/openmp-runtime-library-routines/omptestnestlock.rst: New file.
* doc/openmp-runtime-library-routines/ompunsetlock.rst: New file.
* doc/openmp-runtime-library-routines/ompunsetnestlock.rst: New file.
* doc/reporting-bugs.rst: New file.
* doc/the-libgomp-abi.rst: New file.
* doc/the-libgomp-abi/implementing-atomic-construct.rst: New file.
* doc/the-libgomp-abi/implementing-barrier-construct.rst: New file.
* doc/the-libgomp-abi/implementing-critical-construct.rst: New file.
* doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst:
New file.
* doc/the-libgomp-abi/implementing-flush-construct.rst: New file.
* doc/the-libgomp-abi/implementing-for-construct.rst: New file.
* doc/the-libgomp-abi/implementing-master-construct.rst: New file.
* doc/the-libgomp-abi/implementing-openaccs-parallel-construct.rst: New file.
* doc/the-libgomp-abi/implementing-ordered-construct.rst: New file.
* doc/the-libgomp-abi/implementing-parallel-construct.rst: New file.
* doc/the-libgomp-abi/implementing-private-clause.rst: New file.
* doc/the-libgomp-abi/implementing-reduction-clause.rst: New file.
* doc/the-libgomp-abi/implementing-sections-construct.rst: New file.
* doc/the-libgomp-abi/implementing-single-construct.rst: New file.
* doc/the-libgomp-abi/implementing-threadprivate-construct.rst: New file.
libiberty/ChangeLog:
* doc/bsd.rst: New file.
* doc/conf.py: New file.
* doc/copyright.rst: New file.
* doc/extensions.rst: New file.
* doc/function-variable-and-macro-listing.rst: New file.
* doc/index.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/introduction.rst: New file.
* doc/lesser-general-public-license-2.1.rst: New file.
* doc/overview.rst: New file.
* doc/replacement-functions.rst: New file.
* doc/supplemental-functions.rst: New file.
* doc/using.rst: New file.
libitm/ChangeLog:
* doc/c-c++-language-constructs-for-tm.rst: New file.
* doc/conf.py: New file.
* doc/copyright.rst: New file.
* doc/enabling-libitm.rst: New file.
* doc/gnu-free-documentation-license.rst: New file.
* doc/index.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/internals.rst: New file.
* doc/locking-conventions.rst: New file.
* doc/nesting-flat-vs-closed.rst: New file.
* doc/the-libitm-abi.rst: New file.
* doc/the-libitm-abi/function-list.rst: New file.
* doc/the-libitm-abi/future-enhancements-to-the-abi.rst: New file.
* doc/the-libitm-abi/library-design-principles.rst: New file.
* doc/the-libitm-abi/memory-model.rst: New file.
* doc/the-libitm-abi/non-objectives.rst: New file.
* doc/the-libitm-abi/objectives.rst: New file.
* doc/the-libitm-abi/sample-code.rst: New file.
* doc/the-libitm-abi/types-and-macros-list.rst: New file.
* doc/tm-methods-and-method-groups.rst: New file.
libquadmath/ChangeLog:
* doc/conf.py: New file.
* doc/copyright.rst: New file.
* doc/gnu-free-documentation-license.rst: New file.
* doc/i-o-library-routines.rst: New file.
* doc/index.rst: New file.
* doc/indices-and-tables.rst: New file.
* doc/introduction.rst: New file.
* doc/math-library-routines.rst: New file.
* doc/quadmathsnprintf.rst: New file.
* doc/reporting-bugs.rst: New file.
* doc/strtoflt128.rst: New file.
* doc/typedef-and-constants.rst: New file.
Diffstat (limited to 'libgomp')
167 files changed, 5986 insertions, 0 deletions
diff --git a/libgomp/doc/amd-radeon-gcn.rst b/libgomp/doc/amd-radeon-gcn.rst new file mode 100644 index 0000000..60ff060 --- /dev/null +++ b/libgomp/doc/amd-radeon-gcn.rst @@ -0,0 +1,57 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _amd-radeon: + +AMD Radeon (GCN) +**************** + +On the hardware side, there is the hierarchy (fine to coarse): + +* work item (thread) + +* wavefront + +* work group + +* compute unite (CU) + +All OpenMP and OpenACC levels are used, i.e. + +* OpenMP's simd and OpenACC's vector map to work items (thread) + +* OpenMP's threads ('parallel') and OpenACC's workers map + to wavefronts + +* OpenMP's teams and OpenACC's gang use a threadpool with the + size of the number of teams or gangs, respectively. + +The used sizes are + +* Number of teams is the specified ``num_teams`` (OpenMP) or + ``num_gangs`` (OpenACC) or otherwise the number of CU + +* Number of wavefronts is 4 for gfx900 and 16 otherwise; + ``num_threads`` (OpenMP) and ``num_workers`` (OpenACC) + overrides this if smaller. + +* The wavefront has 102 scalars and 64 vectors + +* Number of workitems is always 64 + +* The hardware permits maximally 40 workgroups/CU and + 16 wavefronts/workgroup up to a limit of 40 wavefronts in total per CU. + +* 80 scalars registers and 24 vector registers in non-kernel functions + (the chosen procedure-calling API). + +* For the kernel itself: as many as register pressure demands (number of + teams and number of threads, scaled down if registers are exhausted) + +The implementation remark: + +* I/O within OpenMP target regions and OpenACC parallel/kernels is supported + using the C library ``printf`` functions and the Fortran + ``print`` / ``write`` statements.
\ No newline at end of file diff --git a/libgomp/doc/conf.py b/libgomp/doc/conf.py new file mode 100644 index 0000000..27e3131 --- /dev/null +++ b/libgomp/doc/conf.py @@ -0,0 +1,24 @@ +# Configuration file for the Sphinx documentation builder. + +import sys +sys.path.append('../..//doc') + +from baseconf import * + +name = 'libgomp' +project = 'GNU Offloading and Multi Processing Runtime Library' +copyright = '2006-2022 Free Software Foundation, Inc.' +authors = 'GCC Developer Community' + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +latex_documents = [ + ('index', f'{name}.tex', project, authors, 'manual'), +] + +texinfo_documents = [ + ('index', name, project, authors, None, None, None, True) +] + +set_common(name, globals())
\ No newline at end of file diff --git a/libgomp/doc/copyright.rst b/libgomp/doc/copyright.rst new file mode 100644 index 0000000..0f99e93 --- /dev/null +++ b/libgomp/doc/copyright.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the GPL license file + +Copyright +^^^^^^^^^ + +Permission is granted to copy, distribute and/or modify this document +under the terms of the GNU Free Documentation License, Version 1.3 or +any later version published by the Free Software Foundation; with the +Invariant Sections being **Funding Free Software**, +the Front-Cover texts being (a) (see below), and with +the Back-Cover Texts being (b) (see below). A copy of the license is +in the :ref:`gnu_fdl`. + +(a) The FSF's Front-Cover Text is: + + A GNU Manual + +(b) The FSF's Back-Cover Text is: + + You have freedom to copy and modify this GNU Manual, like GNU + software. Copies published by the Free Software Foundation raise + funds for GNU development.
\ No newline at end of file diff --git a/libgomp/doc/cuda-streams-usage.rst b/libgomp/doc/cuda-streams-usage.rst new file mode 100644 index 0000000..4e81ec4 --- /dev/null +++ b/libgomp/doc/cuda-streams-usage.rst @@ -0,0 +1,50 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _cuda-streams-usage: + +CUDA Streams Usage +------------------ + +This applies to the ``nvptx`` plugin only. + +The library provides elements that perform asynchronous movement of +data and asynchronous operation of computing constructs. This +asynchronous functionality is implemented by making use of CUDA +streams [#f1]_. + +The primary means by that the asynchronous functionality is accessed +is through the use of those OpenACC directives which make use of the +``async`` and ``wait`` clauses. When the ``async`` clause is +first used with a directive, it creates a CUDA stream. If an +``async-argument`` is used with the ``async`` clause, then the +stream is associated with the specified ``async-argument``. + +Following the creation of an association between a CUDA stream and the +``async-argument`` of an ``async`` clause, both the ``wait`` +clause and the ``wait`` directive can be used. When either the +clause or directive is used after stream creation, it creates a +rendezvous point whereby execution waits until all operations +associated with the ``async-argument``, that is, stream, have +completed. + +Normally, the management of the streams that are created as a result of +using the ``async`` clause, is done without any intervention by the +caller. This implies the association between the ``async-argument`` +and the CUDA stream will be maintained for the lifetime of the program. +However, this association can be changed through the use of the library +function ``acc_set_cuda_stream``. When the function +``acc_set_cuda_stream`` is called, the CUDA stream that was +originally associated with the ``async`` clause will be destroyed. +Caution should be taken when changing the association as subsequent +references to the ``async-argument`` refer to a different +CUDA stream. + +.. - + OpenACC Library Interoperability + - + +.. [#f1] See "Stream Management" in "CUDA Driver API", + TRM-06703-001, Version 5.5, for additional information
\ No newline at end of file diff --git a/libgomp/doc/enabling-openacc.rst b/libgomp/doc/enabling-openacc.rst new file mode 100644 index 0000000..dedb403 --- /dev/null +++ b/libgomp/doc/enabling-openacc.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _enabling-openacc: + +Enabling OpenACC +---------------- + +To activate the OpenACC extensions for C/C++ and Fortran, the compile-time +flag :option:`-fopenacc` must be specified. This enables the OpenACC directive +``#pragma acc`` in C/C++ and ``!$acc`` directives in free form, +``c$acc``, ``*$acc`` and ``!$acc`` directives in fixed form, +``!$`` conditional compilation sentinels in free form and ``c$``, +``*$`` and ``!$`` sentinels in fixed form, for Fortran. The flag also +arranges for automatic linking of the OpenACC runtime library +(:ref:`openacc-runtime-library-routines`). + +See https://gcc.gnu.org/wiki/OpenACC for more information. + +A complete description of all OpenACC directives accepted may be found in +the `OpenACC <https://www.openacc.org>`_ Application Programming +Interface manual, version 2.6.
\ No newline at end of file diff --git a/libgomp/doc/enabling-openmp.rst b/libgomp/doc/enabling-openmp.rst new file mode 100644 index 0000000..368bc44 --- /dev/null +++ b/libgomp/doc/enabling-openmp.rst @@ -0,0 +1,22 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _enabling-openmp: + +Enabling OpenMP +--------------- + +To activate the OpenMP extensions for C/C++ and Fortran, the compile-time +flag :command:`-fopenmp` must be specified. This enables the OpenMP directive +``#pragma omp`` in C/C++ and ``!$omp`` directives in free form, +``c$omp``, ``*$omp`` and ``!$omp`` directives in fixed form, +``!$`` conditional compilation sentinels in free form and ``c$``, +``*$`` and ``!$`` sentinels in fixed form, for Fortran. The flag also +arranges for automatic linking of the OpenMP runtime library +(:ref:`runtime-library-routines`). + +A complete description of all OpenMP directives may be found in the +`OpenMP Application Program Interface <https://www.openmp.org>`_ manuals. +See also :ref:`openmp-implementation-status`.
\ No newline at end of file diff --git a/libgomp/doc/first-invocation-nvidia-cublas-library-api.rst b/libgomp/doc/first-invocation-nvidia-cublas-library-api.rst new file mode 100644 index 0000000..a3b30d0 --- /dev/null +++ b/libgomp/doc/first-invocation-nvidia-cublas-library-api.rst @@ -0,0 +1,52 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +First invocation: NVIDIA CUBLAS library API +******************************************* + +In this first use case (see below), a function in the CUBLAS library is called +prior to any of the functions in the OpenACC library. More specifically, the +function ``cublasCreate()``. + +When invoked, the function initializes the library and allocates the +hardware resources on the host and the device on behalf of the caller. Once +the initialization and allocation has completed, a handle is returned to the +caller. The OpenACC library also requires initialization and allocation of +hardware resources. Since the CUBLAS library has already allocated the +hardware resources for the device, all that is left to do is to initialize +the OpenACC library and acquire the hardware resources on the host. + +Prior to calling the OpenACC function that initializes the library and +allocate the host hardware resources, you need to acquire the device number +that was allocated during the call to ``cublasCreate()``. The invoking of the +runtime library function ``cudaGetDevice()`` accomplishes this. Once +acquired, the device number is passed along with the device type as +parameters to the OpenACC library function ``acc_set_device_num()``. + +Once the call to ``acc_set_device_num()`` has completed, the OpenACC +library uses the context that was created during the call to +``cublasCreate()``. In other words, both libraries will be sharing the +same context. + +.. code-block:: c++ + + /* Create the handle */ + s = cublasCreate(&h); + if (s != CUBLAS_STATUS_SUCCESS) + { + fprintf(stderr, "cublasCreate failed %d\n", s); + exit(EXIT_FAILURE); + } + + /* Get the device number */ + e = cudaGetDevice(&dev); + if (e != cudaSuccess) + { + fprintf(stderr, "cudaGetDevice failed %d\n", e); + exit(EXIT_FAILURE); + } + + /* Initialize OpenACC library and use device 'dev' */ + acc_set_device_num(dev, acc_device_nvidia);
\ No newline at end of file diff --git a/libgomp/doc/first-invocation-openacc-library-api.rst b/libgomp/doc/first-invocation-openacc-library-api.rst new file mode 100644 index 0000000..1962daa --- /dev/null +++ b/libgomp/doc/first-invocation-openacc-library-api.rst @@ -0,0 +1,74 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +First invocation: OpenACC library API +************************************* + +In this second use case (see below), a function in the OpenACC library is +called prior to any of the functions in the CUBLAS library. More specificially, +the function ``acc_set_device_num()``. + +In the use case presented here, the function ``acc_set_device_num()`` +is used to both initialize the OpenACC library and allocate the hardware +resources on the host and the device. In the call to the function, the +call parameters specify which device to use and what device +type to use, i.e., ``acc_device_nvidia``. It should be noted that this +is but one method to initialize the OpenACC library and allocate the +appropriate hardware resources. Other methods are available through the +use of environment variables and these will be discussed in the next section. + +Once the call to ``acc_set_device_num()`` has completed, other OpenACC +functions can be called as seen with multiple calls being made to +``acc_copyin()``. In addition, calls can be made to functions in the +CUBLAS library. In the use case a call to ``cublasCreate()`` is made +subsequent to the calls to ``acc_copyin()``. +As seen in the previous use case, a call to ``cublasCreate()`` +initializes the CUBLAS library and allocates the hardware resources on the +host and the device. However, since the device has already been allocated, +``cublasCreate()`` will only initialize the CUBLAS library and allocate +the appropriate hardware resources on the host. The context that was created +as part of the OpenACC initialization is shared with the CUBLAS library, +similarly to the first use case. + +.. code-block:: c++ + + dev = 0; + + acc_set_device_num(dev, acc_device_nvidia); + + /* Copy the first set to the device */ + d_X = acc_copyin(&h_X[0], N * sizeof (float)); + if (d_X == NULL) + { + fprintf(stderr, "copyin error h_X\n"); + exit(EXIT_FAILURE); + } + + /* Copy the second set to the device */ + d_Y = acc_copyin(&h_Y1[0], N * sizeof (float)); + if (d_Y == NULL) + { + fprintf(stderr, "copyin error h_Y1\n"); + exit(EXIT_FAILURE); + } + + /* Create the handle */ + s = cublasCreate(&h); + if (s != CUBLAS_STATUS_SUCCESS) + { + fprintf(stderr, "cublasCreate failed %d\n", s); + exit(EXIT_FAILURE); + } + + /* Perform saxpy using CUBLAS library function */ + s = cublasSaxpy(h, N, &alpha, d_X, 1, d_Y, 1); + if (s != CUBLAS_STATUS_SUCCESS) + { + fprintf(stderr, "cublasSaxpy failed %d\n", s); + exit(EXIT_FAILURE); + } + + /* Copy the results from the device */ + acc_memcpy_from_device(&h_Y1[0], d_Y, N * sizeof (float));
\ No newline at end of file diff --git a/libgomp/doc/funding.rst b/libgomp/doc/funding.rst new file mode 100644 index 0000000..09aa114 --- /dev/null +++ b/libgomp/doc/funding.rst @@ -0,0 +1,6 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. include:: ../../doc/funding.rst
\ No newline at end of file diff --git a/libgomp/doc/general-public-license-3.rst b/libgomp/doc/general-public-license-3.rst new file mode 100644 index 0000000..eadeef0b --- /dev/null +++ b/libgomp/doc/general-public-license-3.rst @@ -0,0 +1,6 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. include:: ../../doc/gpl-3.0.rst
\ No newline at end of file diff --git a/libgomp/doc/gnu-free-documentation-license.rst b/libgomp/doc/gnu-free-documentation-license.rst new file mode 100644 index 0000000..089cc68 --- /dev/null +++ b/libgomp/doc/gnu-free-documentation-license.rst @@ -0,0 +1,6 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. include:: ../../doc/gnu_free_documentation_license.rst
\ No newline at end of file diff --git a/libgomp/doc/implementation-status-and-implementation-defined-behavior.rst b/libgomp/doc/implementation-status-and-implementation-defined-behavior.rst new file mode 100644 index 0000000..2c65c71 --- /dev/null +++ b/libgomp/doc/implementation-status-and-implementation-defined-behavior.rst @@ -0,0 +1,281 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +Implementation Status and Implementation-Defined Behavior +********************************************************* + +We're implementing the OpenACC Profiling Interface as defined by the +OpenACC 2.6 specification. We're clarifying some aspects here as +*implementation-defined behavior*, while they're still under +discussion within the OpenACC Technical Committee. + +This implementation is tuned to keep the performance impact as low as +possible for the (very common) case that the Profiling Interface is +not enabled. This is relevant, as the Profiling Interface affects all +the *hot* code paths (in the target code, not in the offloaded +code). Users of the OpenACC Profiling Interface can be expected to +understand that performance will be impacted to some degree once the +Profiling Interface has gotten enabled: for example, because of the +*runtime* (libgomp) calling into a third-party *library* for +every event that has been registered. + +We're not yet accounting for the fact that OpenACC events may +occur during event processing. +We just handle one case specially, as required by CUDA 9.0 +:command:`nvprof`, that ``acc_get_device_type`` +(:ref:`acc_get_device_type`)) may be called from +``acc_ev_device_init_start``, ``acc_ev_device_init_end`` +callbacks. + +We're not yet implementing initialization via a +``acc_register_library`` function that is either statically linked +in, or dynamically via :envvar:`LD_PRELOAD`. +Initialization via ``acc_register_library`` functions dynamically +loaded via the :envvar:`ACC_PROFLIB` environment variable does work, as +does directly calling ``acc_prof_register``, +``acc_prof_unregister``, ``acc_prof_lookup``. + +As currently there are no inquiry functions defined, calls to +``acc_prof_lookup`` will always return ``NULL``. + +There aren't separate *start*, *stop* events defined for the +event types ``acc_ev_create``, ``acc_ev_delete``, +``acc_ev_alloc``, ``acc_ev_free``. It's not clear if these +should be triggered before or after the actual device-specific call is +made. We trigger them after. + +Remarks about data provided to callbacks: + +acc_prof_info.event_type + It's not clear if for *nested* event callbacks (for example, + ``acc_ev_enqueue_launch_start`` as part of a parent compute + construct), this should be set for the nested event + (``acc_ev_enqueue_launch_start``), or if the value of the parent + construct should remain (``acc_ev_compute_construct_start``). In + this implementation, the value will generally correspond to the + innermost nested event type. + +acc_prof_info.device_type + * For ``acc_ev_compute_construct_start``, and in presence of an + ``if`` clause with *false* argument, this will still refer to + the offloading device type. + It's not clear if that's the expected behavior. + + * Complementary to the item before, for + ``acc_ev_compute_construct_end``, this is set to + ``acc_device_host`` in presence of an ``if`` clause with + *false* argument. + It's not clear if that's the expected behavior. + +acc_prof_info.thread_id + Always ``-1`` ; not yet implemented. + +acc_prof_info.async + * Not yet implemented correctly for + ``acc_ev_compute_construct_start``. + + * In a compute construct, for host-fallback + execution/ ``acc_device_host`` it will always be + ``acc_async_sync``. + It's not clear if that's the expected behavior. + + * For ``acc_ev_device_init_start`` and ``acc_ev_device_init_end``, + it will always be ``acc_async_sync``. + It's not clear if that's the expected behavior. + +acc_prof_info.async_queue + There is no limited number of asynchronous queues in libgomp. + This will always have the same value as ``acc_prof_info.async``. + +acc_prof_info.src_file + Always ``NULL`` ; not yet implemented. + +acc_prof_info.func_name + Always ``NULL`` ; not yet implemented. + +acc_prof_info.line_no + Always ``-1`` ; not yet implemented. + +acc_prof_info.end_line_no + Always ``-1`` ; not yet implemented. + +acc_prof_info.func_line_no + Always ``-1`` ; not yet implemented. + +acc_prof_info.func_end_line_no + Always ``-1`` ; not yet implemented. + +acc_event_info.event_type, acc_event_info.*.event_type + Relating to ``acc_prof_info.event_type`` discussed above, in this + implementation, this will always be the same value as + ``acc_prof_info.event_type``. + +acc_event_info.\*.parent_construct + * Will be ``acc_construct_parallel`` for all OpenACC compute + constructs as well as many OpenACC Runtime API calls; should be the + one matching the actual construct, or + ``acc_construct_runtime_api``, respectively. + + * Will be ``acc_construct_enter_data`` or + ``acc_construct_exit_data`` when processing variable mappings + specified in OpenACC *declare* directives; should be + ``acc_construct_declare``. + + * For implicit ``acc_ev_device_init_start``, + ``acc_ev_device_init_end``, and explicit as well as implicit + ``acc_ev_alloc``, ``acc_ev_free``, + ``acc_ev_enqueue_upload_start``, ``acc_ev_enqueue_upload_end``, + ``acc_ev_enqueue_download_start``, and + ``acc_ev_enqueue_download_end``, will be + ``acc_construct_parallel`` ; should reflect the real parent + construct. + +acc_event_info.\*.implicit + For ``acc_ev_alloc``, ``acc_ev_free``, + ``acc_ev_enqueue_upload_start``, ``acc_ev_enqueue_upload_end``, + ``acc_ev_enqueue_download_start``, and + ``acc_ev_enqueue_download_end``, this currently will be ``1`` + also for explicit usage. + +acc_event_info.data_event.var_name + Always ``NULL`` ; not yet implemented. + +acc_event_info.data_event.host_ptr + For ``acc_ev_alloc``, and ``acc_ev_free``, this is always + ``NULL``. + +typedef union acc_api_info + ... as printed in 5.2.3. Third Argument: API-Specific + Information. This should obviously be ``typedef struct + acc_api_info``. + +acc_api_info.device_api + Possibly not yet implemented correctly for + ``acc_ev_compute_construct_start``, + ``acc_ev_device_init_start``, ``acc_ev_device_init_end`` : + will always be ``acc_device_api_none`` for these event types. + For ``acc_ev_enter_data_start``, it will be + ``acc_device_api_none`` in some cases. + +acc_api_info.device_type + Always the same as ``acc_prof_info.device_type``. + +acc_api_info.vendor + Always ``-1`` ; not yet implemented. + +acc_api_info.device_handle + Always ``NULL`` ; not yet implemented. + +acc_api_info.context_handle + Always ``NULL`` ; not yet implemented. + +acc_api_info.async_handle + Always ``NULL`` ; not yet implemented. + +Remarks about certain event types: + +acc_ev_device_init_start, acc_ev_device_init_end + * + .. See 'DEVICE_INIT_INSIDE_COMPUTE_CONSTRUCT' in + 'libgomp.oacc-c-c++-common/acc_prof-kernels-1.c', + 'libgomp.oacc-c-c++-common/acc_prof-parallel-1.c'. + + When a compute construct triggers implicit + ``acc_ev_device_init_start`` and ``acc_ev_device_init_end`` + events, they currently aren't *nested within* the corresponding + ``acc_ev_compute_construct_start`` and + ``acc_ev_compute_construct_end``, but they're currently observed + *before* ``acc_ev_compute_construct_start``. + It's not clear what to do: the standard asks us provide a lot of + details to the ``acc_ev_compute_construct_start`` callback, without + (implicitly) initializing a device before? + + * Callbacks for these event types will not be invoked for calls to the + ``acc_set_device_type`` and ``acc_set_device_num`` functions. + It's not clear if they should be. + +acc_ev_enter_data_start, acc_ev_enter_data_end, acc_ev_exit_data_start, acc_ev_exit_data_end + * Callbacks for these event types will also be invoked for OpenACC + *host_data* constructs. + It's not clear if they should be. + + * Callbacks for these event types will also be invoked when processing + variable mappings specified in OpenACC *declare* directives. + It's not clear if they should be. + +Callbacks for the following event types will be invoked, but dispatch +and information provided therein has not yet been thoroughly reviewed: + +* ``acc_ev_alloc`` + +* ``acc_ev_free`` + +* ``acc_ev_update_start``, ``acc_ev_update_end`` + +* ``acc_ev_enqueue_upload_start``, ``acc_ev_enqueue_upload_end`` + +* ``acc_ev_enqueue_download_start``, ``acc_ev_enqueue_download_end`` + +During device initialization, and finalization, respectively, +callbacks for the following event types will not yet be invoked: + +* ``acc_ev_alloc`` + +* ``acc_ev_free`` + +Callbacks for the following event types have not yet been implemented, +so currently won't be invoked: + +* ``acc_ev_device_shutdown_start``, ``acc_ev_device_shutdown_end`` + +* ``acc_ev_runtime_shutdown`` + +* ``acc_ev_create``, ``acc_ev_delete`` + +* ``acc_ev_wait_start``, ``acc_ev_wait_end`` + +For the following runtime library functions, not all expected +callbacks will be invoked (mostly concerning implicit device +initialization): + +* ``acc_get_num_devices`` + +* ``acc_set_device_type`` + +* ``acc_get_device_type`` + +* ``acc_set_device_num`` + +* ``acc_get_device_num`` + +* ``acc_init`` + +* ``acc_shutdown`` + +Aside from implicit device initialization, for the following runtime +library functions, no callbacks will be invoked for shared-memory +offloading devices (it's not clear if they should be): + +* ``acc_malloc`` + +* ``acc_free`` + +* ``acc_copyin``, ``acc_present_or_copyin``, ``acc_copyin_async`` + +* ``acc_create``, ``acc_present_or_create``, ``acc_create_async`` + +* ``acc_copyout``, ``acc_copyout_async``, ``acc_copyout_finalize``, ``acc_copyout_finalize_async`` + +* ``acc_delete``, ``acc_delete_async``, ``acc_delete_finalize``, ``acc_delete_finalize_async`` + +* ``acc_update_device``, ``acc_update_device_async`` + +* ``acc_update_self``, ``acc_update_self_async`` + +* ``acc_map_data``, ``acc_unmap_data`` + +* ``acc_memcpy_to_device``, ``acc_memcpy_to_device_async`` + +* ``acc_memcpy_from_device``, ``acc_memcpy_from_device_async``
\ No newline at end of file diff --git a/libgomp/doc/index.rst b/libgomp/doc/index.rst new file mode 100644 index 0000000..066ed48 --- /dev/null +++ b/libgomp/doc/index.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +GNU libgomp +=========== + +.. only:: html + + Contents: + +.. toctree:: + + copyright + introduction + enabling-openmp + openmp-implementation-status + openmp-runtime-library-routines + openmp-environment-variables + enabling-openacc + openacc-runtime-library-routines + openacc-environment-variables + cuda-streams-usage + openacc-library-interoperability + openacc-profiling-interface + openmp-implementation-specifics + offload-target-specifics + the-libgomp-abi + reporting-bugs + general-public-license-3 + gnu-free-documentation-license + funding + + indices-and-tables
\ No newline at end of file diff --git a/libgomp/doc/indices-and-tables.rst b/libgomp/doc/indices-and-tables.rst new file mode 100644 index 0000000..9799e4e --- /dev/null +++ b/libgomp/doc/indices-and-tables.rst @@ -0,0 +1 @@ +.. include:: ../../doc/indices-and-tables.rst
\ No newline at end of file diff --git a/libgomp/doc/introduction.rst b/libgomp/doc/introduction.rst new file mode 100644 index 0000000..758fed7 --- /dev/null +++ b/libgomp/doc/introduction.rst @@ -0,0 +1,25 @@ +.. _top: + +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +Introduction +============ + +.. index:: Introduction + +This manual documents the usage of libgomp, the GNU Offloading and +Multi Processing Runtime Library. This includes the GNU +implementation of the `OpenMP <https://www.openmp.org>`_ Application +Programming Interface (API) for multi-platform shared-memory parallel +programming in C/C++ and Fortran, and the GNU implementation of the +`OpenACC <https://www.openacc.org>`_ Application Programming +Interface (API) for offloading of code to accelerator devices in C/C++ +and Fortran. + +Originally, libgomp implemented the GNU OpenMP Runtime Library. Based +on this, support for OpenACC and offloading (both OpenACC and OpenMP +4's target construct) has been added later on, and the library's name +changed to GNU Offloading and Multi Processing Runtime Library.
\ No newline at end of file diff --git a/libgomp/doc/memory-allocation-with-libmemkind.rst b/libgomp/doc/memory-allocation-with-libmemkind.rst new file mode 100644 index 0000000..28c102c --- /dev/null +++ b/libgomp/doc/memory-allocation-with-libmemkind.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _memory-allocation-with-libmemkind: + +Memory allocation with libmemkind +********************************* + +On Linux systems, where the `memkind +library <https://github.com/memkind/memkind>`_ (``libmemkind.so.0``) is available at runtime, it is used when +creating memory allocators requesting + +* the memory space ``omp_high_bw_mem_space`` + +* the memory space ``omp_large_cap_mem_space`` + +* the partition trait ``omp_atv_interleaved`` + +.. - + Offload-Target Specifics + -
\ No newline at end of file diff --git a/libgomp/doc/nvptx.rst b/libgomp/doc/nvptx.rst new file mode 100644 index 0000000..c121e99 --- /dev/null +++ b/libgomp/doc/nvptx.rst @@ -0,0 +1,60 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _nvptx: + +nvptx +***** + +On the hardware side, there is the hierarchy (fine to coarse): + +* thread + +* warp + +* thread block + +* streaming multiprocessor + +All OpenMP and OpenACC levels are used, i.e. + +* OpenMP's simd and OpenACC's vector map to threads + +* OpenMP's threads ('parallel') and OpenACC's workers map to warps + +* OpenMP's teams and OpenACC's gang use a threadpool with the + size of the number of teams or gangs, respectively. + +The used sizes are + +* The ``warp_size`` is always 32 + +* CUDA kernel launched: ``dim={#teams,1,1}, blocks={#threads,warp_size,1}``. + +Additional information can be obtained by setting the environment variable to +``GOMP_DEBUG=1`` (very verbose; grep for ``kernel.*launch`` for launch +parameters). + +GCC generates generic PTX ISA code, which is just-in-time compiled by CUDA, +which caches the JIT in the user's directory (see CUDA documentation; can be +tuned by the environment variables ``CUDA_CACHE_{DISABLE,MAXSIZE,PATH}``. + +Note: While PTX ISA is generic, the ``-mptx=`` and ``-march=`` commandline +options still affect the used PTX ISA code and, thus, the requirments on +CUDA version and hardware. + +The implementation remark: + +* I/O within OpenMP target regions and OpenACC parallel/kernels is supported + using the C library ``printf`` functions. Note that the Fortran + ``print`` / ``write`` statements are not supported, yet. + +* Compilation OpenMP code that contains ``requires reverse_offload`` + requires at least ``-march=sm_35``, compiling for ``-march=sm_30`` + is not supported. + +.. - + The libgomp ABI + -
\ No newline at end of file diff --git a/libgomp/doc/offload-target-specifics.rst b/libgomp/doc/offload-target-specifics.rst new file mode 100644 index 0000000..25d46d0 --- /dev/null +++ b/libgomp/doc/offload-target-specifics.rst @@ -0,0 +1,17 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _offload-target-specifics: + +Offload-Target Specifics +------------------------ + +The following sections present notes on the offload-target specifics + +.. toctree:: + :maxdepth: 2 + + amd-radeon-gcn + nvptx
\ No newline at end of file diff --git a/libgomp/doc/openacc-environment-variables.rst b/libgomp/doc/openacc-environment-variables.rst new file mode 100644 index 0000000..ec677a7 --- /dev/null +++ b/libgomp/doc/openacc-environment-variables.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openacc-environment-variables: + +OpenACC Environment Variables +----------------------------- + +The variables :envvar:`ACC_DEVICE_TYPE` and :envvar:`ACC_DEVICE_NUM` +are defined by section 4 of the OpenACC specification in version 2.0. +The variable :envvar:`ACC_PROFLIB` +is defined by section 4 of the OpenACC specification in version 2.6. +The variable :envvar:`GCC_ACC_NOTIFY` is used for diagnostic purposes. + +.. toctree:: + :maxdepth: 2 + + openacc-environment-variables/accdevicetype + openacc-environment-variables/accdevicenum + openacc-environment-variables/accproflib + openacc-environment-variables/gccaccnotify
\ No newline at end of file diff --git a/libgomp/doc/openacc-environment-variables/accdevicenum.rst b/libgomp/doc/openacc-environment-variables/accdevicenum.rst new file mode 100644 index 0000000..2779126 --- /dev/null +++ b/libgomp/doc/openacc-environment-variables/accdevicenum.rst @@ -0,0 +1,13 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_device_num: + +ACC_DEVICE_NUM +************** + +Reference: + :openacc:`2.6`, section + 4.2.
\ No newline at end of file diff --git a/libgomp/doc/openacc-environment-variables/accdevicetype.rst b/libgomp/doc/openacc-environment-variables/accdevicetype.rst new file mode 100644 index 0000000..10aa4fc --- /dev/null +++ b/libgomp/doc/openacc-environment-variables/accdevicetype.rst @@ -0,0 +1,13 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_device_type: + +ACC_DEVICE_TYPE +*************** + +Reference: + :openacc:`2.6`, section + 4.1.
\ No newline at end of file diff --git a/libgomp/doc/openacc-environment-variables/accproflib.rst b/libgomp/doc/openacc-environment-variables/accproflib.rst new file mode 100644 index 0000000..3309368 --- /dev/null +++ b/libgomp/doc/openacc-environment-variables/accproflib.rst @@ -0,0 +1,16 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_proflib: + +ACC_PROFLIB +*********** + +See also: + :ref:`acc_register_library`, :ref:`openacc-profiling-interface` + +Reference: + :openacc:`2.6`, section + 4.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-environment-variables/gccaccnotify.rst b/libgomp/doc/openacc-environment-variables/gccaccnotify.rst new file mode 100644 index 0000000..315795f --- /dev/null +++ b/libgomp/doc/openacc-environment-variables/gccaccnotify.rst @@ -0,0 +1,12 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _gcc_acc_notify: + +GCC_ACC_NOTIFY +************** + +Description: + Print debug information pertaining to the accelerator.
\ No newline at end of file diff --git a/libgomp/doc/openacc-introduction.rst b/libgomp/doc/openacc-introduction.rst new file mode 100644 index 0000000..96d9f80 --- /dev/null +++ b/libgomp/doc/openacc-introduction.rst @@ -0,0 +1,21 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the GPL license file + +Introduction +************ + +The OpenACC library uses the CUDA Driver API, and may interact with +programs that use the Runtime library directly, or another library +based on the Runtime library, e.g., CUBLAS [#f1]_. + +This chapter describes the use cases and what changes are +required in order to use both the OpenACC library and the CUBLAS and Runtime +libraries within a program. + +.. [#f1] See section 2.26, + "Interactions with the CUDA Driver API" in + "CUDA Runtime API", Version 5.5, and section 2.27, "VDPAU + Interoperability", in "CUDA Driver API", TRM-06703-001, Version 5.5, + for additional information on library interoperability.
\ No newline at end of file diff --git a/libgomp/doc/openacc-library-and-environment-variables.rst b/libgomp/doc/openacc-library-and-environment-variables.rst new file mode 100644 index 0000000..d9e06e3 --- /dev/null +++ b/libgomp/doc/openacc-library-and-environment-variables.rst @@ -0,0 +1,30 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +OpenACC library and environment variables +***************************************** + +There are two environment variables associated with the OpenACC library +that may be used to control the device type and device number: +:envvar:`ACC_DEVICE_TYPE` and :envvar:`ACC_DEVICE_NUM`, respectively. These two +environment variables can be used as an alternative to calling +``acc_set_device_num()``. As seen in the second use case, the device +type and device number were specified using ``acc_set_device_num()``. +If however, the aforementioned environment variables were set, then the +call to ``acc_set_device_num()`` would not be required. + +The use of the environment variables is only relevant when an OpenACC function +is called prior to a call to ``cudaCreate()``. If ``cudaCreate()`` +is called prior to a call to an OpenACC function, then you must call +``acc_set_device_num()`` [#f1]_. + +.. - + OpenACC Profiling Interface + - + +.. [#f1] More complete information + about :envvar:`ACC_DEVICE_TYPE` and :envvar:`ACC_DEVICE_NUM` can be found in + sections 4.1 and 4.2 of the `OpenACC <https://www.openacc.org>`_ + Application Programming Interface”, Version 2.6.
\ No newline at end of file diff --git a/libgomp/doc/openacc-library-interoperability.rst b/libgomp/doc/openacc-library-interoperability.rst new file mode 100644 index 0000000..bdd5e22 --- /dev/null +++ b/libgomp/doc/openacc-library-interoperability.rst @@ -0,0 +1,17 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openacc-library-interoperability: + +OpenACC Library Interoperability +-------------------------------- + +.. toctree:: + :maxdepth: 2 + + openacc-introduction + first-invocation-nvidia-cublas-library-api + first-invocation-openacc-library-api + openacc-library-and-environment-variables
\ No newline at end of file diff --git a/libgomp/doc/openacc-profiling-interface.rst b/libgomp/doc/openacc-profiling-interface.rst new file mode 100644 index 0000000..4c5e94a --- /dev/null +++ b/libgomp/doc/openacc-profiling-interface.rst @@ -0,0 +1,14 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openacc-profiling-interface: + +OpenACC Profiling Interface +--------------------------- + +.. toctree:: + :maxdepth: 2 + + implementation-status-and-implementation-defined-behavior
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines.rst b/libgomp/doc/openacc-runtime-library-routines.rst new file mode 100644 index 0000000..ec8ecd1b --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines.rst @@ -0,0 +1,74 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openacc-runtime-library-routines: + +OpenACC Runtime Library Routines +-------------------------------- + +The runtime routines described here are defined by section 3 of the OpenACC +specifications in version 2.6. +They have C linkage, and do not throw exceptions. +Generally, they are available only for the host, with the exception of +``acc_on_device``, which is available for both the host and the +acceleration device. + +.. toctree:: + :maxdepth: 2 + + openacc-runtime-library-routines/accgetnumdevices + openacc-runtime-library-routines/accsetdevicetype + openacc-runtime-library-routines/accgetdevicetype + openacc-runtime-library-routines/accsetdevicenum + openacc-runtime-library-routines/accgetdevicenum + openacc-runtime-library-routines/accgetproperty + openacc-runtime-library-routines/accasynctest + openacc-runtime-library-routines/accasynctestall + openacc-runtime-library-routines/accwait + openacc-runtime-library-routines/accwaitall + openacc-runtime-library-routines/accwaitallasync + openacc-runtime-library-routines/accwaitasync + openacc-runtime-library-routines/accinit + openacc-runtime-library-routines/accshutdown + openacc-runtime-library-routines/accondevice + openacc-runtime-library-routines/accmalloc + openacc-runtime-library-routines/accfree + openacc-runtime-library-routines/acccopyin + openacc-runtime-library-routines/accpresentorcopyin + openacc-runtime-library-routines/acccreate + openacc-runtime-library-routines/accpresentorcreate + openacc-runtime-library-routines/acccopyout + openacc-runtime-library-routines/accdelete + openacc-runtime-library-routines/accupdatedevice + openacc-runtime-library-routines/accupdateself + openacc-runtime-library-routines/accmapdata + openacc-runtime-library-routines/accunmapdata + openacc-runtime-library-routines/accdeviceptr + openacc-runtime-library-routines/acchostptr + openacc-runtime-library-routines/accispresent + openacc-runtime-library-routines/accmemcpytodevice + openacc-runtime-library-routines/accmemcpyfromdevice + openacc-runtime-library-routines/accattach + openacc-runtime-library-routines/accdetach + +API routines for target platforms. + +.. toctree:: + :maxdepth: 2 + + openacc-runtime-library-routines/accgetcurrentcudadevice + openacc-runtime-library-routines/accgetcurrentcudacontext + openacc-runtime-library-routines/accgetcudastream + openacc-runtime-library-routines/accsetcudastream + +API routines for the OpenACC Profiling Interface. + +.. toctree:: + :maxdepth: 2 + + openacc-runtime-library-routines/accprofregister + openacc-runtime-library-routines/accprofunregister + openacc-runtime-library-routines/accproflookup + openacc-runtime-library-routines/accregisterlibrary
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accasynctest.rst b/libgomp/doc/openacc-runtime-library-routines/accasynctest.rst new file mode 100644 index 0000000..57b1025 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accasynctest.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_async_test: + +acc_async_test -- Test for completion of a specific asynchronous operation. +*************************************************************************** + +Description + This function tests for completion of the asynchronous operation specified + in :samp:`{arg}`. In C/C++, a non-zero value will be returned to indicate + the specified asynchronous operation has completed. While Fortran will return + a ``true``. If the asynchronous operation has not completed, C/C++ returns + a zero and Fortran returns a ``false``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int acc_async_test(int arg);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_async_test(arg)`` + * - + - ``integer(kind=acc_handle_kind) arg`` + * - + - ``logical acc_async_test`` + +Reference: + :openacc:`2.6`, section + 3.2.9.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accasynctestall.rst b/libgomp/doc/openacc-runtime-library-routines/accasynctestall.rst new file mode 100644 index 0000000..2191a26 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accasynctestall.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_async_test_all: + +acc_async_test_all -- Tests for completion of all asynchronous operations. +************************************************************************** + +Description + This function tests for completion of all asynchronous operations. + In C/C++, a non-zero value will be returned to indicate all asynchronous + operations have completed. While Fortran will return a ``true``. If + any asynchronous operation has not completed, C/C++ returns a zero and + Fortran returns a ``false``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int acc_async_test_all(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_async_test()`` + * - + - ``logical acc_get_device_num`` + +Reference: + :openacc:`2.6`, section + 3.2.10.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accattach.rst b/libgomp/doc/openacc-runtime-library-routines/accattach.rst new file mode 100644 index 0000000..ecc9203 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accattach.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_attach: + +acc_attach -- Let device pointer point to device-pointer target. +**************************************************************** + +Description + This function updates a pointer on the device from pointing to a host-pointer + address to pointing to the corresponding device data. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_attach(h_void **ptr);`` + * - *Prototype*: + - ``acc_attach_async(h_void **ptr, int async);`` + +Reference: + :openacc:`2.6`, section + 3.2.34.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/acccopyin.rst b/libgomp/doc/openacc-runtime-library-routines/acccopyin.rst new file mode 100644 index 0000000..02c7aaa --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/acccopyin.rst @@ -0,0 +1,58 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_copyin: + +acc_copyin -- Allocate device memory and copy host memory to it. +**************************************************************** + +Description + In C/C++, this function allocates :samp:`{len}` bytes of device memory + and maps it to the specified host address in :samp:`{a}`. The device + address of the newly allocated device memory is returned. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a + variable or array element and :samp:`{len}` specifies the length in bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_copyin(h_void *a, size_t len);`` + * - *Prototype*: + - ``void *acc_copyin_async(h_void *a, size_t len, int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_copyin(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_copyin(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_copyin_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_copyin_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + +Reference: + :openacc:`2.6`, section + 3.2.20.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/acccopyout.rst b/libgomp/doc/openacc-runtime-library-routines/acccopyout.rst new file mode 100644 index 0000000..aa21945 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/acccopyout.rst @@ -0,0 +1,85 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_copyout: + +acc_copyout -- Copy device memory to host memory. +************************************************* + +Description + This function copies mapped device memory to host memory which is specified + by host address :samp:`{a}` for a length :samp:`{len}` bytes in C/C++. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_copyout(h_void *a, size_t len);`` + * - *Prototype*: + - ``acc_copyout_async(h_void *a, size_t len, int async);`` + * - *Prototype*: + - ``acc_copyout_finalize(h_void *a, size_t len);`` + * - *Prototype*: + - ``acc_copyout_finalize_async(h_void *a, size_t len, int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_copyout(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_copyout(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_copyout_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_copyout_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_copyout_finalize(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_copyout_finalize(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_copyout_finalize_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_copyout_finalize_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + +Reference: + :openacc:`2.6`, section + 3.2.22.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/acccreate.rst b/libgomp/doc/openacc-runtime-library-routines/acccreate.rst new file mode 100644 index 0000000..ab02142 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/acccreate.rst @@ -0,0 +1,58 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_create: + +acc_create -- Allocate device memory and map it to host memory. +*************************************************************** + +Description + This function allocates device memory and maps it to host memory specified + by the host address :samp:`{a}` with a length of :samp:`{len}` bytes. In C/C++, + the function returns the device address of the allocated device memory. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_create(h_void *a, size_t len);`` + * - *Prototype*: + - ``void *acc_create_async(h_void *a, size_t len, int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_create(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_create(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_create_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_create_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + +Reference: + :openacc:`2.6`, section + 3.2.21.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accdelete.rst b/libgomp/doc/openacc-runtime-library-routines/accdelete.rst new file mode 100644 index 0000000..6814e54 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accdelete.rst @@ -0,0 +1,85 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_delete: + +acc_delete -- Free device memory. +********************************* + +Description + This function frees previously allocated device memory specified by + the device address :samp:`{a}` and the length of :samp:`{len}` bytes. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_delete(h_void *a, size_t len);`` + * - *Prototype*: + - ``acc_delete_async(h_void *a, size_t len, int async);`` + * - *Prototype*: + - ``acc_delete_finalize(h_void *a, size_t len);`` + * - *Prototype*: + - ``acc_delete_finalize_async(h_void *a, size_t len, int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_delete(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_delete(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_delete_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_delete_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_delete_finalize(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_delete_finalize(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_delete_async_finalize(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_delete_async_finalize(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + +Reference: + :openacc:`2.6`, section + 3.2.23.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accdetach.rst b/libgomp/doc/openacc-runtime-library-routines/accdetach.rst new file mode 100644 index 0000000..ed3691a --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accdetach.rst @@ -0,0 +1,29 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_detach: + +acc_detach -- Let device pointer point to host-pointer target. +************************************************************** + +Description + This function updates a pointer on the device from pointing to a device-pointer + address to pointing to the corresponding host data. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_detach(h_void **ptr);`` + * - *Prototype*: + - ``acc_detach_async(h_void **ptr, int async);`` + * - *Prototype*: + - ``acc_detach_finalize(h_void **ptr);`` + * - *Prototype*: + - ``acc_detach_finalize_async(h_void **ptr, int async);`` + +Reference: + :openacc:`2.6`, section + 3.2.35.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accdeviceptr.rst b/libgomp/doc/openacc-runtime-library-routines/accdeviceptr.rst new file mode 100644 index 0000000..094cca40 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accdeviceptr.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_deviceptr: + +acc_deviceptr -- Get device pointer associated with specific host address. +************************************************************************** + +Description + This function returns the device address that has been mapped to the + host address specified by :samp:`{h}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_deviceptr(h_void *h);`` + +Reference: + :openacc:`2.6`, section + 3.2.28.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accfree.rst b/libgomp/doc/openacc-runtime-library-routines/accfree.rst new file mode 100644 index 0000000..8f5b4f0 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accfree.rst @@ -0,0 +1,22 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_free: + +acc_free -- Free device memory. +******************************* + +Description + Free previously allocated device memory at the device address ``a``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_free(d_void *a);`` + +Reference: + :openacc:`2.6`, section + 3.2.19.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetcudastream.rst b/libgomp/doc/openacc-runtime-library-routines/accgetcudastream.rst new file mode 100644 index 0000000..d13d913 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetcudastream.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_get_cuda_stream: + +acc_get_cuda_stream -- Get CUDA stream handle. +********************************************** + +Description + This function returns the CUDA stream handle for the queue :samp:`{async}`. + This handle is the same as used by the CUDA Runtime or Driver API's. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_get_cuda_stream(int async);`` + +Reference: + :openacc:`2.6`, section + A.2.1.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetcurrentcudacontext.rst b/libgomp/doc/openacc-runtime-library-routines/accgetcurrentcudacontext.rst new file mode 100644 index 0000000..b39db0e --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetcurrentcudacontext.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_get_current_cuda_context: + +acc_get_current_cuda_context -- Get CUDA context handle. +******************************************************** + +Description + This function returns the CUDA context handle. This handle is the same + as used by the CUDA Runtime or Driver API's. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_get_current_cuda_context(void);`` + +Reference: + :openacc:`2.6`, section + A.2.1.2.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetcurrentcudadevice.rst b/libgomp/doc/openacc-runtime-library-routines/accgetcurrentcudadevice.rst new file mode 100644 index 0000000..17ba575 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetcurrentcudadevice.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_get_current_cuda_device: + +acc_get_current_cuda_device -- Get CUDA device handle. +****************************************************** + +Description + This function returns the CUDA device handle. This handle is the same + as used by the CUDA Runtime or Driver API's. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_get_current_cuda_device(void);`` + +Reference: + :openacc:`2.6`, section + A.2.1.1.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetdevicenum.rst b/libgomp/doc/openacc-runtime-library-routines/accgetdevicenum.rst new file mode 100644 index 0000000..40c97b8 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetdevicenum.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_get_device_num: + +acc_get_device_num -- Get device number to be used. +*************************************************** + +Description + This function returns which device number associated with the specified device + type :samp:`{devicetype}`, will be used when executing a parallel or kernels + region. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int acc_get_device_num(acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_get_device_num(devicetype)`` + * - + - ``integer(kind=acc_device_kind) devicetype`` + * - + - ``integer acc_get_device_num`` + +Reference: + :openacc:`2.6`, section + 3.2.5.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetdevicetype.rst b/libgomp/doc/openacc-runtime-library-routines/accgetdevicetype.rst new file mode 100644 index 0000000..45cc03b --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetdevicetype.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_get_device_type: + +acc_get_device_type -- Get type of device accelerator to be used. +***************************************************************** + +Description + This function returns what device type will be used when executing a + parallel or kernels region. + + This function returns ``acc_device_none`` if + ``acc_get_device_type`` is called from + ``acc_ev_device_init_start``, ``acc_ev_device_init_end`` + callbacks of the OpenACC Profiling Interface (:ref:`openacc-profiling-interface`), that is, if the device is currently being initialized. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_device_t acc_get_device_type(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_get_device_type(void)`` + * - + - ``integer(kind=acc_device_kind) acc_get_device_type`` + +Reference: + :openacc:`2.6`, section + 3.2.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetnumdevices.rst b/libgomp/doc/openacc-runtime-library-routines/accgetnumdevices.rst new file mode 100644 index 0000000..529f129 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetnumdevices.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_get_num_devices: + +acc_get_num_devices -- Get number of devices for given device type +****************************************************************** + +Description + This function returns a value indicating the number of devices available + for the device type specified in :samp:`{devicetype}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int acc_get_num_devices(acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function acc_get_num_devices(devicetype)`` + * - + - ``integer(kind=acc_device_kind) devicetype`` + +Reference: + :openacc:`2.6`, section + 3.2.1.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accgetproperty.rst b/libgomp/doc/openacc-runtime-library-routines/accgetproperty.rst new file mode 100644 index 0000000..e6687e9 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accgetproperty.rst @@ -0,0 +1,60 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: acc_get_property, acc_get_property_string + +.. _acc_get_property: + +acc_get_property -- Get device property. +**************************************** + +Description + These routines return the value of the specified :samp:`{property}` for the + device being queried according to :samp:`{devicenum}` and :samp:`{devicetype}`. + Integer-valued and string-valued properties are returned by + ``acc_get_property`` and ``acc_get_property_string`` respectively. + The Fortran ``acc_get_property_string`` subroutine returns the string + retrieved in its fourth argument while the remaining entry points are + functions, which pass the return value as their result. + + Note for Fortran, only: the OpenACC technical committee corrected and, hence, + modified the interface introduced in OpenACC 2.6. The kind-value parameter + ``acc_device_property`` has been renamed to ``acc_device_property_kind`` + for consistency and the return type of the ``acc_get_property`` function is + now a ``c_size_t`` integer instead of a ``acc_device_property`` integer. + The parameter ``acc_device_property`` will continue to be provided, + but might be removed in a future version of GCC. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``size_t acc_get_property(int devicenum, acc_device_t devicetype, acc_device_property_t property);`` + * - *Prototype*: + - ``const char *acc_get_property_string(int devicenum, acc_device_t devicetype, acc_device_property_t property);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_get_property(devicenum, devicetype, property)`` + * - *Interface*: + - ``subroutine acc_get_property_string(devicenum, devicetype, property, string)`` + * - + - ``use ISO_C_Binding, only: c_size_t`` + * - + - ``integer devicenum`` + * - + - ``integer(kind=acc_device_kind) devicetype`` + * - + - ``integer(kind=acc_device_property_kind) property`` + * - + - ``integer(kind=c_size_t) acc_get_property`` + * - + - ``character(*) string`` + +Reference: + :openacc:`2.6`, section + 3.2.6.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/acchostptr.rst b/libgomp/doc/openacc-runtime-library-routines/acchostptr.rst new file mode 100644 index 0000000..4c63f94 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/acchostptr.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_hostptr: + +acc_hostptr -- Get host pointer associated with specific device address. +************************************************************************ + +Description + This function returns the host address that has been mapped to the + device address specified by :samp:`{d}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_hostptr(d_void *d);`` + +Reference: + :openacc:`2.6`, section + 3.2.29.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accinit.rst b/libgomp/doc/openacc-runtime-library-routines/accinit.rst new file mode 100644 index 0000000..b656c98 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accinit.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_init: + +acc_init -- Initialize runtime for a specific device type. +********************************************************** + +Description + This function initializes the runtime for the device type specified in + :samp:`{devicetype}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_init(acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_init(devicetype)`` + * - + - ``integer(acc_device_kind) devicetype`` + +Reference: + :openacc:`2.6`, section + 3.2.7.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accispresent.rst b/libgomp/doc/openacc-runtime-library-routines/accispresent.rst new file mode 100644 index 0000000..0513f63 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accispresent.rst @@ -0,0 +1,50 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_is_present: + +acc_is_present -- Indicate whether host variable / array is present on device. +****************************************************************************** + +Description + This function indicates whether the specified host address in :samp:`{a}` and a + length of :samp:`{len}` bytes is present on the device. In C/C++, a non-zero + value is returned to indicate the presence of the mapped memory on the + device. A zero is returned to indicate the memory is not mapped on the + device. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. If the host + memory is mapped to device memory, then a ``true`` is returned. Otherwise, + a ``false`` is return to indicate the mapped memory is not present. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int acc_is_present(h_void *a, size_t len);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_is_present(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``logical acc_is_present`` + * - *Interface*: + - ``function acc_is_present(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``logical acc_is_present`` + +Reference: + :openacc:`2.6`, section + 3.2.30.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accmalloc.rst b/libgomp/doc/openacc-runtime-library-routines/accmalloc.rst new file mode 100644 index 0000000..2602b9e --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accmalloc.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_malloc: + +acc_malloc -- Allocate device memory. +************************************* + +Description + This function allocates :samp:`{len}` bytes of device memory. It returns + the device address of the allocated memory. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``d_void* acc_malloc(size_t len);`` + +Reference: + :openacc:`2.6`, section + 3.2.18.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accmapdata.rst b/libgomp/doc/openacc-runtime-library-routines/accmapdata.rst new file mode 100644 index 0000000..0a58680 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accmapdata.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_map_data: + +acc_map_data -- Map previously allocated device memory to host memory. +********************************************************************** + +Description + This function maps previously allocated device and host memory. The device + memory is specified with the device address :samp:`{d}`. The host memory is + specified with the host address :samp:`{h}` and a length of :samp:`{len}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_map_data(h_void *h, d_void *d, size_t len);`` + +Reference: + :openacc:`2.6`, section + 3.2.26.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accmemcpyfromdevice.rst b/libgomp/doc/openacc-runtime-library-routines/accmemcpyfromdevice.rst new file mode 100644 index 0000000..3e23b5b --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accmemcpyfromdevice.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_memcpy_from_device: + +acc_memcpy_from_device -- Copy device memory to host memory. +************************************************************ + +Description + This function copies host memory specified by host address of :samp:`{src}` from + device memory specified by the device address :samp:`{dest}` for a length of + :samp:`{bytes}` bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_memcpy_from_device(d_void *dest, h_void *src, size_t bytes);`` + +Reference: + :openacc:`2.6`, section + 3.2.32.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accmemcpytodevice.rst b/libgomp/doc/openacc-runtime-library-routines/accmemcpytodevice.rst new file mode 100644 index 0000000..e57c06e --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accmemcpytodevice.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_memcpy_to_device: + +acc_memcpy_to_device -- Copy host memory to device memory. +********************************************************** + +Description + This function copies host memory specified by host address of :samp:`{src}` to + device memory specified by the device address :samp:`{dest}` for a length of + :samp:`{bytes}` bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_memcpy_to_device(d_void *dest, h_void *src, size_t bytes);`` + +Reference: + :openacc:`2.6`, section + 3.2.31.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accondevice.rst b/libgomp/doc/openacc-runtime-library-routines/accondevice.rst new file mode 100644 index 0000000..f5c8976 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accondevice.rst @@ -0,0 +1,37 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_on_device: + +acc_on_device -- Whether executing on a particular device +********************************************************* + +Description: + This function returns whether the program is executing on a particular + device specified in :samp:`{devicetype}`. In C/C++ a non-zero value is + returned to indicate the device is executing on the specified device type. + In Fortran, ``true`` will be returned. If the program is not executing + on the specified device type C/C++ will return a zero, while Fortran will + return ``false``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_on_device(acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``function acc_on_device(devicetype)`` + * - + - ``integer(acc_device_kind) devicetype`` + * - + - ``logical acc_on_device`` + +Reference: + :openacc:`2.6`, section + 3.2.17.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accpresentorcopyin.rst b/libgomp/doc/openacc-runtime-library-routines/accpresentorcopyin.rst new file mode 100644 index 0000000..5f17155 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accpresentorcopyin.rst @@ -0,0 +1,58 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_present_or_copyin: + +acc_present_or_copyin -- If the data is not present on the device, allocate device memory and copy from host memory. +******************************************************************************************************************** + +Description + This function tests if the host data specified by :samp:`{a}` and of length + :samp:`{len}` is present or not. If it is not present, then device memory + will be allocated and the host memory copied. The device address of + the newly allocated device memory is returned. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + + Note that ``acc_present_or_copyin`` and ``acc_pcopyin`` exist for + backward compatibility with OpenACC 2.0; use :ref:`acc_copyin` instead. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_present_or_copyin(h_void *a, size_t len);`` + * - *Prototype*: + - ``void *acc_pcopyin(h_void *a, size_t len);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_present_or_copyin(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_present_or_copyin(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_pcopyin(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_pcopyin(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + +Reference: + :openacc:`2.6`, section + 3.2.20.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accpresentorcreate.rst b/libgomp/doc/openacc-runtime-library-routines/accpresentorcreate.rst new file mode 100644 index 0000000..b1bff29 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accpresentorcreate.rst @@ -0,0 +1,58 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_present_or_create: + +acc_present_or_create -- If the data is not present on the device, allocate device memory and map it to host memory. +******************************************************************************************************************** + +Description + This function tests if the host data specified by :samp:`{a}` and of length + :samp:`{len}` is present or not. If it is not present, then device memory + will be allocated and mapped to host memory. In C/C++, the device address + of the newly allocated device memory is returned. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + + Note that ``acc_present_or_create`` and ``acc_pcreate`` exist for + backward compatibility with OpenACC 2.0; use :ref:`acc_create` instead. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void *acc_present_or_create(h_void *a, size_t len)`` + * - *Prototype*: + - ``void *acc_pcreate(h_void *a, size_t len)`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_present_or_create(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_present_or_create(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_pcreate(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_pcreate(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + +Reference: + :openacc:`2.6`, section + 3.2.21.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accproflookup.rst b/libgomp/doc/openacc-runtime-library-routines/accproflookup.rst new file mode 100644 index 0000000..91f3765 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accproflookup.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_prof_lookup: + +acc_prof_lookup -- Obtain inquiry functions. +******************************************** + +Description: + Function to obtain inquiry functions. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_query_fn acc_prof_lookup (const char *);`` + +See also: + :ref:`openacc-profiling-interface` + +Reference: + :openacc:`2.6`, section + 5.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accprofregister.rst b/libgomp/doc/openacc-runtime-library-routines/accprofregister.rst new file mode 100644 index 0000000..20dbe69 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accprofregister.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_prof_register: + +acc_prof_register -- Register callbacks. +**************************************** + +Description: + This function registers callbacks. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void acc_prof_register (acc_event_t, acc_prof_callback, acc_register_t);`` + +See also: + :ref:`openacc-profiling-interface` + +Reference: + :openacc:`2.6`, section + 5.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accprofunregister.rst b/libgomp/doc/openacc-runtime-library-routines/accprofunregister.rst new file mode 100644 index 0000000..bc648d2 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accprofunregister.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_prof_unregister: + +acc_prof_unregister -- Unregister callbacks. +******************************************** + +Description: + This function unregisters callbacks. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void acc_prof_unregister (acc_event_t, acc_prof_callback, acc_register_t);`` + +See also: + :ref:`openacc-profiling-interface` + +Reference: + :openacc:`2.6`, section + 5.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accregisterlibrary.rst b/libgomp/doc/openacc-runtime-library-routines/accregisterlibrary.rst new file mode 100644 index 0000000..befa7d3 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accregisterlibrary.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_register_library: + +acc_register_library -- Library registration. +********************************************* + +Description: + Function for library registration. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void acc_register_library (acc_prof_reg, acc_prof_reg, acc_prof_lookup_func);`` + +See also: + :ref:`openacc-profiling-interface`, :ref:`ACC_PROFLIB` + +Reference: + :openacc:`2.6`, section + 5.3.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accsetcudastream.rst b/libgomp/doc/openacc-runtime-library-routines/accsetcudastream.rst new file mode 100644 index 0000000..d400baa --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accsetcudastream.rst @@ -0,0 +1,28 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_set_cuda_stream: + +acc_set_cuda_stream -- Set CUDA stream handle. +********************************************** + +Description + This function associates the stream handle specified by :samp:`{stream}` with + the queue :samp:`{async}`. + + This cannot be used to change the stream handle associated with + ``acc_async_sync``. + + The return value is not specified. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int acc_set_cuda_stream(int async, void *stream);`` + +Reference: + :openacc:`2.6`, section + A.2.1.4.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accsetdevicenum.rst b/libgomp/doc/openacc-runtime-library-routines/accsetdevicenum.rst new file mode 100644 index 0000000..a87e385 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accsetdevicenum.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_set_device_num: + +acc_set_device_num -- Set device number to use. +*********************************************** + +Description + This function will indicate to the runtime which device number, + specified by :samp:`{devicenum}`, associated with the specified device + type :samp:`{devicetype}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_set_device_num(int devicenum, acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_set_device_num(devicenum, devicetype)`` + * - + - ``integer devicenum`` + * - + - ``integer(kind=acc_device_kind) devicetype`` + +Reference: + :openacc:`2.6`, section + 3.2.4.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accsetdevicetype.rst b/libgomp/doc/openacc-runtime-library-routines/accsetdevicetype.rst new file mode 100644 index 0000000..fa8ca76 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accsetdevicetype.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_set_device_type: + +acc_set_device_type -- Set type of device accelerator to use. +************************************************************* + +Description + This function indicates to the runtime library which device type, specified + in :samp:`{devicetype}`, to use when executing a parallel or kernels region. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_set_device_type(acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_set_device_type(devicetype)`` + * - + - ``integer(kind=acc_device_kind) devicetype`` + +Reference: + :openacc:`2.6`, section + 3.2.2.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accshutdown.rst b/libgomp/doc/openacc-runtime-library-routines/accshutdown.rst new file mode 100644 index 0000000..f214d4d --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accshutdown.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_shutdown: + +acc_shutdown -- Shuts down the runtime for a specific device type. +****************************************************************** + +Description + This function shuts down the runtime for the device type specified in + :samp:`{devicetype}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_shutdown(acc_device_t devicetype);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_shutdown(devicetype)`` + * - + - ``integer(acc_device_kind) devicetype`` + +Reference: + :openacc:`2.6`, section + 3.2.8.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accunmapdata.rst b/libgomp/doc/openacc-runtime-library-routines/accunmapdata.rst new file mode 100644 index 0000000..bea0388 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accunmapdata.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_unmap_data: + +acc_unmap_data -- Unmap device memory from host memory. +******************************************************* + +Description + This function unmaps previously mapped device and host memory. The latter + specified by :samp:`{h}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_unmap_data(h_void *h);`` + +Reference: + :openacc:`2.6`, section + 3.2.27.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accupdatedevice.rst b/libgomp/doc/openacc-runtime-library-routines/accupdatedevice.rst new file mode 100644 index 0000000..6fbc269e --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accupdatedevice.rst @@ -0,0 +1,58 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_update_device: + +acc_update_device -- Update device memory from mapped host memory. +****************************************************************** + +Description + This function updates the device copy from the previously mapped host memory. + The host memory is specified with the host address :samp:`{a}` and a length of + :samp:`{len}` bytes. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_update_device(h_void *a, size_t len);`` + * - *Prototype*: + - ``acc_update_device(h_void *a, size_t len, async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_update_device(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_update_device(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_update_device_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_update_device_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + +Reference: + :openacc:`2.6`, section + 3.2.24.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accupdateself.rst b/libgomp/doc/openacc-runtime-library-routines/accupdateself.rst new file mode 100644 index 0000000..b1eabb9 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accupdateself.rst @@ -0,0 +1,58 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_update_self: + +acc_update_self -- Update host memory from mapped device memory. +**************************************************************** + +Description + This function updates the host copy from the previously mapped device memory. + The host memory is specified with the host address :samp:`{a}` and a length of + :samp:`{len}` bytes. + + In Fortran, two (2) forms are supported. In the first form, :samp:`{a}` specifies + a contiguous array section. The second form :samp:`{a}` specifies a variable or + array element and :samp:`{len}` specifies the length in bytes. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_update_self(h_void *a, size_t len);`` + * - *Prototype*: + - ``acc_update_self_async(h_void *a, size_t len, int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_update_self(a)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - *Interface*: + - ``subroutine acc_update_self(a, len)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - *Interface*: + - ``subroutine acc_update_self_async(a, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer(acc_handle_kind) :: async`` + * - *Interface*: + - ``subroutine acc_update_self_async(a, len, async)`` + * - + - ``type, dimension(:[,:]...) :: a`` + * - + - ``integer len`` + * - + - ``integer(acc_handle_kind) :: async`` + +Reference: + :openacc:`2.6`, section + 3.2.25.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accwait.rst b/libgomp/doc/openacc-runtime-library-routines/accwait.rst new file mode 100644 index 0000000..27dc78d --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accwait.rst @@ -0,0 +1,37 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_wait: + +acc_wait -- Wait for completion of a specific asynchronous operation. +********************************************************************* + +Description + This function waits for completion of the asynchronous operation + specified in :samp:`{arg}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_wait(arg);`` + * - *Prototype (OpenACC 1.0 compatibility)*: + - ``acc_async_wait(arg);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_wait(arg)`` + * - + - ``integer(acc_handle_kind) arg`` + * - *Interface (OpenACC 1.0 compatibility)*: + - ``subroutine acc_async_wait(arg)`` + * - + - ``integer(acc_handle_kind) arg`` + +Reference: + :openacc:`2.6`, section + 3.2.11.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accwaitall.rst b/libgomp/doc/openacc-runtime-library-routines/accwaitall.rst new file mode 100644 index 0000000..398c248 --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accwaitall.rst @@ -0,0 +1,32 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_wait_all: + +acc_wait_all -- Waits for completion of all asynchronous operations. +******************************************************************** + +Description + This function waits for the completion of all asynchronous operations. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_wait_all(void);`` + * - *Prototype (OpenACC 1.0 compatibility)*: + - ``acc_async_wait_all(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_wait_all()`` + * - *Interface (OpenACC 1.0 compatibility)*: + - ``subroutine acc_async_wait_all()`` + +Reference: + :openacc:`2.6`, section + 3.2.13.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accwaitallasync.rst b/libgomp/doc/openacc-runtime-library-routines/accwaitallasync.rst new file mode 100644 index 0000000..6589f2a --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accwaitallasync.rst @@ -0,0 +1,32 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_wait_all_async: + +acc_wait_all_async -- Wait for completion of all asynchronous operations. +************************************************************************* + +Description + This function enqueues a wait operation on the queue :samp:`{async}` for any + and all asynchronous operations that have been previously enqueued on + any queue. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_wait_all_async(int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_wait_all_async(async)`` + * - + - ``integer(acc_handle_kind) async`` + +Reference: + :openacc:`2.6`, section + 3.2.14.
\ No newline at end of file diff --git a/libgomp/doc/openacc-runtime-library-routines/accwaitasync.rst b/libgomp/doc/openacc-runtime-library-routines/accwaitasync.rst new file mode 100644 index 0000000..1fbb54b --- /dev/null +++ b/libgomp/doc/openacc-runtime-library-routines/accwaitasync.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _acc_wait_async: + +acc_wait_async -- Wait for completion of asynchronous operations. +***************************************************************** + +Description + This function enqueues a wait operation on queue :samp:`{async}` for any and all + asynchronous operations enqueued on queue :samp:`{arg}`. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``acc_wait_async(int arg, int async);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine acc_wait_async(arg, async)`` + * - + - ``integer(acc_handle_kind) arg, async`` + +Reference: + :openacc:`2.6`, section + 3.2.12.
\ No newline at end of file diff --git a/libgomp/doc/openmp-context-selectors.rst b/libgomp/doc/openmp-context-selectors.rst new file mode 100644 index 0000000..8a32cf1 --- /dev/null +++ b/libgomp/doc/openmp-context-selectors.rst @@ -0,0 +1,28 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-context-selectors: + +OpenMP Context Selectors +************************ + +``vendor`` is always ``gnu``. References are to the GCC manual. + +.. list-table:: + :header-rows: 1 + + * - ``arch`` + - ``kind`` + - ``isa`` + + * - ``x86``, ``x86_64``, ``i386``, ``i486``, ``i586``, ``i686``, ``ia32`` + - ``host`` + - See ``-m...`` flags in :ref:`gcc:x86-options` (without ``-m``) + * - ``amdgcn``, ``gcn`` + - ``gpu`` + - See ``-march=`` in :ref:`gcc:amd-gcn-options` + * - ``nvptx`` + - ``gpu`` + - See ``-march=`` in :ref:`gcc:nvidia-ptx-options`
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables.rst b/libgomp/doc/openmp-environment-variables.rst new file mode 100644 index 0000000..0893e8d --- /dev/null +++ b/libgomp/doc/openmp-environment-variables.rst @@ -0,0 +1,39 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _environment-variables: + +OpenMP Environment Variables +---------------------------- + +The environment variables which beginning with :envvar:`OMP_` are defined by +section 4 of the OpenMP specification in version 4.5, while those +beginning with :envvar:`GOMP_` are GNU extensions. + +.. toctree:: + :maxdepth: 2 + + openmp-environment-variables/ompcancellation + openmp-environment-variables/ompdisplayenv + openmp-environment-variables/ompdefaultdevice + openmp-environment-variables/ompdynamic + openmp-environment-variables/ompmaxactivelevels + openmp-environment-variables/ompmaxtaskpriority + openmp-environment-variables/ompnested + openmp-environment-variables/ompnumteams + openmp-environment-variables/ompnumthreads + openmp-environment-variables/ompprocbind + openmp-environment-variables/ompplaces + openmp-environment-variables/ompstacksize + openmp-environment-variables/ompschedule + openmp-environment-variables/omptargetoffload + openmp-environment-variables/ompteamsthreadlimit + openmp-environment-variables/ompthreadlimit + openmp-environment-variables/ompwaitpolicy + openmp-environment-variables/gompcpuaffinity + openmp-environment-variables/gompdebug + openmp-environment-variables/gompstacksize + openmp-environment-variables/gompspincount + openmp-environment-variables/gomprtemsthreadpools
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/gompcpuaffinity.rst b/libgomp/doc/openmp-environment-variables/gompcpuaffinity.rst new file mode 100644 index 0000000..9b15d11 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/gompcpuaffinity.rst @@ -0,0 +1,37 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _gomp_cpu_affinity: + +GOMP_CPU_AFFINITY -- Bind threads to specific CPUs +************************************************** + +Description: + Binds threads to specific CPUs. The variable should contain a space-separated + or comma-separated list of CPUs. This list may contain different kinds of + entries: either single CPU numbers in any order, a range of CPUs (M-N) + or a range with some stride (M-N:S). CPU numbers are zero based. For example, + ``GOMP_CPU_AFFINITY="0 3 1-2 4-15:2"`` will bind the initial thread + to CPU 0, the second to CPU 3, the third to CPU 1, the fourth to + CPU 2, the fifth to CPU 4, the sixth through tenth to CPUs 6, 8, 10, 12, + and 14 respectively and then start assigning back from the beginning of + the list. ``GOMP_CPU_AFFINITY=0`` binds all threads to CPU 0. + + There is no libgomp library routine to determine whether a CPU affinity + specification is in effect. As a workaround, language-specific library + functions, e.g., ``getenv`` in C or ``GET_ENVIRONMENT_VARIABLE`` in + Fortran, may be used to query the setting of the ``GOMP_CPU_AFFINITY`` + environment variable. A defined CPU affinity on startup cannot be changed + or disabled during the runtime of the application. + + If both :envvar:`GOMP_CPU_AFFINITY` and :envvar:`OMP_PROC_BIND` are set, + :envvar:`OMP_PROC_BIND` has a higher precedence. If neither has been set and + :envvar:`OMP_PROC_BIND` is unset, or when :envvar:`OMP_PROC_BIND` is set to + ``FALSE``, the host system will handle the assignment of threads to CPUs. + +See also: + :ref:`OMP_PLACES`, :ref:`OMP_PROC_BIND`
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/gompdebug.rst b/libgomp/doc/openmp-environment-variables/gompdebug.rst new file mode 100644 index 0000000..3961953 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/gompdebug.rst @@ -0,0 +1,18 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _gomp_debug: + +GOMP_DEBUG -- Enable debugging output +************************************* + +Description: + Enable debugging output. The variable should be set to ``0`` + (disabled, also the default if not set), or ``1`` (enabled). + + If enabled, some debugging output will be printed during execution. + This is currently not specified in more detail, and subject to change.
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/gomprtemsthreadpools.rst b/libgomp/doc/openmp-environment-variables/gomprtemsthreadpools.rst new file mode 100644 index 0000000..cb92175 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/gomprtemsthreadpools.rst @@ -0,0 +1,46 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _gomp_rtems_thread_pools: + +GOMP_RTEMS_THREAD_POOLS -- Set the RTEMS specific thread pools +************************************************************** + +Description: + This environment variable is only used on the RTEMS real-time operating system. + It determines the scheduler instance specific thread pools. The format for + :envvar:`GOMP_RTEMS_THREAD_POOLS` is a list of optional + ``<thread-pool-count>[$<priority>]@<scheduler-name>`` configurations + separated by ``:`` where: + + * ``<thread-pool-count>`` is the thread pool count for this scheduler + instance. + + * ``$<priority>`` is an optional priority for the worker threads of a + thread pool according to ``pthread_setschedparam``. In case a priority + value is omitted, then a worker thread will inherit the priority of the OpenMP + primary thread that created it. The priority of the worker thread is not + changed after creation, even if a new OpenMP primary thread using the worker has + a different priority. + + * ``@<scheduler-name>`` is the scheduler instance name according to the + RTEMS application configuration. + + In case no thread pool configuration is specified for a scheduler instance, + then each OpenMP primary thread of this scheduler instance will use its own + dynamically allocated thread pool. To limit the worker thread count of the + thread pools, each OpenMP primary thread must call ``omp_set_num_threads``. + +Example: + Lets suppose we have three scheduler instances ``IO``, ``WRK0``, and + ``WRK1`` with :envvar:`GOMP_RTEMS_THREAD_POOLS` set to + ``"1@WRK0:3$4@WRK1"``. Then there are no thread pool restrictions for + scheduler instance ``IO``. In the scheduler instance ``WRK0`` there is + one thread pool available. Since no priority is specified for this scheduler + instance, the worker thread inherits the priority of the OpenMP primary thread + that created it. In the scheduler instance ``WRK1`` there are three thread + pools available and their worker threads run at priority four.
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/gompspincount.rst b/libgomp/doc/openmp-environment-variables/gompspincount.rst new file mode 100644 index 0000000..7bd819b --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/gompspincount.rst @@ -0,0 +1,30 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _gomp_spincount: + +GOMP_SPINCOUNT -- Set the busy-wait spin count +********************************************** + +Description: + Determines how long a threads waits actively with consuming CPU power + before waiting passively without consuming CPU power. The value may be + either ``INFINITE``, ``INFINITY`` to always wait actively or an + integer which gives the number of spins of the busy-wait loop. The + integer may optionally be followed by the following suffixes acting + as multiplication factors: ``k`` (kilo, thousand), ``M`` (mega, + million), ``G`` (giga, billion), or ``T`` (tera, trillion). + If undefined, 0 is used when :envvar:`OMP_WAIT_POLICY` is ``PASSIVE``, + 300,000 is used when :envvar:`OMP_WAIT_POLICY` is undefined and + 30 billion is used when :envvar:`OMP_WAIT_POLICY` is ``ACTIVE``. + If there are more OpenMP threads than available CPUs, 1000 and 100 + spins are used for :envvar:`OMP_WAIT_POLICY` being ``ACTIVE`` or + undefined, respectively; unless the :envvar:`GOMP_SPINCOUNT` is lower + or :envvar:`OMP_WAIT_POLICY` is ``PASSIVE``. + +See also: + :ref:`OMP_WAIT_POLICY`
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/gompstacksize.rst b/libgomp/doc/openmp-environment-variables/gompstacksize.rst new file mode 100644 index 0000000..c07a391 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/gompstacksize.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _gomp_stacksize: + +GOMP_STACKSIZE -- Set default thread stack size +*********************************************** + +Description: + Set the default thread stack size in kilobytes. This is different from + ``pthread_attr_setstacksize`` which gets the number of bytes as an + argument. If the stack size cannot be set due to system constraints, an + error is reported and the initial stack size is left unchanged. If undefined, + the stack size is system dependent. + +See also: + :ref:`OMP_STACKSIZE` + +Reference: + `GCC Patches Mailinglist <https://gcc.gnu.org/ml/gcc-patches/2006-06/msg00493.html>`_, + `GCC Patches Mailinglist (2) <https://gcc.gnu.org/ml/gcc-patches/2006-06/msg00496.html>`_
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompcancellation.rst b/libgomp/doc/openmp-environment-variables/ompcancellation.rst new file mode 100644 index 0000000..b17cf4c --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompcancellation.rst @@ -0,0 +1,21 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_cancellation: + +OMP_CANCELLATION -- Set whether cancellation is activated +********************************************************* + +Description: + If set to ``TRUE``, the cancellation is activated. If set to ``FALSE`` or + if unset, cancellation is disabled and the ``cancel`` construct is ignored. + +See also: + :ref:`omp_get_cancellation` + +Reference: + :openmp:`4.5`, Section 4.11
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompdefaultdevice.rst b/libgomp/doc/openmp-environment-variables/ompdefaultdevice.rst new file mode 100644 index 0000000..8138903 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompdefaultdevice.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_default_device: + +OMP_DEFAULT_DEVICE -- Set the device used in target regions +*********************************************************** + +Description: + Set to choose the device which is used in a ``target`` region, unless the + value is overridden by ``omp_set_default_device`` or by a ``device`` + clause. The value shall be the nonnegative device number. If no device with + the given device number exists, the code is executed on the host. If unset, + device number 0 will be used. + +See also: + :ref:`omp_get_default_device`, :ref:`omp_set_default_device`, + +Reference: + :openmp:`4.5`, Section 4.13
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompdisplayenv.rst b/libgomp/doc/openmp-environment-variables/ompdisplayenv.rst new file mode 100644 index 0000000..684d3f2 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompdisplayenv.rst @@ -0,0 +1,21 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_display_env: + +OMP_DISPLAY_ENV -- Show OpenMP version and environment variables +**************************************************************** + +Description: + If set to ``TRUE``, the OpenMP version number and the values + associated with the OpenMP environment variables are printed to ``stderr``. + If set to ``VERBOSE``, it additionally shows the value of the environment + variables which are GNU extensions. If undefined or set to ``FALSE``, + this information will not be shown. + +Reference: + :openmp:`4.5`, Section 4.12
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompdynamic.rst b/libgomp/doc/openmp-environment-variables/ompdynamic.rst new file mode 100644 index 0000000..ab66f41 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompdynamic.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_dynamic: + +OMP_DYNAMIC -- Dynamic adjustment of threads +******************************************** + +Description: + Enable or disable the dynamic adjustment of the number of threads + within a team. The value of this environment variable shall be + ``TRUE`` or ``FALSE``. If undefined, dynamic adjustment is + disabled by default. + +See also: + :ref:`omp_set_dynamic` + +Reference: + :openmp:`4.5`, Section 4.3
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompmaxactivelevels.rst b/libgomp/doc/openmp-environment-variables/ompmaxactivelevels.rst new file mode 100644 index 0000000..505055f --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompmaxactivelevels.rst @@ -0,0 +1,26 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_max_active_levels: + +OMP_MAX_ACTIVE_LEVELS -- Set the maximum number of nested parallel regions +************************************************************************** + +Description: + Specifies the initial value for the maximum number of nested parallel + regions. The value of this variable shall be a positive integer. + If undefined, then if :envvar:`OMP_NESTED` is defined and set to true, or + if :envvar:`OMP_NUM_THREADS` or :envvar:`OMP_PROC_BIND` are defined and set to + a list with more than one item, the maximum number of nested parallel + regions will be initialized to the largest number supported, otherwise + it will be set to one. + +See also: + :ref:`omp_set_max_active_levels`, :ref:`OMP_NESTED` + +Reference: + :openmp:`4.5`, Section 4.9
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompmaxtaskpriority.rst b/libgomp/doc/openmp-environment-variables/ompmaxtaskpriority.rst new file mode 100644 index 0000000..56f79e9 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompmaxtaskpriority.rst @@ -0,0 +1,25 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_max_task_priority: + +OMP_MAX_TASK_PRIORITY -- Set the maximum priority +************************************************* + +number that can be set for a task. + +.. index:: Environment Variable + +Description: + Specifies the initial value for the maximum priority value that can be + set for a task. The value of this variable shall be a non-negative + integer, and zero is allowed. If undefined, the default priority is + 0. + +See also: + :ref:`omp_get_max_task_priority` + +Reference: + :openmp:`4.5`, Section 4.14
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompnested.rst b/libgomp/doc/openmp-environment-variables/ompnested.rst new file mode 100644 index 0000000..683b044 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompnested.rst @@ -0,0 +1,28 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _omp_nested: + +OMP_NESTED -- Nested parallel regions +************************************* + +Description: + Enable or disable nested parallel regions, i.e., whether team members + are allowed to create new teams. The value of this environment variable + shall be ``TRUE`` or ``FALSE``. If set to ``TRUE``, the number + of maximum active nested regions supported will by default be set to the + maximum supported, otherwise it will be set to one. If + :envvar:`OMP_MAX_ACTIVE_LEVELS` is defined, its setting will override this + setting. If both are undefined, nested parallel regions are enabled if + :envvar:`OMP_NUM_THREADS` or :envvar:`OMP_PROC_BINDS` are defined to a list with + more than one item, otherwise they are disabled by default. + +See also: + :ref:`omp_set_max_active_levels`, :ref:`omp_set_nested` + +Reference: + :openmp:`4.5`, Section 4.6
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompnumteams.rst b/libgomp/doc/openmp-environment-variables/ompnumteams.rst new file mode 100644 index 0000000..4a1ed15 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompnumteams.rst @@ -0,0 +1,23 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_num_teams: + +OMP_NUM_TEAMS -- Specifies the number of teams to use by teams region +********************************************************************* + +Description: + Specifies the upper bound for number of teams to use in teams regions + without explicit ``num_teams`` clause. The value of this variable shall + be a positive integer. If undefined it defaults to 0 which means + implementation defined upper bound. + +See also: + :ref:`omp_set_num_teams` + +Reference: + :openmp:`5.1`, Section 6.23
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompnumthreads.rst b/libgomp/doc/openmp-environment-variables/ompnumthreads.rst new file mode 100644 index 0000000..224a7d0 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompnumthreads.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _omp_num_threads: + +OMP_NUM_THREADS -- Specifies the number of threads to use +********************************************************* + +Description: + Specifies the default number of threads to use in parallel regions. The + value of this variable shall be a comma-separated list of positive integers; + the value specifies the number of threads to use for the corresponding nested + level. Specifying more than one item in the list will automatically enable + nesting by default. If undefined one thread per CPU is used. + +See also: + :ref:`omp_set_num_threads`, :ref:`OMP_NESTED` + +Reference: + :openmp:`4.5`, Section 4.2
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompplaces.rst b/libgomp/doc/openmp-environment-variables/ompplaces.rst new file mode 100644 index 0000000..e78bd0a --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompplaces.rst @@ -0,0 +1,54 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_places: + +OMP_PLACES -- Specifies on which CPUs the theads should be placed +***************************************************************** + +Description: + The thread placement can be either specified using an abstract name or by an + explicit list of the places. The abstract names ``threads``, ``cores``, + ``sockets``, ``ll_caches`` and ``numa_domains`` can be optionally + followed by a positive number in parentheses, which denotes the how many places + shall be created. With ``threads`` each place corresponds to a single + hardware thread; ``cores`` to a single core with the corresponding number of + hardware threads; with ``sockets`` the place corresponds to a single + socket; with ``ll_caches`` to a set of cores that shares the last level + cache on the device; and ``numa_domains`` to a set of cores for which their + closest memory on the device is the same memory and at a similar distance from + the cores. The resulting placement can be shown by setting the + :envvar:`OMP_DISPLAY_ENV` environment variable. + + Alternatively, the placement can be specified explicitly as comma-separated + list of places. A place is specified by set of nonnegative numbers in curly + braces, denoting the hardware threads. The curly braces can be omitted + when only a single number has been specified. The hardware threads + belonging to a place can either be specified as comma-separated list of + nonnegative thread numbers or using an interval. Multiple places can also be + either specified by a comma-separated list of places or by an interval. To + specify an interval, a colon followed by the count is placed after + the hardware thread number or the place. Optionally, the length can be + followed by a colon and the stride number -- otherwise a unit stride is + assumed. Placing an exclamation mark (``!``) directly before a curly + brace or numbers inside the curly braces (excluding intervals) will + exclude those hardware threads. + + For instance, the following specifies the same places list: + ``"{0,1,2}, {3,4,6}, {7,8,9}, {10,11,12}"`` ; + ``"{0:3}, {3:3}, {7:3}, {10:3}"`` ; and ``"{0:2}:4:3"``. + + If :envvar:`OMP_PLACES` and :envvar:`GOMP_CPU_AFFINITY` are unset and + :envvar:`OMP_PROC_BIND` is either unset or ``false``, threads may be moved + between CPUs following no placement policy. + +See also: + :ref:`OMP_PROC_BIND`, :ref:`GOMP_CPU_AFFINITY`, :ref:`omp_get_proc_bind`, + :ref:`OMP_DISPLAY_ENV` + +Reference: + :openmp:`4.5`, Section 4.5
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompprocbind.rst b/libgomp/doc/openmp-environment-variables/ompprocbind.rst new file mode 100644 index 0000000..22a9473 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompprocbind.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_proc_bind: + +OMP_PROC_BIND -- Whether theads may be moved between CPUs +********************************************************* + +Description: + Specifies whether threads may be moved between processors. If set to + ``TRUE``, OpenMP theads should not be moved; if set to ``FALSE`` + they may be moved. Alternatively, a comma separated list with the + values ``PRIMARY``, ``MASTER``, ``CLOSE`` and ``SPREAD`` can + be used to specify the thread affinity policy for the corresponding nesting + level. With ``PRIMARY`` and ``MASTER`` the worker threads are in the + same place partition as the primary thread. With ``CLOSE`` those are + kept close to the primary thread in contiguous place partitions. And + with ``SPREAD`` a sparse distribution + across the place partitions is used. Specifying more than one item in the + list will automatically enable nesting by default. + + When undefined, :envvar:`OMP_PROC_BIND` defaults to ``TRUE`` when + :envvar:`OMP_PLACES` or :envvar:`GOMP_CPU_AFFINITY` is set and ``FALSE`` otherwise. + +See also: + :ref:`omp_get_proc_bind`, :ref:`GOMP_CPU_AFFINITY`, + :ref:`OMP_NESTED`, :ref:`OMP_PLACES` + +Reference: + :openmp:`4.5`, Section 4.4
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompschedule.rst b/libgomp/doc/openmp-environment-variables/ompschedule.rst new file mode 100644 index 0000000..b8b6c41 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompschedule.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _omp_schedule: + +OMP_SCHEDULE -- How threads are scheduled +***************************************** + +Description: + Allows to specify ``schedule type`` and ``chunk size``. + The value of the variable shall have the form: ``type[,chunk]`` where + ``type`` is one of ``static``, ``dynamic``, ``guided`` or ``auto`` + The optional ``chunk`` size shall be a positive integer. If undefined, + dynamic scheduling and a chunk size of 1 is used. + +See also: + :ref:`omp_set_schedule` + +Reference: + :openmp:`4.5`, Sections 2.7.1.1 and 4.1
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompstacksize.rst b/libgomp/doc/openmp-environment-variables/ompstacksize.rst new file mode 100644 index 0000000..1523552 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompstacksize.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_stacksize: + +OMP_STACKSIZE -- Set default thread stack size +********************************************** + +Description: + Set the default thread stack size in kilobytes, unless the number + is suffixed by ``B``, ``K``, ``M`` or ``G``, in which + case the size is, respectively, in bytes, kilobytes, megabytes + or gigabytes. This is different from ``pthread_attr_setstacksize`` + which gets the number of bytes as an argument. If the stack size cannot + be set due to system constraints, an error is reported and the initial + stack size is left unchanged. If undefined, the stack size is system + dependent. + +Reference: + :openmp:`4.5`, Section 4.7
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/omptargetoffload.rst b/libgomp/doc/openmp-environment-variables/omptargetoffload.rst new file mode 100644 index 0000000..4aaba8e --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/omptargetoffload.rst @@ -0,0 +1,27 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable, Implementation specific setting + +.. _omp_target_offload: + +OMP_TARGET_OFFLOAD -- Controls offloading behaviour +*************************************************** + +Description: + Specifies the behaviour with regard to offloading code to a device. This + variable can be set to one of three values - ``MANDATORY``, ``DISABLED`` + or ``DEFAULT``. + + If set to ``MANDATORY``, the program will terminate with an error if + the offload device is not present or is not supported. If set to + ``DISABLED``, then offloading is disabled and all code will run on the + host. If set to ``DEFAULT``, the program will try offloading to the + device first, then fall back to running code on the host if it cannot. + + If undefined, then the program will behave as if ``DEFAULT`` was set. + +Reference: + :openmp:`5.0`, Section 6.17
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompteamsthreadlimit.rst b/libgomp/doc/openmp-environment-variables/ompteamsthreadlimit.rst new file mode 100644 index 0000000..1865428 --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompteamsthreadlimit.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_teams_thread_limit: + +OMP_TEAMS_THREAD_LIMIT -- Set the maximum number of threads imposed by teams +**************************************************************************** + +Description: + Specifies an upper bound for the number of threads to use by each contention + group created by a teams construct without explicit ``thread_limit`` + clause. The value of this variable shall be a positive integer. If undefined, + the value of 0 is used which stands for an implementation defined upper + limit. + +See also: + :ref:`OMP_THREAD_LIMIT`, :ref:`omp_set_teams_thread_limit` + +Reference: + :openmp:`5.1`, Section 6.24
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompthreadlimit.rst b/libgomp/doc/openmp-environment-variables/ompthreadlimit.rst new file mode 100644 index 0000000..3157eda --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompthreadlimit.rst @@ -0,0 +1,22 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_thread_limit: + +OMP_THREAD_LIMIT -- Set the maximum number of threads +***************************************************** + +Description: + Specifies the number of threads to use for the whole program. The + value of this variable shall be a positive integer. If undefined, + the number of threads is not limited. + +See also: + :ref:`OMP_NUM_THREADS`, :ref:`omp_get_thread_limit` + +Reference: + :openmp:`4.5`, Section 4.10
\ No newline at end of file diff --git a/libgomp/doc/openmp-environment-variables/ompwaitpolicy.rst b/libgomp/doc/openmp-environment-variables/ompwaitpolicy.rst new file mode 100644 index 0000000..c88f0fd --- /dev/null +++ b/libgomp/doc/openmp-environment-variables/ompwaitpolicy.rst @@ -0,0 +1,24 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. index:: Environment Variable + +.. _omp_wait_policy: + +OMP_WAIT_POLICY -- How waiting threads are handled +************************************************** + +Description: + Specifies whether waiting threads should be active or passive. If + the value is ``PASSIVE``, waiting threads should not consume CPU + power while waiting; while the value is ``ACTIVE`` specifies that + they should. If undefined, threads wait actively for a short time + before waiting passively. + +See also: + :ref:`GOMP_SPINCOUNT` + +Reference: + :openmp:`4.5`, Section 4.8
\ No newline at end of file diff --git a/libgomp/doc/openmp-implementation-specifics.rst b/libgomp/doc/openmp-implementation-specifics.rst new file mode 100644 index 0000000..1a18bde --- /dev/null +++ b/libgomp/doc/openmp-implementation-specifics.rst @@ -0,0 +1,15 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-implementation-specifics: + +OpenMP-Implementation Specifics +------------------------------- + +.. toctree:: + :maxdepth: 2 + + openmp-context-selectors + memory-allocation-with-libmemkind
\ No newline at end of file diff --git a/libgomp/doc/openmp-implementation-status.rst b/libgomp/doc/openmp-implementation-status.rst new file mode 100644 index 0000000..223ee68 --- /dev/null +++ b/libgomp/doc/openmp-implementation-status.rst @@ -0,0 +1,21 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-implementation-status: + +OpenMP Implementation Status +---------------------------- + +The ``_OPENMP`` preprocessor macro and Fortran's ``openmp_version`` +parameter, provided by ``omp_lib.h`` and the ``omp_lib`` module, have +the value ``201511`` (i.e. OpenMP 4.5). + +.. toctree:: + :maxdepth: 2 + + openmp-implementation-status/openmp-45 + openmp-implementation-status/openmp-50 + openmp-implementation-status/openmp-51 + openmp-implementation-status/openmp-52
\ No newline at end of file diff --git a/libgomp/doc/openmp-implementation-status/openmp-45.rst b/libgomp/doc/openmp-implementation-status/openmp-45.rst new file mode 100644 index 0000000..bd77b0d --- /dev/null +++ b/libgomp/doc/openmp-implementation-status/openmp-45.rst @@ -0,0 +1,11 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-4.5: + +OpenMP 4.5 +********** + +The OpenMP 4.5 specification is fully supported.
\ No newline at end of file diff --git a/libgomp/doc/openmp-implementation-status/openmp-50.rst b/libgomp/doc/openmp-implementation-status/openmp-50.rst new file mode 100644 index 0000000..c5127a0 --- /dev/null +++ b/libgomp/doc/openmp-implementation-status/openmp-50.rst @@ -0,0 +1,212 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-5.0: + +OpenMP 5.0 +********** + +New features listed in Appendix B of the OpenMP specification +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. This list is sorted as in OpenMP 5.1's B.3 not as in OpenMP 5.0's B.2 + +.. list-table:: + :header-rows: 1 + :widths: 50 10 25 + + * - Description + - Status + - Comments + + * - Array shaping + - N + - + * - Array sections with non-unit strides in C and C++ + - N + - + * - Iterators + - Y + - + * - ``metadirective`` directive + - N + - + * - ``declare variant`` directive + - P + - *simd* traits not handled correctly + * - *target-offload-var* ICV and ``OMP_TARGET_OFFLOAD`` env variable + - Y + - + * - Nested-parallel changes to *max-active-levels-var* ICV + - Y + - + * - ``requires`` directive + - P + - complete but no non-host devices provides ``unified_address``, ``unified_shared_memory`` or ``reverse_offload`` + * - ``teams`` construct outside an enclosing target region + - Y + - + * - Non-rectangular loop nests + - Y + - + * - ``!=`` as relational-op in canonical loop form for C/C++ + - Y + - + * - ``nonmonotonic`` as default loop schedule modifier for worksharing-loop constructs + - Y + - + * - Collapse of associated loops that are imperfectly nested loops + - N + - + * - Clauses ``if``, ``nontemporal`` and ``order(concurrent)`` in ``simd`` construct + - Y + - + * - ``atomic`` constructs in ``simd`` + - Y + - + * - ``loop`` construct + - Y + - + * - ``order(concurrent)`` clause + - Y + - + * - ``scan`` directive and ``in_scan`` modifier for the ``reduction`` clause + - Y + - + * - ``in_reduction`` clause on ``task`` constructs + - Y + - + * - ``in_reduction`` clause on ``target`` constructs + - P + - ``nowait`` only stub + * - ``task_reduction`` clause with ``taskgroup`` + - Y + - + * - ``task`` modifier to ``reduction`` clause + - Y + - + * - ``affinity`` clause to ``task`` construct + - Y + - Stub only + * - ``detach`` clause to ``task`` construct + - Y + - + * - ``omp_fulfill_event`` runtime routine + - Y + - + * - ``reduction`` and ``in_reduction`` clauses on ``taskloop`` and ``taskloop simd`` constructs + - Y + - + * - ``taskloop`` construct cancelable by ``cancel`` construct + - Y + - + * - ``mutexinoutset`` *dependence-type* for ``depend`` clause + - Y + - + * - Predefined memory spaces, memory allocators, allocator traits + - Y + - Some are only stubs + * - Memory management routines + - Y + - + * - ``allocate`` directive + - N + - + * - ``allocate`` clause + - P + - Initial support + * - ``use_device_addr`` clause on ``target data`` + - Y + - + * - ``ancestor`` modifier on ``device`` clause + - Y + - See comment for ``requires`` + * - Implicit declare target directive + - Y + - + * - Discontiguous array section with ``target update`` construct + - N + - + * - C/C++'s lvalue expressions in ``to``, ``from`` and ``map`` clauses + - N + - + * - C/C++'s lvalue expressions in ``depend`` clauses + - Y + - + * - Nested ``declare target`` directive + - Y + - + * - Combined ``master`` constructs + - Y + - + * - ``depend`` clause on ``taskwait`` + - Y + - + * - Weak memory ordering clauses on ``atomic`` and ``flush`` construct + - Y + - + * - ``hint`` clause on the ``atomic`` construct + - Y + - Stub only + * - ``depobj`` construct and depend objects + - Y + - + * - Lock hints were renamed to synchronization hints + - Y + - + * - ``conditional`` modifier to ``lastprivate`` clause + - Y + - + * - Map-order clarifications + - P + - + * - ``close`` *map-type-modifier* + - Y + - + * - Mapping C/C++ pointer variables and to assign the address of device memory mapped by an array section + - P + - + * - Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables + - P + - Mapping of vars with allocatable components unsupported + * - ``defaultmap`` extensions + - Y + - + * - ``declare mapper`` directive + - N + - + * - ``omp_get_supported_active_levels`` routine + - Y + - + * - Runtime routines and environment variables to display runtime thread affinity information + - Y + - + * - ``omp_pause_resource`` and ``omp_pause_resource_all`` runtime routines + - Y + - + * - ``omp_get_device_num`` runtime routine + - Y + - + * - OMPT interface + - N + - + * - OMPD interface + - N + - + +Other new OpenMP 5.0 features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + :widths: 50 10 25 + + * - Description + - Status + - Comments + + * - Supporting C++'s range-based for loop + - Y + -
\ No newline at end of file diff --git a/libgomp/doc/openmp-implementation-status/openmp-51.rst b/libgomp/doc/openmp-implementation-status/openmp-51.rst new file mode 100644 index 0000000..07c3b11 --- /dev/null +++ b/libgomp/doc/openmp-implementation-status/openmp-51.rst @@ -0,0 +1,177 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-5.1: + +OpenMP 5.1 +********** + +New features listed in Appendix B of the OpenMP specification +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + :widths: 50 10 25 + + * - Description + - Status + - Comments + + * - OpenMP directive as C++ attribute specifiers + - Y + - + * - ``omp_all_memory`` reserved locator + - Y + - + * - *target_device trait* in OpenMP Context + - N + - + * - ``target_device`` selector set in context selectors + - N + - + * - C/C++'s ``declare variant`` directive: elision support of preprocessed code + - N + - + * - ``declare variant`` : new clauses ``adjust_args`` and ``append_args`` + - N + - + * - ``dispatch`` construct + - N + - + * - device-specific ICV settings with environment variables + - Y + - + * - ``assume`` directive + - Y + - + * - ``nothing`` directive + - Y + - + * - ``error`` directive + - Y + - + * - ``masked`` construct + - Y + - + * - ``scope`` directive + - Y + - + * - Loop transformation constructs + - N + - + * - ``strict`` modifier in the ``grainsize`` and ``num_tasks`` clauses of the ``taskloop`` construct + - Y + - + * - ``align`` clause/modifier in ``allocate`` directive/clause and ``allocator`` directive + - P + - C/C++ on clause only + * - ``thread_limit`` clause to ``target`` construct + - Y + - + * - ``has_device_addr`` clause to ``target`` construct + - Y + - + * - Iterators in ``target update`` motion clauses and ``map`` clauses + - N + - + * - Indirect calls to the device version of a procedure or function in ``target`` regions + - N + - + * - ``interop`` directive + - N + - + * - ``omp_interop_t`` object support in runtime routines + - N + - + * - ``nowait`` clause in ``taskwait`` directive + - Y + - + * - Extensions to the ``atomic`` directive + - Y + - + * - ``seq_cst`` clause on a ``flush`` construct + - Y + - + * - ``inoutset`` argument to the ``depend`` clause + - Y + - + * - ``private`` and ``firstprivate`` argument to ``default`` clause in C and C++ + - Y + - + * - ``present`` argument to ``defaultmap`` clause + - N + - + * - ``omp_set_num_teams``, ``omp_set_teams_thread_limit``, ``omp_get_max_teams``, ``omp_get_teams_thread_limit`` runtime routines + - Y + - + * - ``omp_target_is_accessible`` runtime routine + - Y + - + * - ``omp_target_memcpy_async`` and ``omp_target_memcpy_rect_async`` runtime routines + - Y + - + * - ``omp_get_mapped_ptr`` runtime routine + - Y + - + * - ``omp_calloc``, ``omp_realloc``, ``omp_aligned_alloc`` and ``omp_aligned_calloc`` runtime routines + - Y + - + * - ``omp_alloctrait_key_t`` enum: ``omp_atv_serialized`` added, ``omp_atv_default`` changed + - Y + - + * - ``omp_display_env`` runtime routine + - Y + - + * - ``ompt_scope_endpoint_t`` enum: ``ompt_scope_beginend`` + - N + - + * - ``ompt_sync_region_t`` enum additions + - N + - + * - ``ompt_state_t`` enum: ``ompt_state_wait_barrier_implementation`` and ``ompt_state_wait_barrier_teams`` + - N + - + * - ``ompt_callback_target_data_op_emi_t``, ``ompt_callback_target_emi_t``, ``ompt_callback_target_map_emi_t`` and ``ompt_callback_target_submit_emi_t`` + - N + - + * - ``ompt_callback_error_t`` type + - N + - + * - ``OMP_PLACES`` syntax extensions + - Y + - + * - ``OMP_NUM_TEAMS`` and ``OMP_TEAMS_THREAD_LIMIT`` environment variables + - Y + - + +Other new OpenMP 5.1 features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + :widths: 50 10 25 + + * - Description + - Status + - Comments + + * - Support of strictly structured blocks in Fortran + - Y + - + * - Support of structured block sequences in C/C++ + - Y + - + * - ``unconstrained`` and ``reproducible`` modifiers on ``order`` clause + - Y + - + * - Support ``begin/end declare target`` syntax in C/C++ + - Y + - + * - Pointer predetermined firstprivate getting initialized to address of matching mapped list item per 5.1, Sect. 2.21.7.2 + - N + - + * - For Fortran, diagnose placing declarative before/between ``USE``, ``IMPORT``, and ``IMPLICIT`` as invalid + - N + -
\ No newline at end of file diff --git a/libgomp/doc/openmp-implementation-status/openmp-52.rst b/libgomp/doc/openmp-implementation-status/openmp-52.rst new file mode 100644 index 0000000..cbdd20d --- /dev/null +++ b/libgomp/doc/openmp-implementation-status/openmp-52.rst @@ -0,0 +1,132 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _openmp-5.2: + +OpenMP 5.2 +********** + +New features listed in Appendix B of the OpenMP specification +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + :widths: 50 10 25 + + * - Description + - Status + - Comments + + * - ``omp_in_explicit_task`` routine and *explicit-task-var* ICV + - Y + - + * - ``omp`` / ``ompx`` / ``omx`` sentinels and ``omp_`` / ``ompx_`` namespaces + - N/A + - warning for ``ompx/omx`` sentinels [#f1]_ + * - Clauses on ``end`` directive can be on directive + - N + - + * - Deprecation of no-argument ``destroy`` clause on ``depobj`` + - N + - + * - ``linear`` clause syntax changes and ``step`` modifier + - Y + - + * - Deprecation of minus operator for reductions + - N + - + * - Deprecation of separating ``map`` modifiers without comma + - N + - + * - ``declare mapper`` with iterator and ``present`` modifiers + - N + - + * - If a matching mapped list item is not found in the data environment, the pointer retains its original value + - N + - + * - New ``enter`` clause as alias for ``to`` on declare target directive + - Y + - + * - Deprecation of ``to`` clause on declare target directive + - N + - + * - Extended list of directives permitted in Fortran pure procedures + - N + - + * - New ``allocators`` directive for Fortran + - N + - + * - Deprecation of ``allocate`` directive for Fortran allocatables/pointers + - N + - + * - Optional paired ``end`` directive with ``dispatch`` + - N + - + * - New ``memspace`` and ``traits`` modifiers for ``uses_allocators`` + - N + - + * - Deprecation of traits array following the allocator_handle expression in ``uses_allocators`` + - N + - + * - New ``otherwise`` clause as alias for ``default`` on metadirectives + - N + - + * - Deprecation of ``default`` clause on metadirectives + - N + - + * - Deprecation of delimited form of ``declare target`` + - N + - + * - Reproducible semantics changed for ``order(concurrent)`` + - N + - + * - ``allocate`` and ``firstprivate`` clauses on ``scope`` + - Y + - + * - ``ompt_callback_work`` + - N + - + * - Default map-type for ``map`` clause in ``target enter/exit data`` + - Y + - + * - New ``doacross`` clause as alias for ``depend`` with ``source`` / ``sink`` modifier + - Y + - + * - Deprecation of ``depend`` with ``source`` / ``sink`` modifier + - N + - + * - ``omp_cur_iteration`` keyword + - Y + - + +.. [#f1] The ``ompx`` sentinel as C/C++ pragma and C++ attributes are warned for with ``-Wunknown-pragmas`` (implied by ``-Wall``) and ``-Wattributes`` (enabled by default), respectively; for Fortran free-source code, there is a warning enabled by default and, for fixed-source code, the ``omx`` sentinel is warned for with with ``-Wsurprising`` (enabled by ``-Wall``). Unknown clauses are always rejected with an error. + +Other new OpenMP 5.2 features +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. list-table:: + :header-rows: 1 + :widths: 50 10 25 + + * - Description + - Status + - Comments + + * - For Fortran, optional comma between directive and clause + - N + - + * - Conforming device numbers and ``omp_initial_device`` and ``omp_invalid_device`` enum/PARAMETER + - Y + - + * - Initial value of *default-device-var* ICV with ``OMP_TARGET_OFFLOAD=mandatory`` + - N + - + * - *interop_types* in any position of the modifier list for the ``init`` clause of the ``interop`` construct + - N + - + +.. - + OpenMP Runtime Library Routines + -
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines.rst b/libgomp/doc/openmp-runtime-library-routines.rst new file mode 100644 index 0000000..77c5c75 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines.rst @@ -0,0 +1,87 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _runtime-library-routines: + +OpenMP Runtime Library Routines +------------------------------- + +The runtime routines described here are defined by Section 3 of the OpenMP +specification in version 4.5. The routines are structured in following +three parts: + +Control threads, processors and the parallel environment. They have C +linkage, and do not throw exceptions. + +.. toctree:: + :maxdepth: 2 + + openmp-runtime-library-routines/ompgetactivelevel + openmp-runtime-library-routines/ompgetancestorthreadnum + openmp-runtime-library-routines/ompgetcancellation + openmp-runtime-library-routines/ompgetdefaultdevice + openmp-runtime-library-routines/ompgetdevicenum + openmp-runtime-library-routines/ompgetdynamic + openmp-runtime-library-routines/ompgetinitialdevice + openmp-runtime-library-routines/ompgetlevel + openmp-runtime-library-routines/ompgetmaxactivelevels + openmp-runtime-library-routines/ompgetmaxtaskpriority + openmp-runtime-library-routines/ompgetmaxteams + openmp-runtime-library-routines/ompgetmaxthreads + openmp-runtime-library-routines/ompgetnested + openmp-runtime-library-routines/ompgetnumdevices + openmp-runtime-library-routines/ompgetnumprocs + openmp-runtime-library-routines/ompgetnumteams + openmp-runtime-library-routines/ompgetnumthreads + openmp-runtime-library-routines/ompgetprocbind + openmp-runtime-library-routines/ompgetschedule + openmp-runtime-library-routines/ompgetsupportedactivelevels + openmp-runtime-library-routines/ompgetteamnum + openmp-runtime-library-routines/ompgetteamsize + openmp-runtime-library-routines/ompgetteamsthreadlimit + openmp-runtime-library-routines/ompgetthreadlimit + openmp-runtime-library-routines/ompgetthreadnum + openmp-runtime-library-routines/ompinparallel + openmp-runtime-library-routines/ompinfinal + openmp-runtime-library-routines/ompisinitialdevice + openmp-runtime-library-routines/ompsetdefaultdevice + openmp-runtime-library-routines/ompsetdynamic + openmp-runtime-library-routines/ompsetmaxactivelevels + openmp-runtime-library-routines/ompsetnested + openmp-runtime-library-routines/ompsetnumteams + openmp-runtime-library-routines/ompsetnumthreads + openmp-runtime-library-routines/ompsetschedule + openmp-runtime-library-routines/ompsetteamsthreadlimit + +Initialize, set, test, unset and destroy simple and nested locks. + +.. toctree:: + :maxdepth: 2 + + openmp-runtime-library-routines/ompinitlock + openmp-runtime-library-routines/ompsetlock + openmp-runtime-library-routines/omptestlock + openmp-runtime-library-routines/ompunsetlock + openmp-runtime-library-routines/ompdestroylock + openmp-runtime-library-routines/ompinitnestlock + openmp-runtime-library-routines/ompsetnestlock + openmp-runtime-library-routines/omptestnestlock + openmp-runtime-library-routines/ompunsetnestlock + openmp-runtime-library-routines/ompdestroynestlock + +Portable, thread-based, wall clock timer. + +.. toctree:: + :maxdepth: 2 + + openmp-runtime-library-routines/ompgetwtick + openmp-runtime-library-routines/ompgetwtime + +Support for event objects. + +.. toctree:: + :maxdepth: 2 + + openmp-runtime-library-routines/ompfulfillevent
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompdestroylock.rst b/libgomp/doc/openmp-runtime-library-routines/ompdestroylock.rst new file mode 100644 index 0000000..5de285b --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompdestroylock.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_destroy_lock: + +omp_destroy_lock -- Destroy simple lock +*************************************** + +Description: + Destroy a simple lock. In order to be destroyed, a simple lock must be + in the unlocked state. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_destroy_lock(omp_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_destroy_lock(svar)`` + * - + - ``integer(omp_lock_kind), intent(inout) :: svar`` + +See also: + :ref:`omp_init_lock` + +Reference: + :openmp:`4.5`, Section 3.3.3.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompdestroynestlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompdestroynestlock.rst new file mode 100644 index 0000000..a4a991e --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompdestroynestlock.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_destroy_nest_lock: + +omp_destroy_nest_lock -- Destroy nested lock +******************************************** + +Description: + Destroy a nested lock. In order to be destroyed, a nested lock must be + in the unlocked state and its nesting count must equal zero. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_destroy_nest_lock(omp_nest_lock_t *);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_destroy_nest_lock(nvar)`` + * - + - ``integer(omp_nest_lock_kind), intent(inout) :: nvar`` + +See also: + :ref:`omp_init_lock` + +Reference: + :openmp:`4.5`, Section 3.3.3.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompfulfillevent.rst b/libgomp/doc/openmp-runtime-library-routines/ompfulfillevent.rst new file mode 100644 index 0000000..b0beddd --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompfulfillevent.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_fulfill_event: + +omp_fulfill_event -- Fulfill and destroy an OpenMP event +******************************************************** + +Description: + Fulfill the event associated with the event handle argument. Currently, it + is only used to fulfill events generated by detach clauses on task + constructs - the effect of fulfilling the event is to allow the task to + complete. + + The result of calling ``omp_fulfill_event`` with an event handle other + than that generated by a detach clause is undefined. Calling it with an + event handle that has already been fulfilled is also undefined. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_fulfill_event(omp_event_handle_t event);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_fulfill_event(event)`` + * - + - ``integer (kind=omp_event_handle_kind) :: event`` + +Reference: + :openmp:`5.0`, Section 3.5.1.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetactivelevel.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetactivelevel.rst new file mode 100644 index 0000000..da26ecd --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetactivelevel.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_active_level: + +omp_get_active_level -- Number of parallel regions +************************************************** + +Description: + This function returns the nesting level for the active parallel blocks, + which enclose the calling call. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_active_level(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_active_level()`` + +See also: + :ref:`omp_get_level`, :ref:`omp_get_max_active_levels`, :ref:`omp_set_max_active_levels` + +Reference: + :openmp:`4.5`, Section 3.2.20.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetancestorthreadnum.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetancestorthreadnum.rst new file mode 100644 index 0000000..b5ea569 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetancestorthreadnum.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_ancestor_thread_num: + +omp_get_ancestor_thread_num -- Ancestor thread ID +************************************************* + +Description: + This function returns the thread identification number for the given + nesting level of the current thread. For values of :samp:`{level}` outside + zero to ``omp_get_level`` -1 is returned; if :samp:`{level}` is + ``omp_get_level`` the result is identical to ``omp_get_thread_num``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_ancestor_thread_num(int level);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_ancestor_thread_num(level)`` + * - + - ``integer level`` + +See also: + :ref:`omp_get_level`, :ref:`omp_get_thread_num`, :ref:`omp_get_team_size` + +Reference: + :openmp:`4.5`, Section 3.2.18.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetcancellation.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetcancellation.rst new file mode 100644 index 0000000..92c6793 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetcancellation.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_cancellation: + +omp_get_cancellation -- Whether cancellation support is enabled +*************************************************************** + +Description: + This function returns ``true`` if cancellation is activated, ``false`` + otherwise. Here, ``true`` and ``false`` represent their language-specific + counterparts. Unless :envvar:`OMP_CANCELLATION` is set true, cancellations are + deactivated. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_cancellation(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_get_cancellation()`` + +See also: + :ref:`OMP_CANCELLATION` + +Reference: + :openmp:`4.5`, Section 3.2.9.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetdefaultdevice.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetdefaultdevice.rst new file mode 100644 index 0000000..5d8c5fa --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetdefaultdevice.rst @@ -0,0 +1,30 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_default_device: + +omp_get_default_device -- Get the default device for target regions +******************************************************************* + +Description: + Get the default device for target regions without device clause. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_default_device(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_default_device()`` + +See also: + :ref:`OMP_DEFAULT_DEVICE`, :ref:`omp_set_default_device` + +Reference: + :openmp:`4.5`, Section 3.2.30.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetdevicenum.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetdevicenum.rst new file mode 100644 index 0000000..04158ce --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetdevicenum.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_device_num: + +omp_get_device_num -- Return device number of current device +************************************************************ + +Description: + This function returns a device number that represents the device that the + current thread is executing on. For OpenMP 5.0, this must be equal to the + value returned by the ``omp_get_initial_device`` function when called + from the host. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_device_num(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_device_num()`` + +See also: + :ref:`omp_get_initial_device` + +Reference: + :openmp:`5.0`, Section 3.2.37.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetdynamic.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetdynamic.rst new file mode 100644 index 0000000..6e461f1 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetdynamic.rst @@ -0,0 +1,37 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_dynamic: + +omp_get_dynamic -- Dynamic teams setting +**************************************** + +Description: + This function returns ``true`` if enabled, ``false`` otherwise. + Here, ``true`` and ``false`` represent their language-specific + counterparts. + + The dynamic team setting may be initialized at startup by the + :envvar:`OMP_DYNAMIC` environment variable or at runtime using + ``omp_set_dynamic``. If undefined, dynamic adjustment is + disabled by default. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_dynamic(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_get_dynamic()`` + +See also: + :ref:`omp_set_dynamic`, :ref:`OMP_DYNAMIC` + +Reference: + :openmp:`4.5`, Section 3.2.8.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetinitialdevice.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetinitialdevice.rst new file mode 100644 index 0000000..670fea8 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetinitialdevice.rst @@ -0,0 +1,32 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_initial_device: + +omp_get_initial_device -- Return device number of initial device +**************************************************************** + +Description: + This function returns a device number that represents the host device. + For OpenMP 5.1, this must be equal to the value returned by the + ``omp_get_num_devices`` function. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_initial_device(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_initial_device()`` + +See also: + :ref:`omp_get_num_devices` + +Reference: + :openmp:`4.5`, Section 3.2.35.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetlevel.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetlevel.rst new file mode 100644 index 0000000..604aa8d --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetlevel.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_level: + +omp_get_level -- Obtain the current nesting level +************************************************* + +Description: + This function returns the nesting level for the parallel blocks, + which enclose the calling call. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_level(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_level()`` + +See also: + :ref:`omp_get_active_level` + +Reference: + :openmp:`4.5`, Section 3.2.17.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetmaxactivelevels.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxactivelevels.rst new file mode 100644 index 0000000..a1e631f --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxactivelevels.rst @@ -0,0 +1,30 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_max_active_levels: + +omp_get_max_active_levels -- Current maximum number of active regions +********************************************************************* + +Description: + This function obtains the maximum allowed number of nested, active parallel regions. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_max_active_levels(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_max_active_levels()`` + +See also: + :ref:`omp_set_max_active_levels`, :ref:`omp_get_active_level` + +Reference: + :openmp:`4.5`, Section 3.2.16.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetmaxtaskpriority.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxtaskpriority.rst new file mode 100644 index 0000000..e41dd28 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxtaskpriority.rst @@ -0,0 +1,29 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_max_task_priority: + +omp_get_max_task_priority -- Maximum priority value +*************************************************** + +that can be set for tasks. + +Description: + This function obtains the maximum allowed priority number for tasks. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_max_task_priority(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_max_task_priority()`` + +Reference: + :openmp:`4.5`, Section 3.2.29.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetmaxteams.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxteams.rst new file mode 100644 index 0000000..6e73555 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxteams.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_max_teams: + +omp_get_max_teams -- Maximum number of teams of teams region +************************************************************ + +Description: + Return the maximum number of teams used for the teams region + that does not use the clause ``num_teams``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_max_teams(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_max_teams()`` + +See also: + :ref:`omp_set_num_teams`, :ref:`omp_get_num_teams` + +Reference: + :openmp:`5.1`, Section 3.4.4.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetmaxthreads.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxthreads.rst new file mode 100644 index 0000000..d8c4fb8 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetmaxthreads.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_max_threads: + +omp_get_max_threads -- Maximum number of threads of parallel region +******************************************************************* + +Description: + Return the maximum number of threads used for the current parallel region + that does not use the clause ``num_threads``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_max_threads(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_max_threads()`` + +See also: + :ref:`omp_set_num_threads`, :ref:`omp_set_dynamic`, :ref:`omp_get_thread_limit` + +Reference: + :openmp:`4.5`, Section 3.2.3.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetnested.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetnested.rst new file mode 100644 index 0000000..a5d7339 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetnested.rst @@ -0,0 +1,48 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_nested: + +omp_get_nested -- Nested parallel regions +***************************************** + +Description: + This function returns ``true`` if nested parallel regions are + enabled, ``false`` otherwise. Here, ``true`` and ``false`` + represent their language-specific counterparts. + + The state of nested parallel regions at startup depends on several + environment variables. If :envvar:`OMP_MAX_ACTIVE_LEVELS` is defined + and is set to greater than one, then nested parallel regions will be + enabled. If not defined, then the value of the :envvar:`OMP_NESTED` + environment variable will be followed if defined. If neither are + defined, then if either :envvar:`OMP_NUM_THREADS` or :envvar:`OMP_PROC_BIND` + are defined with a list of more than one value, then nested parallel + regions are enabled. If none of these are defined, then nested parallel + regions are disabled by default. + + Nested parallel regions can be enabled or disabled at runtime using + ``omp_set_nested``, or by setting the maximum number of nested + regions with ``omp_set_max_active_levels`` to one to disable, or + above one to enable. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_nested(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_get_nested()`` + +See also: + :ref:`omp_set_max_active_levels`, :ref:`omp_set_nested`, + :ref:`OMP_MAX_ACTIVE_LEVELS`, :ref:`OMP_NESTED` + +Reference: + :openmp:`4.5`, Section 3.2.11.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetnumdevices.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetnumdevices.rst new file mode 100644 index 0000000..4e44a5b --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetnumdevices.rst @@ -0,0 +1,27 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_num_devices: + +omp_get_num_devices -- Number of target devices +*********************************************** + +Description: + Returns the number of target devices. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_num_devices(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_num_devices()`` + +Reference: + :openmp:`4.5`, Section 3.2.31.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetnumprocs.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetnumprocs.rst new file mode 100644 index 0000000..20db47b --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetnumprocs.rst @@ -0,0 +1,27 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_num_procs: + +omp_get_num_procs -- Number of processors online +************************************************ + +Description: + Returns the number of processors online on that device. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_num_procs(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_num_procs()`` + +Reference: + :openmp:`4.5`, Section 3.2.5.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetnumteams.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetnumteams.rst new file mode 100644 index 0000000..da3af05 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetnumteams.rst @@ -0,0 +1,27 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_num_teams: + +omp_get_num_teams -- Number of teams +************************************ + +Description: + Returns the number of teams in the current team region. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_num_teams(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_num_teams()`` + +Reference: + :openmp:`4.5`, Section 3.2.32.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetnumthreads.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetnumthreads.rst new file mode 100644 index 0000000..1b4bc59 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetnumthreads.rst @@ -0,0 +1,38 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_num_threads: + +omp_get_num_threads -- Size of the active team +********************************************** + +Description: + Returns the number of threads in the current team. In a sequential section of + the program ``omp_get_num_threads`` returns 1. + + The default team size may be initialized at startup by the + :envvar:`OMP_NUM_THREADS` environment variable. At runtime, the size + of the current team may be set either by the ``NUM_THREADS`` + clause or by ``omp_set_num_threads``. If none of the above were + used to define a specific value and :envvar:`OMP_DYNAMIC` is disabled, + one thread per CPU online is used. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_num_threads(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_num_threads()`` + +See also: + :ref:`omp_get_max_threads`, :ref:`omp_set_num_threads`, :ref:`OMP_NUM_THREADS` + +Reference: + :openmp:`4.5`, Section 3.2.2.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetprocbind.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetprocbind.rst new file mode 100644 index 0000000..0270657 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetprocbind.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_proc_bind: + +omp_get_proc_bind -- Whether theads may be moved between CPUs +************************************************************* + +Description: + This functions returns the currently active thread affinity policy, which is + set via :envvar:`OMP_PROC_BIND`. Possible values are ``omp_proc_bind_false``, + ``omp_proc_bind_true``, ``omp_proc_bind_primary``, + ``omp_proc_bind_master``, ``omp_proc_bind_close`` and ``omp_proc_bind_spread``, + where ``omp_proc_bind_master`` is an alias for ``omp_proc_bind_primary``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``omp_proc_bind_t omp_get_proc_bind(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer(kind=omp_proc_bind_kind) function omp_get_proc_bind()`` + +See also: + :ref:`OMP_PROC_BIND`, :ref:`OMP_PLACES`, :ref:`GOMP_CPU_AFFINITY`, + +Reference: + :openmp:`4.5`, Section 3.2.22.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetschedule.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetschedule.rst new file mode 100644 index 0000000..43a2588 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetschedule.rst @@ -0,0 +1,37 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_schedule: + +omp_get_schedule -- Obtain the runtime scheduling method +******************************************************** + +Description: + Obtain the runtime scheduling method. The :samp:`{kind}` argument will be + set to the value ``omp_sched_static``, ``omp_sched_dynamic``, + ``omp_sched_guided`` or ``omp_sched_auto``. The second argument, + :samp:`{chunk_size}`, is set to the chunk size. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_get_schedule(omp_sched_t *kind, int *chunk_size);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_get_schedule(kind, chunk_size)`` + * - + - ``integer(kind=omp_sched_kind) kind`` + * - + - ``integer chunk_size`` + +See also: + :ref:`omp_set_schedule`, :ref:`OMP_SCHEDULE` + +Reference: + :openmp:`4.5`, Section 3.2.13.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetsupportedactivelevels.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetsupportedactivelevels.rst new file mode 100644 index 0000000..b8d6929 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetsupportedactivelevels.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_supported_active_levels: + +omp_get_supported_active_levels -- Maximum number of active regions supported +***************************************************************************** + +Description: + This function returns the maximum number of nested, active parallel regions + supported by this implementation. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_supported_active_levels(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_supported_active_levels()`` + +See also: + :ref:`omp_get_max_active_levels`, :ref:`omp_set_max_active_levels` + +Reference: + :openmp:`5.0`, Section 3.2.15.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetteamnum.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetteamnum.rst new file mode 100644 index 0000000..6b1727e --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetteamnum.rst @@ -0,0 +1,27 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_team_num: + +omp_get_team_num -- Get team number +*********************************** + +Description: + Returns the team number of the calling thread. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_team_num(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_team_num()`` + +Reference: + :openmp:`4.5`, Section 3.2.33.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetteamsize.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetteamsize.rst new file mode 100644 index 0000000..03c09ef --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetteamsize.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_team_size: + +omp_get_team_size -- Number of threads in a team +************************************************ + +Description: + This function returns the number of threads in a thread team to which + either the current thread or its ancestor belongs. For values of :samp:`{level}` + outside zero to ``omp_get_level``, -1 is returned; if :samp:`{level}` is zero, + 1 is returned, and for ``omp_get_level``, the result is identical + to ``omp_get_num_threads``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_team_size(int level);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_team_size(level)`` + * - + - ``integer level`` + +See also: + :ref:`omp_get_num_threads`, :ref:`omp_get_level`, :ref:`omp_get_ancestor_thread_num` + +Reference: + :openmp:`4.5`, Section 3.2.19.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetteamsthreadlimit.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetteamsthreadlimit.rst new file mode 100644 index 0000000..5e4e2ee --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetteamsthreadlimit.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_teams_thread_limit: + +omp_get_teams_thread_limit -- Maximum number of threads imposed by teams +************************************************************************ + +Description: + Return the maximum number of threads that will be able to participate in + each team created by a teams construct. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_teams_thread_limit(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_teams_thread_limit()`` + +See also: + :ref:`omp_set_teams_thread_limit`, :ref:`OMP_TEAMS_THREAD_LIMIT` + +Reference: + :openmp:`5.1`, Section 3.4.6.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetthreadlimit.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetthreadlimit.rst new file mode 100644 index 0000000..6c35a69 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetthreadlimit.rst @@ -0,0 +1,30 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_thread_limit: + +omp_get_thread_limit -- Maximum number of threads +************************************************* + +Description: + Return the maximum number of threads of the program. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_thread_limit(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_thread_limit()`` + +See also: + :ref:`omp_get_max_threads`, :ref:`OMP_THREAD_LIMIT` + +Reference: + :openmp:`4.5`, Section 3.2.14.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetthreadnum.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetthreadnum.rst new file mode 100644 index 0000000..584157a --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetthreadnum.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_thread_num: + +omp_get_thread_num -- Current thread ID +*************************************** + +Description: + Returns a unique thread identification number within the current team. + In a sequential parts of the program, ``omp_get_thread_num`` + always returns 0. In parallel regions the return value varies + from 0 to ``omp_get_num_threads`` -1 inclusive. The return + value of the primary thread of a team is always 0. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_get_thread_num(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``integer function omp_get_thread_num()`` + +See also: + :ref:`omp_get_num_threads`, :ref:`omp_get_ancestor_thread_num` + +Reference: + :openmp:`4.5`, Section 3.2.4.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetwtick.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetwtick.rst new file mode 100644 index 0000000..b188d94 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetwtick.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_wtick: + +omp_get_wtick -- Get timer precision +************************************ + +Description: + Gets the timer precision, i.e., the number of seconds between two + successive clock ticks. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``double omp_get_wtick(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``double precision function omp_get_wtick()`` + +See also: + :ref:`omp_get_wtime` + +Reference: + :openmp:`4.5`, Section 3.4.2.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompgetwtime.rst b/libgomp/doc/openmp-runtime-library-routines/ompgetwtime.rst new file mode 100644 index 0000000..27b3b2f --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompgetwtime.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_get_wtime: + +omp_get_wtime -- Elapsed wall clock time +**************************************** + +Description: + Elapsed wall clock time in seconds. The time is measured per thread, no + guarantee can be made that two distinct threads measure the same time. + Time is measured from some "time in the past", which is an arbitrary time + guaranteed not to change during the execution of the program. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``double omp_get_wtime(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``double precision function omp_get_wtime()`` + +See also: + :ref:`omp_get_wtick` + +Reference: + :openmp:`4.5`, Section 3.4.1.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompinfinal.rst b/libgomp/doc/openmp-runtime-library-routines/ompinfinal.rst new file mode 100644 index 0000000..e36af9f --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompinfinal.rst @@ -0,0 +1,29 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_in_final: + +omp_in_final -- Whether in final or included task region +******************************************************** + +Description: + This function returns ``true`` if currently running in a final + or included task region, ``false`` otherwise. Here, ``true`` + and ``false`` represent their language-specific counterparts. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_in_final(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_in_final()`` + +Reference: + :openmp:`4.5`, Section 3.2.21.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompinitlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompinitlock.rst new file mode 100644 index 0000000..34c52e1 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompinitlock.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_init_lock: + +omp_init_lock -- Initialize simple lock +*************************************** + +Description: + Initialize a simple lock. After initialization, the lock is in + an unlocked state. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_init_lock(omp_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_init_lock(svar)`` + * - + - ``integer(omp_lock_kind), intent(out) :: svar`` + +See also: + :ref:`omp_destroy_lock` + +Reference: + :openmp:`4.5`, Section 3.3.1.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompinitnestlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompinitnestlock.rst new file mode 100644 index 0000000..042c188 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompinitnestlock.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_init_nest_lock: + +omp_init_nest_lock -- Initialize nested lock +******************************************** + +Description: + Initialize a nested lock. After initialization, the lock is in + an unlocked state and the nesting count is set to zero. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_init_nest_lock(omp_nest_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_init_nest_lock(nvar)`` + * - + - ``integer(omp_nest_lock_kind), intent(out) :: nvar`` + +See also: + :ref:`omp_destroy_nest_lock` + +Reference: + :openmp:`4.5`, Section 3.3.1.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompinparallel.rst b/libgomp/doc/openmp-runtime-library-routines/ompinparallel.rst new file mode 100644 index 0000000..55bc1e1 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompinparallel.rst @@ -0,0 +1,29 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_in_parallel: + +omp_in_parallel -- Whether a parallel region is active +****************************************************** + +Description: + This function returns ``true`` if currently running in parallel, + ``false`` otherwise. Here, ``true`` and ``false`` represent + their language-specific counterparts. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_in_parallel(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_in_parallel()`` + +Reference: + :openmp:`4.5`, Section 3.2.6.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompisinitialdevice.rst b/libgomp/doc/openmp-runtime-library-routines/ompisinitialdevice.rst new file mode 100644 index 0000000..501891f --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompisinitialdevice.rst @@ -0,0 +1,29 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_is_initial_device: + +omp_is_initial_device -- Whether executing on the host device +************************************************************* + +Description: + This function returns ``true`` if currently running on the host device, + ``false`` otherwise. Here, ``true`` and ``false`` represent + their language-specific counterparts. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_is_initial_device(void);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_is_initial_device()`` + +Reference: + :openmp:`4.5`, Section 3.2.34.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetdefaultdevice.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetdefaultdevice.rst new file mode 100644 index 0000000..33202b9 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetdefaultdevice.rst @@ -0,0 +1,33 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_default_device: + +omp_set_default_device -- Set the default device for target regions +******************************************************************* + +Description: + Set the default device for target regions without device clause. The argument + shall be a nonnegative device number. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_default_device(int device_num);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_default_device(device_num)`` + * - + - ``integer device_num`` + +See also: + :ref:`OMP_DEFAULT_DEVICE`, :ref:`omp_get_default_device` + +Reference: + :openmp:`4.5`, Section 3.2.29.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetdynamic.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetdynamic.rst new file mode 100644 index 0000000..d18346b --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetdynamic.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_dynamic: + +omp_set_dynamic -- Enable/disable dynamic teams +*********************************************** + +Description: + Enable or disable the dynamic adjustment of the number of threads + within a team. The function takes the language-specific equivalent + of ``true`` and ``false``, where ``true`` enables dynamic + adjustment of team sizes and ``false`` disables it. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_dynamic(int dynamic_threads);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_dynamic(dynamic_threads)`` + * - + - ``logical, intent(in) :: dynamic_threads`` + +See also: + :ref:`OMP_DYNAMIC`, :ref:`omp_get_dynamic` + +Reference: + :openmp:`4.5`, Section 3.2.7.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetlock.rst new file mode 100644 index 0000000..fbaea1d --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetlock.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_lock: + +omp_set_lock -- Wait for and set simple lock +******************************************** + +Description: + Before setting a simple lock, the lock variable must be initialized by + ``omp_init_lock``. The calling thread is blocked until the lock + is available. If the lock is already held by the current thread, + a deadlock occurs. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_lock(omp_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_lock(svar)`` + * - + - ``integer(omp_lock_kind), intent(inout) :: svar`` + +See also: + :ref:`omp_init_lock`, :ref:`omp_test_lock`, :ref:`omp_unset_lock` + +Reference: + :openmp:`4.5`, Section 3.3.4.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetmaxactivelevels.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetmaxactivelevels.rst new file mode 100644 index 0000000..24c1fd1 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetmaxactivelevels.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_max_active_levels: + +omp_set_max_active_levels -- Limits the number of active parallel regions +************************************************************************* + +Description: + This function limits the maximum allowed number of nested, active + parallel regions. :samp:`{max_levels}` must be less or equal to + the value returned by ``omp_get_supported_active_levels``. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_max_active_levels(int max_levels);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_max_active_levels(max_levels)`` + * - + - ``integer max_levels`` + +See also: + :ref:`omp_get_max_active_levels`, :ref:`omp_get_active_level`, + :ref:`omp_get_supported_active_levels` + +Reference: + :openmp:`4.5`, Section 3.2.15.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetnested.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetnested.rst new file mode 100644 index 0000000..3700585 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetnested.rst @@ -0,0 +1,40 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_nested: + +omp_set_nested -- Enable/disable nested parallel regions +******************************************************** + +Description: + Enable or disable nested parallel regions, i.e., whether team members + are allowed to create new teams. The function takes the language-specific + equivalent of ``true`` and ``false``, where ``true`` enables + dynamic adjustment of team sizes and ``false`` disables it. + + Enabling nested parallel regions will also set the maximum number of + active nested regions to the maximum supported. Disabling nested parallel + regions will set the maximum number of active nested regions to one. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_nested(int nested);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_nested(nested)`` + * - + - ``logical, intent(in) :: nested`` + +See also: + :ref:`omp_get_nested`, :ref:`omp_set_max_active_levels`, + :ref:`OMP_MAX_ACTIVE_LEVELS`, :ref:`OMP_NESTED` + +Reference: + :openmp:`4.5`, Section 3.2.10.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetnestlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetnestlock.rst new file mode 100644 index 0000000..c159d95 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetnestlock.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_nest_lock: + +omp_set_nest_lock -- Wait for and set nested lock +************************************************* + +Description: + Before setting a nested lock, the lock variable must be initialized by + ``omp_init_nest_lock``. The calling thread is blocked until the lock + is available. If the lock is already held by the current thread, the + nesting count for the lock is incremented. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_nest_lock(omp_nest_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_nest_lock(nvar)`` + * - + - ``integer(omp_nest_lock_kind), intent(inout) :: nvar`` + +See also: + :ref:`omp_init_nest_lock`, :ref:`omp_unset_nest_lock` + +Reference: + :openmp:`4.5`, Section 3.3.4.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetnumteams.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetnumteams.rst new file mode 100644 index 0000000..83642f6 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetnumteams.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_num_teams: + +omp_set_num_teams -- Set upper teams limit for teams construct +************************************************************** + +Description: + Specifies the upper bound for number of teams created by the teams construct + which does not specify a ``num_teams`` clause. The + argument of ``omp_set_num_teams`` shall be a positive integer. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_num_teams(int num_teams);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_num_teams(num_teams)`` + * - + - ``integer, intent(in) :: num_teams`` + +See also: + :ref:`OMP_NUM_TEAMS`, :ref:`omp_get_num_teams`, :ref:`omp_get_max_teams` + +Reference: + :openmp:`5.1`, Section 3.4.3.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetnumthreads.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetnumthreads.rst new file mode 100644 index 0000000..dd9ad45 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetnumthreads.rst @@ -0,0 +1,34 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_num_threads: + +omp_set_num_threads -- Set upper team size limit +************************************************ + +Description: + Specifies the number of threads used by default in subsequent parallel + sections, if those do not specify a ``num_threads`` clause. The + argument of ``omp_set_num_threads`` shall be a positive integer. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_num_threads(int num_threads);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_num_threads(num_threads)`` + * - + - ``integer, intent(in) :: num_threads`` + +See also: + :ref:`OMP_NUM_THREADS`, :ref:`omp_get_num_threads`, :ref:`omp_get_max_threads` + +Reference: + :openmp:`4.5`, Section 3.2.1.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetschedule.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetschedule.rst new file mode 100644 index 0000000..4c7e08f --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetschedule.rst @@ -0,0 +1,40 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_schedule: + +omp_set_schedule -- Set the runtime scheduling method +***************************************************** + +Description: + Sets the runtime scheduling method. The :samp:`{kind}` argument can have the + value ``omp_sched_static``, ``omp_sched_dynamic``, + ``omp_sched_guided`` or ``omp_sched_auto``. Except for + ``omp_sched_auto``, the chunk size is set to the value of + :samp:`{chunk_size}` if positive, or to the default value if zero or negative. + For ``omp_sched_auto`` the :samp:`{chunk_size}` argument is ignored. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_schedule(omp_sched_t kind, int chunk_size);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_schedule(kind, chunk_size)`` + * - + - ``integer(kind=omp_sched_kind) kind`` + * - + - ``integer chunk_size`` + +See also: + :ref:`omp_get_schedule` + :ref:`OMP_SCHEDULE` + +Reference: + :openmp:`4.5`, Section 3.2.12.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompsetteamsthreadlimit.rst b/libgomp/doc/openmp-runtime-library-routines/ompsetteamsthreadlimit.rst new file mode 100644 index 0000000..36385b4 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompsetteamsthreadlimit.rst @@ -0,0 +1,35 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_set_teams_thread_limit: + +omp_set_teams_thread_limit -- Set upper thread limit for teams construct +************************************************************************ + +Description: + Specifies the upper bound for number of threads that will be available + for each team created by the teams construct which does not specify a + ``thread_limit`` clause. The argument of + ``omp_set_teams_thread_limit`` shall be a positive integer. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_set_teams_thread_limit(int thread_limit);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_set_teams_thread_limit(thread_limit)`` + * - + - ``integer, intent(in) :: thread_limit`` + +See also: + :ref:`OMP_TEAMS_THREAD_LIMIT`, :ref:`omp_get_teams_thread_limit`, :ref:`omp_get_thread_limit` + +Reference: + :openmp:`5.1`, Section 3.4.5.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/omptestlock.rst b/libgomp/doc/openmp-runtime-library-routines/omptestlock.rst new file mode 100644 index 0000000..500c12b --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/omptestlock.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_test_lock: + +omp_test_lock -- Test and set simple lock if available +****************************************************** + +Description: + Before setting a simple lock, the lock variable must be initialized by + ``omp_init_lock``. Contrary to ``omp_set_lock``, ``omp_test_lock`` + does not block if the lock is not available. This function returns + ``true`` upon success, ``false`` otherwise. Here, ``true`` and + ``false`` represent their language-specific counterparts. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_test_lock(omp_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_test_lock(svar)`` + * - + - ``integer(omp_lock_kind), intent(inout) :: svar`` + +See also: + :ref:`omp_init_lock`, :ref:`omp_set_lock`, :ref:`omp_set_lock` + +Reference: + :openmp:`4.5`, Section 3.3.6.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/omptestnestlock.rst b/libgomp/doc/openmp-runtime-library-routines/omptestnestlock.rst new file mode 100644 index 0000000..9a6df1c --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/omptestnestlock.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_test_nest_lock: + +omp_test_nest_lock -- Test and set nested lock if available +*********************************************************** + +Description: + Before setting a nested lock, the lock variable must be initialized by + ``omp_init_nest_lock``. Contrary to ``omp_set_nest_lock``, + ``omp_test_nest_lock`` does not block if the lock is not available. + If the lock is already held by the current thread, the new nesting count + is returned. Otherwise, the return value equals zero. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``int omp_test_nest_lock(omp_nest_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``logical function omp_test_nest_lock(nvar)`` + * - + - ``integer(omp_nest_lock_kind), intent(inout) :: nvar`` + +See also: + :ref:`omp_init_lock`, :ref:`omp_set_lock`, :ref:`omp_set_lock` + +Reference: + :openmp:`4.5`, Section 3.3.6.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompunsetlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompunsetlock.rst new file mode 100644 index 0000000..d8940a9 --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompunsetlock.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_unset_lock: + +omp_unset_lock -- Unset simple lock +*********************************** + +Description: + A simple lock about to be unset must have been locked by ``omp_set_lock`` + or ``omp_test_lock`` before. In addition, the lock must be held by the + thread calling ``omp_unset_lock``. Then, the lock becomes unlocked. If one + or more threads attempted to set the lock before, one of them is chosen to, + again, set the lock to itself. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_unset_lock(omp_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_unset_lock(svar)`` + * - + - ``integer(omp_lock_kind), intent(inout) :: svar`` + +See also: + :ref:`omp_set_lock`, :ref:`omp_test_lock` + +Reference: + :openmp:`4.5`, Section 3.3.5.
\ No newline at end of file diff --git a/libgomp/doc/openmp-runtime-library-routines/ompunsetnestlock.rst b/libgomp/doc/openmp-runtime-library-routines/ompunsetnestlock.rst new file mode 100644 index 0000000..a39115d --- /dev/null +++ b/libgomp/doc/openmp-runtime-library-routines/ompunsetnestlock.rst @@ -0,0 +1,36 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _omp_unset_nest_lock: + +omp_unset_nest_lock -- Unset nested lock +**************************************** + +Description: + A nested lock about to be unset must have been locked by ``omp_set_nested_lock`` + or ``omp_test_nested_lock`` before. In addition, the lock must be held by the + thread calling ``omp_unset_nested_lock``. If the nesting count drops to zero, the + lock becomes unlocked. If one ore more threads attempted to set the lock before, + one of them is chosen to, again, set the lock to itself. + +C/C++: + .. list-table:: + + * - *Prototype*: + - ``void omp_unset_nest_lock(omp_nest_lock_t *lock);`` + +Fortran: + .. list-table:: + + * - *Interface*: + - ``subroutine omp_unset_nest_lock(nvar)`` + * - + - ``integer(omp_nest_lock_kind), intent(inout) :: nvar`` + +See also: + :ref:`omp_set_nest_lock` + +Reference: + :openmp:`4.5`, Section 3.3.5.
\ No newline at end of file diff --git a/libgomp/doc/reporting-bugs.rst b/libgomp/doc/reporting-bugs.rst new file mode 100644 index 0000000..46beaf8 --- /dev/null +++ b/libgomp/doc/reporting-bugs.rst @@ -0,0 +1,14 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _reporting-bugs: + +Reporting Bugs +-------------- + +Bugs in the GNU Offloading and Multi Processing Runtime Library should +be reported via `Bugzilla <https://gcc.gnu.org/bugzilla/>`_. Please add +"openacc", or "openmp", or both to the keywords field in the bug +report, as appropriate.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi.rst b/libgomp/doc/the-libgomp-abi.rst new file mode 100644 index 0000000..3b53085 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi.rst @@ -0,0 +1,31 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _the-libgomp-abi: + +The libgomp ABI +--------------- + +The following sections present notes on the external ABI as +presented by libgomp. Only maintainers should need them. + +.. toctree:: + :maxdepth: 2 + + the-libgomp-abi/implementing-master-construct + the-libgomp-abi/implementing-critical-construct + the-libgomp-abi/implementing-atomic-construct + the-libgomp-abi/implementing-flush-construct + the-libgomp-abi/implementing-barrier-construct + the-libgomp-abi/implementing-threadprivate-construct + the-libgomp-abi/implementing-private-clause + the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses + the-libgomp-abi/implementing-reduction-clause + the-libgomp-abi/implementing-parallel-construct + the-libgomp-abi/implementing-for-construct + the-libgomp-abi/implementing-ordered-construct + the-libgomp-abi/implementing-sections-construct + the-libgomp-abi/implementing-single-construct + the-libgomp-abi/implementing-openaccs-parallel-construct
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-atomic-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-atomic-construct.rst new file mode 100644 index 0000000..f66155e --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-atomic-construct.rst @@ -0,0 +1,21 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-atomic-construct: + +Implementing ATOMIC construct +***************************** + +The target should implement the ``__sync`` builtins. + +Failing that we could add + +.. code-block:: c++ + + void GOMP_atomic_enter (void) + void GOMP_atomic_exit (void) + +which reuses the regular lock code, but with yet another lock +object private to the library.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-barrier-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-barrier-construct.rst new file mode 100644 index 0000000..444afcc --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-barrier-construct.rst @@ -0,0 +1,13 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-barrier-construct: + +Implementing BARRIER construct +****************************** + +.. code-block:: c++ + + void GOMP_barrier (void)
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-critical-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-critical-construct.rst new file mode 100644 index 0000000..587163e --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-critical-construct.rst @@ -0,0 +1,30 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-critical-construct: + +Implementing CRITICAL construct +******************************* + +Without a specified name, + +.. code-block:: c++ + + void GOMP_critical_start (void); + void GOMP_critical_end (void); + +so that we don't get COPY relocations from libgomp to the main +application. + +With a specified name, use omp_set_lock and omp_unset_lock with +name being transformed into a variable declared like + +.. code-block:: c++ + + omp_lock_t gomp_critical_user_<name> __attribute__((common)) + +Ideally the ABI would specify that all zero is a valid unlocked +state, and so we wouldn't need to initialize this at +startup.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst b/libgomp/doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst new file mode 100644 index 0000000..cfda2a8 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses.rst @@ -0,0 +1,45 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-firstprivate-lastprivate-copyin-and-copyprivate-clauses: + +Implementing FIRSTPRIVATE LASTPRIVATE COPYIN and COPYPRIVATE clauses +******************************************************************** + +This seems simple enough for PARALLEL blocks. Create a private +struct for communicating between the parent and subfunction. +In the parent, copy in values for scalar and "small" structs; +copy in addresses for others TREE_ADDRESSABLE types. In the +subfunction, copy the value into the local variable. + +It is not clear what to do with bare FOR or SECTION blocks. +The only thing I can figure is that we do something like: + +.. code-block:: c++ + + #pragma omp for firstprivate(x) lastprivate(y) + for (int i = 0; i < n; ++i) + body; + +which becomes + +.. code-block:: c++ + + { + int x = x, y; + + // for stuff + + if (i == n) + y = y; + } + +where the "x=x" and "y=y" assignments actually have different +uids for the two variables, i.e. not something you could write +directly in C. Presumably this only makes sense if the "outer" +x and y are global variables. + +COPYPRIVATE would work the same way, except the structure +broadcast would have to happen via SINGLE machinery instead.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-flush-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-flush-construct.rst new file mode 100644 index 0000000..9f9419e --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-flush-construct.rst @@ -0,0 +1,11 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-flush-construct: + +Implementing FLUSH construct +**************************** + +Expands to the ``__sync_synchronize`` builtin.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-for-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-for-construct.rst new file mode 100644 index 0000000..5291465 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-for-construct.rst @@ -0,0 +1,73 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-for-construct: + +Implementing FOR construct +************************** + +.. code-block:: c++ + + #pragma omp parallel for + for (i = lb; i <= ub; i++) + body; + +becomes + +.. code-block:: c++ + + void subfunction (void *data) + { + long _s0, _e0; + while (GOMP_loop_static_next (&_s0, &_e0)) + { + long _e1 = _e0, i; + for (i = _s0; i < _e1; i++) + body; + } + GOMP_loop_end_nowait (); + } + + GOMP_parallel_loop_static (subfunction, NULL, 0, lb, ub+1, 1, 0); + subfunction (NULL); + GOMP_parallel_end (); + +.. code-block:: c++ + + #pragma omp for schedule(runtime) + for (i = 0; i < n; i++) + body; + +becomes + +.. code-block:: c++ + + { + long i, _s0, _e0; + if (GOMP_loop_runtime_start (0, n, 1, &_s0, &_e0)) + do { + long _e1 = _e0; + for (i = _s0, i < _e0; i++) + body; + } while (GOMP_loop_runtime_next (&_s0, _&e0)); + GOMP_loop_end (); + } + +Note that while it looks like there is trickiness to propagating +a non-constant STEP, there isn't really. We're explicitly allowed +to evaluate it as many times as we want, and any variables involved +should automatically be handled as PRIVATE or SHARED like any other +variables. So the expression should remain evaluable in the +subfunction. We can also pull it into a local variable if we like, +but since its supposed to remain unchanged, we can also not if we like. + +If we have SCHEDULE(STATIC), and no ORDERED, then we ought to be +able to get away with no work-sharing context at all, since we can +simply perform the arithmetic directly in each thread to divide up +the iterations. Which would mean that we wouldn't need to call any +of these routines. + +There are separate routines for handling loops with an ORDERED +clause. Bookkeeping for that is non-trivial...
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-master-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-master-construct.rst new file mode 100644 index 0000000..29e085c --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-master-construct.rst @@ -0,0 +1,18 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-master-construct: + +Implementing MASTER construct +***************************** + +.. code-block:: c++ + + if (omp_get_thread_num () == 0) + block + +Alternately, we generate two copies of the parallel subfunction +and only include this in the version run by the primary thread. +Surely this is not worthwhile though...
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-openaccs-parallel-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-openaccs-parallel-construct.rst new file mode 100644 index 0000000..03b9053 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-openaccs-parallel-construct.rst @@ -0,0 +1,13 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-openacc's-parallel-construct: + +Implementing OpenACC's PARALLEL construct +***************************************** + +.. code-block:: c++ + + void GOACC_parallel ()
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-ordered-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-ordered-construct.rst new file mode 100644 index 0000000..2c5a196 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-ordered-construct.rst @@ -0,0 +1,14 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-ordered-construct: + +Implementing ORDERED construct +****************************** + +.. code-block:: c++ + + void GOMP_ordered_start (void) + void GOMP_ordered_end (void)
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-parallel-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-parallel-construct.rst new file mode 100644 index 0000000..c2f0dc3 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-parallel-construct.rst @@ -0,0 +1,55 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-parallel-construct: + +Implementing PARALLEL construct +******************************* + +.. code-block:: c++ + + #pragma omp parallel + { + body; + } + +becomes + +.. code-block:: c++ + + void subfunction (void *data) + { + use data; + body; + } + + setup data; + GOMP_parallel_start (subfunction, &data, num_threads); + subfunction (&data); + GOMP_parallel_end (); + +.. code-block:: c++ + + void GOMP_parallel_start (void (*fn)(void *), void *data, unsigned num_threads) + +The :samp:`{FN}` argument is the subfunction to be run in parallel. + +The :samp:`{DATA}` argument is a pointer to a structure used to +communicate data in and out of the subfunction, as discussed +above with respect to FIRSTPRIVATE et al. + +The :samp:`{NUM_THREADS}` argument is 1 if an IF clause is present +and false, or the value of the NUM_THREADS clause, if +present, or 0. + +The function needs to create the appropriate number of +threads and/or launch them from the dock. It needs to +create the team structure and assign team ids. + +.. code-block:: c++ + + void GOMP_parallel_end (void) + +Tears down the team and returns us to the previous ``omp_in_parallel()`` state.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-private-clause.rst b/libgomp/doc/the-libgomp-abi/implementing-private-clause.rst new file mode 100644 index 0000000..9b36da6 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-private-clause.rst @@ -0,0 +1,17 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-private-clause: + +Implementing PRIVATE clause +*************************** + +In association with a PARALLEL, or within the lexical extent +of a PARALLEL block, the variable becomes a local variable in +the parallel subfunction. + +In association with FOR or SECTIONS blocks, create a new +automatic variable within the current function. This preserves +the semantic of new variable creation.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-reduction-clause.rst b/libgomp/doc/the-libgomp-abi/implementing-reduction-clause.rst new file mode 100644 index 0000000..5db34e0 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-reduction-clause.rst @@ -0,0 +1,15 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-reduction-clause: + +Implementing REDUCTION clause +***************************** + +The private struct mentioned in the previous section should have +a pointer to an array of the type of the variable, indexed by the +thread's :samp:`{team_id}`. The thread stores its final value into the +array, and after the barrier, the primary thread iterates over the +array to collect the values.
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-sections-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-sections-construct.rst new file mode 100644 index 0000000..4fcdf49 --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-sections-construct.rst @@ -0,0 +1,42 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-sections-construct: + +Implementing SECTIONS construct +******************************* + +A block as + +.. code-block:: c++ + + #pragma omp sections + { + #pragma omp section + stmt1; + #pragma omp section + stmt2; + #pragma omp section + stmt3; + } + +becomes + +.. code-block:: c++ + + for (i = GOMP_sections_start (3); i != 0; i = GOMP_sections_next ()) + switch (i) + { + case 1: + stmt1; + break; + case 2: + stmt2; + break; + case 3: + stmt3; + break; + } + GOMP_barrier ();
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-single-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-single-construct.rst new file mode 100644 index 0000000..2919e6b --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-single-construct.rst @@ -0,0 +1,48 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-single-construct: + +Implementing SINGLE construct +***************************** + +A block like + +.. code-block:: c++ + + #pragma omp single + { + body; + } + +becomes + +.. code-block:: c++ + + if (GOMP_single_start ()) + body; + GOMP_barrier (); + +while + +.. code-block:: c++ + + #pragma omp single copyprivate(x) + body; + +becomes + +.. code-block:: c++ + + datap = GOMP_single_copy_start (); + if (datap == NULL) + { + body; + data.x = x; + GOMP_single_copy_end (&data); + } + else + x = datap->x; + GOMP_barrier ();
\ No newline at end of file diff --git a/libgomp/doc/the-libgomp-abi/implementing-threadprivate-construct.rst b/libgomp/doc/the-libgomp-abi/implementing-threadprivate-construct.rst new file mode 100644 index 0000000..0ea107e --- /dev/null +++ b/libgomp/doc/the-libgomp-abi/implementing-threadprivate-construct.rst @@ -0,0 +1,18 @@ +.. + Copyright 1988-2022 Free Software Foundation, Inc. + This is part of the GCC manual. + For copying conditions, see the copyright.rst file. + +.. _implementing-threadprivate-construct: + +Implementing THREADPRIVATE construct +************************************ + +In _most_ cases we can map this directly to ``__thread``. Except +that OMP allows constructors for C++ objects. We can either +refuse to support this (how often is it used?) or we can +implement something akin to .ctors. + +Even more ideally, this ctor feature is handled by extensions +to the main pthreads library. Failing that, we can have a set +of entry points to register ctor functions to be called.
\ No newline at end of file |