* [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status @ 2022-05-14 21:27 Tobias Burnus 2022-05-16 9:42 ` Tobias Burnus 2022-05-16 10:06 ` Gerald Pfeifer 0 siblings, 2 replies; 10+ messages in thread From: Tobias Burnus @ 2022-05-14 21:27 UTC (permalink / raw) To: Jakub Jelinek, Gerald Pfeifer, gcc-patches [-- Attachment #1: Type: text/plain, Size: 874 bytes --] Jakub and I discussed the other day that it would be useful to have a page similar to https://gcc.gnu.org/projects/cxx-status.html to provide by-GCC-version information of the which OpenMP are supported. The list is based on * https://gcc.gnu.org/onlinedocs/libgomp/OpenMP-Implementation-Status.html * Some revision archeology by Jakub * Plus added 5.2 list. Comments regarding the file, where it is placed and how it is linked to? I found it simpler to have a single very long line rather than trying to break it into 80-character lines, but I can also do this reformatting. Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 [-- Attachment #2: omp-status.diff --] [-- Type: text/x-patch, Size: 17433 bytes --] Add OpenMP by-GCC-version implementation status * htdocs/projects/gomp/openmp-status.html: New. * htdocs/projects/gomp/index.html: Link it. htdocs/projects/gomp/index.html | 15 ++- htdocs/projects/gomp/openmp-status.html | 202 ++++++++++++++++++++++++++++++++ 2 files changed, 211 insertions(+), 6 deletions(-) diff --git a/htdocs/projects/gomp/index.html b/htdocs/projects/gomp/index.html index 59697c10..81096578 100644 --- a/htdocs/projects/gomp/index.html +++ b/htdocs/projects/gomp/index.html @@ -54,18 +54,21 @@ projects.</p> extensions to target language parsers. A long-term goal is the generation of efficient and small code for OpenMP applications.</p> +<h2>Documentation</h2> +<ul> + <li><a href="openmp-status.html">OpenMP Implementation status</a></li> + <li><a href="https://gcc.gnu.org/onlinedocs/libgomp/">Online + documentation</a> of libgomp, the GOMP support library</li> +</ul> + <h2>Contributing</h2> <p>We encourage everyone to <a href="../../contribute.html">contribute changes</a> and help test GOMP. GOMP has been merged into mainline GCC.</p> <h2>Reporting Bugs</h2> -<p>Please add "openmp" to the keywords field when filing a bug report.</p> - -<h2>Documentation</h2> -<p>libgomp, the GOMP support library, has -<a href="https://gcc.gnu.org/onlinedocs/libgomp/">online documentation</a> -available.</p> +<p>Please add <q>openmp</q> to the keywords field when filling a +<a href="https://gcc.gnu.org/bugzilla/">bug report</a>.</p> <h2>Status</h2> <dl> diff --git a/htdocs/projects/gomp/openmp-status.html b/htdocs/projects/gomp/openmp-status.html new file mode 100644 index 00000000..37dcefa5 --- /dev/null +++ b/htdocs/projects/gomp/openmp-status.html @@ -0,0 +1,202 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<title>OpenMP Implementation Status in GCC</title> +<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" /> +</head> + +<body> +<h1>OpenMP Implementation Status in GCC</h1> + +<p>Disclaimer: A feature might be only fully supported in a later GCC version +than listed, depending on resolved corner cases and optimizations.</p> + +<p>Features added by OpenMP version</p> +<ul> + <li><a href="#omp4.5">OpenMP 4.5</a></li> + <li><a href="#omp5.0">OpenMP 5.0</a></li> + <li><a href="#omp5.1">OpenMP 5.1</a></li> + <li><a href="#omp5.2">OpenMP 5.2</a></li> +</ul> + +<p>OpenMP implementation status in the online documentation:</p> +<ul> + <li><a + href="https://gcc.gnu.org/onlinedocs/libgomp/OpenMP-Implementation-Status.html" + >Mainline (GCC 13)</a></li> + <li><a + href="https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/OpenMP-Implementation-Status.html" + >GCC 12</a></li> +</ul> + + +<h2 id="omp4.5">OpenMP 4.5</h2> + +<ul> + <li><strong>C/C++:</strong> Supported since GCC 6</li> + <li><strong>Fortran:</strong> Partial support since GCC 7, full support since GCC 11</li> +</ul> + + +<h2 id="omp5.0">OpenMP 5.0</h2> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td><code>in_reduction</code> clause on task constructs</td><td>GCC 9</td><td></td></tr> +<tr><td>Supporting C++'s range-based for loop</td><td>GCC 9</td><td></td></tr> +<tr><td>Iterators</td><td>GCC 9</td><td></td></tr> +<tr><td>!= as relational-op in canonical loop form for C/C++</td><td>GCC 9</td><td></td></tr> +<tr><td>C/C++'s lvalue expressions in <code>depend</code> clauses</td><td>GCC 9</td><td></td></tr> +<tr><td><code>mutexinoutset</code> <em>dependence-type</em> for <code>depend</code> clause</td><td>GCC 9</td><td></td></tr> +<tr><td><code>depobj</code> construct and depend objects </td><td>GCC 9</td><td></td></tr> +<tr><td><code>depend</code> clause on <code>taskwait</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>teams</code> construct outside an enclosing target region</td><td>GCC 9</td><td></td></tr> +<tr><td>Clauses <code>if</code>, <code>nontemporal</code> and <code>order(concurrent)</code> in <code>simd</code> construct</td><td>GCC 9/GCC 10</td><td></td></tr> +<tr><td><code>defaultmap</code> extensions</td><td>GCC 9</td><td></td></tr> +<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>stub only</td></tr> +<tr><td>Weak memory ordering clauses on <code>atomic</code> and <code>flush</code> construct</td><td>GCC 9</td><td></td></tr> +<tr><td>Combined master constructs</td><td>GCC 9</td><td></td></tr> +<tr><td>Runtime routines and environment variables to display runtimethread affinity information</td><td>GCC 9</td><td></td></tr> +<tr><td><code>omp_pause_resource</code> and <code>omp_pause_resource_all</code> runtime routines</td><td>GCC 9</td><td></td></tr> +<tr><td><code>nonmonotonic</code> as default loop schedule modifier for worksharing-loop constructs</td><td>GCC 9</td><td></td></tr> +<tr><td><code>atomic</code> constructs in <code>simd</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>task_reduction</code> clause with <code>taskgroup</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>task</code> modifier to <code>reduction</code> clause</td><td>GCC 9</td><td></td></tr> +<tr><td><code>reduction</code> and <code>in_reduction</code> clauses on <code>taskloop</code> and <code>taskloop simd</code> constructs</td><td>GCC 9</td><td></td></tr> +<tr><td><code>taskloop</code> construct cancelable by <code>cancel</code> construct</td><td>GCC 9</td><td></td></tr> +<tr><td>Lock hints were renamed to synchronization hints</td><td>GCC 9</td><td></td></tr> +<tr><td><code>requires</code> directive</td><td>GCC 9<br>GCC 12<br>–</td><td>(<code>atomic_default_mem_order</code>)<br>(<code>dynamic_allocators</code>)<br>rest parsing only</td></tr> +<tr><td><code>conditional</code> modifier to <code>lastprivate</code> clause</td><td>GCC 10</td><td></td></tr> +<tr><td><code>scan</code> directive and <code>in_scan</code> modifier for the <code>reduction clause</code></td><td>GCC 10</td><td></td></tr> +<tr><td><code>order(concurrent)</code> clause</td><td>GCC 10</td><td></td></tr> +<tr><td><code>loop</code> construct</td><td>GCC 10</td><td></td></tr> +<tr><td><code>declare variant</code> directive</td><td>GCC 10/GCC 11</td><td><em>simd</em> traits not handled correctly</td></tr> +<tr><td><code>use_device_addr</code> clause on <code>target data</code></td><td>GCC 10</td><td></td></tr> +<tr><td>Nested <code>declare target</code> directive</td><td>GCC 10</td><td></td></tr> +<tr><td><code>allocate</code> clause</td><td>GCC 11</td><td>Initial support</td></tr> +<tr><td><em>target-offload-var</em> ICV and <code>OMP_TARGET_OFFLOAD</code> env variable</td><td>GCC 11</td><td></td></tr> +<tr><td>Predefined memory spaces, memory allocators, allocator traits</td><td>GCC 11</td><td>Some are only stubs</td></tr> +<tr><td>Non-rectangular loop nests</td><td>GCC 11</td><td>Only C/C++</td></tr> +<tr><td>Nested-parallel changes to <em>max-active-levels-var</em> ICV</td><td>GCC 11</td><td></td></tr> +<tr><td><code>detach</code> clause to <code>task</code> construct</td><td>GCC 11</td><td></td></tr> +<tr><td><code>omp_fulfill_event</code> runtime routine</td><td>GCC 11</td><td></td></tr> +<tr><td>Memory management routines</td><td>GCC 11</td><td></td></tr> +<tr><td>Implicit <code>declare target</code> directive</td><td>GCC 11</td><td></td></tr> +<tr><td><code>omp_get_supported_active_levels</code> routine</td><td>GCC 11</td><td></td></tr> +<tr><td><code>in_reduction</code> clause on <code>target</code> constructs</td><td>GCC 12</td><td><code>nowait</code> only stub</td></tr> +<tr><td><code>affinity</code> clause to <code>task</code> construct</td><td>GCC 12</td><td>Stub only</td></tr> +<tr><td><code>close</code> <em>map-type-modifier</em></td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_get_device_num</code> runtime routine</td><td>GCC 12</td><td></td></tr> +<tr><td><code>ancestor</code> modifier on <code>device</code> clause</td><td>GCC 12</td><td>Reverse offload unsupported</td></tr> +<tr><td>Mapping C/C++ pointer variables and to assign the address of device memory mapped by an array section</td><td>GCC 12</td><td></td></tr> +<tr><td>Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables</td><td>GCC 12</td><td>Mapping of vars with allocatable components unsupported</td></tr> +<tr><td>Map-order clarifications</td><td>GCC?</td><td></td></tr> +<tr><td>Array shaping</td><td>N</td><td></td></tr> +<tr><td>Array sections with non-unit strides in C and C++</td><td>N</td><td></td></tr> +<tr><td><code>metadirective</code> directive</td><td>N</td><td></td></tr> +<tr><td>Collapse of associated loops that are imperfectly nested loops</td><td>N</td><td></td></tr> +<tr><td><code>allocate</code> directive</td><td>N</td><td></td></tr> +<tr><td>Discontiguous array section with <code>target update</code> construct</td><td>N</td><td></td></tr> +<tr><td>C/C++'s lvalue expressions in <code>to</code>, <code>from</code> and <code>map</code> clauses</td><td>N</td><td></td></tr> +<tr><td><code>declare mapper</code> directive</td><td>N</td><td></td></tr> +<tr><td>OMPT interface</td><td>N</td><td></td></tr> +<tr><td>OMPD interface</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h2 id="omp5.1">OpenMP 5.1</h2> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td>OpenMP directive as C++ attribute specifiers</td><td>GCC 12</td><td></td></tr> +<tr><td><code>nothing</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>error</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>masked</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>scope</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>strict</code> modifier in the <code>grainsize</code> and <code>num_tasks</code> clauses of the <code>taskloop</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>align</code> clause/modifier in <code>allocate</code> directive/clause and <code>allocator</code> directive</td><td>GCC 12</td><td>C/C++ on clause only</td></tr> +<tr><td><code>thread_limit</code> clause to <code>target</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>has_device_addr</code> clause to <code>target construct</code></td><td>GCC 12</td><td></td></tr> +<tr><td>Extensions to the <code>atomic</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>seq_cst</code> clause on a <code>flush construct</code></td><td>GCC 12</td><td></td></tr> +<tr><td><code>private</code> and <code>firstprivate</code> argument to <code>default</code> clause in C and C++</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_set_num_teams</code>, <code>omp_set_teams_thread_limit</code>, <code>omp_get_max_teams</code>, <code>omp_get_teams_thread_limit</code> runtime routines</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_calloc</code>, <code>omp_realloc</code>, <code>omp_aligned_alloc</code>, and <code>omp_aligned_callocruntime</code> routines</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_alloctrait_key_t</code> enum: <code>omp_atv_serialized</code> added, <code>omp_atv_default</code> changed</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_display_env</code> runtime routine</td><td>GCC 12</td><td>Not inside target regions</td></tr> +<tr><td><code>OMP_PLACES</code> syntax extensions</td><td>GCC 12</td><td></td></tr> +<tr><td><code>OMP_NUM_TEAMS</code> and <code>OMP_TEAMS_THREAD_LIMIT</code> env variables</td><td>GCC 12</td><td></td></tr> +<tr><td>Support of strictly structured blocks in Fortran</td><td>GCC 12</td><td></td></tr> +<tr><td>Support of structured block sequences in C/C++</td><td>GCC 12</td><td></td></tr> +<tr><td><code>unconstrained</code> and <code>reproducible</code> modifiers on <code>order</code> clause</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_target_is_accessible</code> runtime routine</td><td>GCC 13</td><td></td></tr> +<tr><td><code>omp_all_memory</code> reserved locator</td><td>GCC 13</td><td></td></tr> +<tr><td><em>target_device trait</em> in OpenMP Context</td><td>N</td><td></td></tr> +<tr><td><code>target_device</code> selector set in context selectors</td><td>N</td><td></td></tr> +<tr><td>C/C++'s <code>declare variant</code> directive: elision support of preprocessed code</td><td>N</td><td></td></tr> +<tr><td><code>declare variant</code>: new clauses <code>adjust_args</code> and <code>append_args</code></td><td>N</td><td></td></tr> +<tr><td><code>dispatch</code> construct</td><td>N</td><td></td></tr> +<tr><td>device-specific ICV settings the environment variables</td><td>N</td><td></td></tr> +<tr><td><code>assume</code> directive</td><td>N</td><td></td></tr> +<tr><td>Loop transformation constructs</td><td>N</td><td></td></tr> +<tr><td>iterators in <code>target update</code> motion clauses and map clauses</td><td>N</td><td></td></tr> +<tr><td>indirect calls to the device version of a procedure or function in target regions</td><td>N</td><td></td></tr> +<tr><td><code>interop</code> directive</td><td>N</td><td></td></tr> +<tr><td><code>omp_interop_t</code> object support in runtime routines</td><td>N</td><td></td></tr> +<tr><td><code>nowait</code> clause in <code>taskwait</code> directive</td><td>N</td><td></td></tr> +<tr><td><code>inoutset</code> argument to the <code>depend</code> clause</td><td>N</td><td></td></tr> +<tr><td><code>present</code> argument to <code>defaultmap</code> clause</td><td>N</td><td></td></tr> +<tr><td><code>omp_target_memcpy_async</code> and <code>omp_target_memcpy_rect_async</code> runtime routines</td><td>N</td><td></td></tr> +<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>N</td><td></td></tr> +<tr><td><code>ompt_scope_endpoint_t</code> enum: <code>ompt_scope_beginend</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_sync_region_t</code> enum additions</td><td>N</td><td></td></tr> +<tr><td><code>ompt_state_t</code> enum: <code>ompt_state_wait_barrier_implementation</code> and <code>ompt_state_wait_barrier_teams</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_target_data_op_emi_t</code>, <code>ompt_callback_target_emi_t</code>, <code>ompt_callback_target_map_emi_t</code> and <code>ompt_callback_target_submit_emi_t</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_error_t</code> type</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h2 id="omp5.2">OpenMP 5.2</h2> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td><code>omp_in_explicit_task</code> routine and <em>implicit-task-var</em> ICV</td><td>N</td><td></td></tr> +<tr><td><code>omp</code>/<code>ompx</code>/<code>ompx</code> sentinels and <code>omp_</code>/<code>ompx_</code> namespaces</td><td>N</td><td></td></tr> +<tr><td>Clauses on <code>end</code> directive can be on directive</td><td>N</td><td></td></tr> +<tr><td>Deprecation of no-argument <code>destroy</code> clause on <code>depobj</code></td><td>N</td><td></td></tr> +<tr><td><code>linear</code> clause syntax changes and <code>step</code> modifier</td><td>N</td><td></td></tr> +<tr><td>Deprecation of minus operator for reductions</td><td>N</td><td></td></tr> +<tr><td>Deprecation of separating <code>map</code> modifiers without comma</td><td>N</td><td></td></tr> +<tr><td><code>declare mapper</code> with iterator and <code>present</code> modifiers</td><td>N</td><td></td></tr> +<tr><td>If a matching mapped list item is not found in the data environment, the pointer retains its original value</td><td>N</td><td></td></tr> +<tr><td>New <code>enter</code> clause replacing <code>to</code> on declare target directive</td><td>N</td><td></td></tr> +<tr><td>Extended list of directives permitted in Fortran pure procedures</td><td>N</td><td></td></tr> +<tr><td>New <code>allocators</code> directive for Fortran</td><td>N</td><td></td></tr> +<tr><td>Optional paired <code>end</code> directive with <code>dispatch</code></td><td>N</td><td></td></tr> +<tr><td>New <code>memspace</code> and <code>traits</code> modifiers for <code>uses_allocators</code></td><td>N</td><td></td></tr> +<tr><td>New <code>otherwise</code> clause replacing <code>default</code> on metadirectives</td><td>N</td><td></td></tr> +<tr><td>Deprecation of delimited form of <code>declare target</code></td><td>N</td><td></td></tr> +<tr><td>Reproducible semantics changed for <code>order(concurrent)</code></td><td>N</td><td></td></tr> +<tr><td><code>allocate</code> and <code>firstprivate</code> clauses on <code>scope</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_work</code></td><td>N</td><td></td></tr> +<tr><td>Extended map-type handling of <code>target enter/exit data</code></td><td>N</td><td></td></tr> +<tr><td>New <code>doacross</code> clause replacing <code>depend</code> with <code>sourch</code>/<code>sink</code> modifier</td><td>N</td><td></td></tr> +<tr><td><code>omp_cur_iteration</code> keyword</td><td>N</td><td></td></tr> +</tbody> +</table> + +</body> +</html> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-14 21:27 [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status Tobias Burnus @ 2022-05-16 9:42 ` Tobias Burnus 2022-05-17 7:54 ` Gerald Pfeifer 2022-05-17 8:21 ` Jakub Jelinek 2022-05-16 10:06 ` Gerald Pfeifer 1 sibling, 2 replies; 10+ messages in thread From: Tobias Burnus @ 2022-05-16 9:42 UTC (permalink / raw) To: Jakub Jelinek, Gerald Pfeifer, gcc-patches [-- Attachment #1: Type: text/plain, Size: 2830 bytes --] Hi all, small update (interdiff): s/s/S/ for consistency, missed one GCC 13 commit, and improved wording of the enter/exit change. (New wording better captures the effect; I was thinking too much of the changed spec wording not of the effective result.) Plus added some cross-ref hyperlinks to make finding the documentation easier: --- a/htdocs/projects/gomp/openmp-status.html +++ b/htdocs/projects/gomp/openmp-status.html @@ -25,0 +26 @@ + <li><a href="index.html">GOMP project page</a></li> @@ -61 +61 @@ -<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>stub only</td></tr> +<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>Stub only</td></tr> @@ -141,0 +142 @@ +<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC 13</td><td></td></tr> @@ -159 +159,0 @@> -<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>N</td><td></td></tr> @@ -195 +195 @@ -<tr><td>Extended map-type handling of <code>target enter/exit data</code></td><td>N</td><td></td></tr> +<tr><td>Default map type for <code>map</code> clause in <code>target enter/exit data</code></td><td>N</td><td></td></tr> --- a/htdocs/projects/index.html +++ b/htdocs/projects/index.html @@ -32,0 +33 @@ help develop GCC:</p> +<li><a href="gomp/openmp-status.html">Implementing missing OpenMP features.</a></li> I will incorporate the 5.2 wording change in my libgomp.texi patch. (I think the s/stub/Stub/ change is already there and I know the N→Y change is in the .texi.) Otherwise, the same boilerplate applies: On 14.05.22 23:27, Tobias Burnus wrote: > Jakub and I discussed the other day that it would be useful > to have a page similar to > https://gcc.gnu.org/projects/cxx-status.html > to provide by-GCC-version information of the which OpenMP are supported. > > The list is based on > * > https://gcc.gnu.org/onlinedocs/libgomp/OpenMP-Implementation-Status.html > * Some revision archeology by Jakub > * Plus added 5.2 list. > > Comments regarding the file, where it is placed and how it is linked to? > I found it simpler to have a single very long line rather than trying > to break it into 80-character lines, but I can also do this reformatting. Tobias PS: Full patch attached. PPS: I think we should consider to further cleanup/consolidate both the generic gomp landing page and the http://gcc.gnu.org/wiki/openmp wiki. Current the information is too far spread and too difficult to find. ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 [-- Attachment #2: omp-status-v2.diff --] [-- Type: text/x-patch, Size: 18143 bytes --] htdocs/projects/gomp/index.html | 15 ++- htdocs/projects/gomp/openmp-status.html | 203 ++++++++++++++++++++++++++++++++ htdocs/projects/index.html | 1 + 3 files changed, 213 insertions(+), 6 deletions(-) diff --git a/htdocs/projects/gomp/index.html b/htdocs/projects/gomp/index.html index 59697c10..81096578 100644 --- a/htdocs/projects/gomp/index.html +++ b/htdocs/projects/gomp/index.html @@ -54,18 +54,21 @@ projects.</p> extensions to target language parsers. A long-term goal is the generation of efficient and small code for OpenMP applications.</p> +<h2>Documentation</h2> +<ul> + <li><a href="openmp-status.html">OpenMP Implementation status</a></li> + <li><a href="https://gcc.gnu.org/onlinedocs/libgomp/">Online + documentation</a> of libgomp, the GOMP support library</li> +</ul> + <h2>Contributing</h2> <p>We encourage everyone to <a href="../../contribute.html">contribute changes</a> and help test GOMP. GOMP has been merged into mainline GCC.</p> <h2>Reporting Bugs</h2> -<p>Please add "openmp" to the keywords field when filing a bug report.</p> - -<h2>Documentation</h2> -<p>libgomp, the GOMP support library, has -<a href="https://gcc.gnu.org/onlinedocs/libgomp/">online documentation</a> -available.</p> +<p>Please add <q>openmp</q> to the keywords field when filling a +<a href="https://gcc.gnu.org/bugzilla/">bug report</a>.</p> <h2>Status</h2> <dl> diff --git a/htdocs/projects/gomp/openmp-status.html b/htdocs/projects/gomp/openmp-status.html new file mode 100644 index 00000000..58e55c89 --- /dev/null +++ b/htdocs/projects/gomp/openmp-status.html @@ -0,0 +1,203 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +<title>OpenMP Implementation Status in GCC</title> +<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" /> +</head> + +<body> +<h1>OpenMP Implementation Status in GCC</h1> + +<p>Disclaimer: A feature might be only fully supported in a later GCC version +than listed, depending on resolved corner cases and optimizations.</p> + +<p>Features added by OpenMP version</p> +<ul> + <li><a href="#omp4.5">OpenMP 4.5</a></li> + <li><a href="#omp5.0">OpenMP 5.0</a></li> + <li><a href="#omp5.1">OpenMP 5.1</a></li> + <li><a href="#omp5.2">OpenMP 5.2</a></li> +</ul> + +<p>OpenMP implementation status in the online documentation:</p> +<ul> + <li><a href="index.html">GOMP project page</a></li> + <li><a + href="https://gcc.gnu.org/onlinedocs/libgomp/OpenMP-Implementation-Status.html" + >Mainline (GCC 13)</a></li> + <li><a + href="https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/OpenMP-Implementation-Status.html" + >GCC 12</a></li> +</ul> + + +<h2 id="omp4.5">OpenMP 4.5</h2> + +<ul> + <li><strong>C/C++:</strong> Supported since GCC 6</li> + <li><strong>Fortran:</strong> Partial support since GCC 7, full support since GCC 11</li> +</ul> + + +<h2 id="omp5.0">OpenMP 5.0</h2> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td><code>in_reduction</code> clause on task constructs</td><td>GCC 9</td><td></td></tr> +<tr><td>Supporting C++'s range-based for loop</td><td>GCC 9</td><td></td></tr> +<tr><td>Iterators</td><td>GCC 9</td><td></td></tr> +<tr><td>!= as relational-op in canonical loop form for C/C++</td><td>GCC 9</td><td></td></tr> +<tr><td>C/C++'s lvalue expressions in <code>depend</code> clauses</td><td>GCC 9</td><td></td></tr> +<tr><td><code>mutexinoutset</code> <em>dependence-type</em> for <code>depend</code> clause</td><td>GCC 9</td><td></td></tr> +<tr><td><code>depobj</code> construct and depend objects </td><td>GCC 9</td><td></td></tr> +<tr><td><code>depend</code> clause on <code>taskwait</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>teams</code> construct outside an enclosing target region</td><td>GCC 9</td><td></td></tr> +<tr><td>Clauses <code>if</code>, <code>nontemporal</code> and <code>order(concurrent)</code> in <code>simd</code> construct</td><td>GCC 9/GCC 10</td><td></td></tr> +<tr><td><code>defaultmap</code> extensions</td><td>GCC 9</td><td></td></tr> +<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>Stub only</td></tr> +<tr><td>Weak memory ordering clauses on <code>atomic</code> and <code>flush</code> construct</td><td>GCC 9</td><td></td></tr> +<tr><td>Combined master constructs</td><td>GCC 9</td><td></td></tr> +<tr><td>Runtime routines and environment variables to display runtimethread affinity information</td><td>GCC 9</td><td></td></tr> +<tr><td><code>omp_pause_resource</code> and <code>omp_pause_resource_all</code> runtime routines</td><td>GCC 9</td><td></td></tr> +<tr><td><code>nonmonotonic</code> as default loop schedule modifier for worksharing-loop constructs</td><td>GCC 9</td><td></td></tr> +<tr><td><code>atomic</code> constructs in <code>simd</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>task_reduction</code> clause with <code>taskgroup</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>task</code> modifier to <code>reduction</code> clause</td><td>GCC 9</td><td></td></tr> +<tr><td><code>reduction</code> and <code>in_reduction</code> clauses on <code>taskloop</code> and <code>taskloop simd</code> constructs</td><td>GCC 9</td><td></td></tr> +<tr><td><code>taskloop</code> construct cancelable by <code>cancel</code> construct</td><td>GCC 9</td><td></td></tr> +<tr><td>Lock hints were renamed to synchronization hints</td><td>GCC 9</td><td></td></tr> +<tr><td><code>requires</code> directive</td><td>GCC 9<br>GCC 12<br>–</td><td>(<code>atomic_default_mem_order</code>)<br>(<code>dynamic_allocators</code>)<br>rest parsing only</td></tr> +<tr><td><code>conditional</code> modifier to <code>lastprivate</code> clause</td><td>GCC 10</td><td></td></tr> +<tr><td><code>scan</code> directive and <code>in_scan</code> modifier for the <code>reduction clause</code></td><td>GCC 10</td><td></td></tr> +<tr><td><code>order(concurrent)</code> clause</td><td>GCC 10</td><td></td></tr> +<tr><td><code>loop</code> construct</td><td>GCC 10</td><td></td></tr> +<tr><td><code>declare variant</code> directive</td><td>GCC 10/GCC 11</td><td><em>simd</em> traits not handled correctly</td></tr> +<tr><td><code>use_device_addr</code> clause on <code>target data</code></td><td>GCC 10</td><td></td></tr> +<tr><td>Nested <code>declare target</code> directive</td><td>GCC 10</td><td></td></tr> +<tr><td><code>allocate</code> clause</td><td>GCC 11</td><td>Initial support</td></tr> +<tr><td><em>target-offload-var</em> ICV and <code>OMP_TARGET_OFFLOAD</code> env variable</td><td>GCC 11</td><td></td></tr> +<tr><td>Predefined memory spaces, memory allocators, allocator traits</td><td>GCC 11</td><td>Some are only stubs</td></tr> +<tr><td>Non-rectangular loop nests</td><td>GCC 11</td><td>Only C/C++</td></tr> +<tr><td>Nested-parallel changes to <em>max-active-levels-var</em> ICV</td><td>GCC 11</td><td></td></tr> +<tr><td><code>detach</code> clause to <code>task</code> construct</td><td>GCC 11</td><td></td></tr> +<tr><td><code>omp_fulfill_event</code> runtime routine</td><td>GCC 11</td><td></td></tr> +<tr><td>Memory management routines</td><td>GCC 11</td><td></td></tr> +<tr><td>Implicit <code>declare target</code> directive</td><td>GCC 11</td><td></td></tr> +<tr><td><code>omp_get_supported_active_levels</code> routine</td><td>GCC 11</td><td></td></tr> +<tr><td><code>in_reduction</code> clause on <code>target</code> constructs</td><td>GCC 12</td><td><code>nowait</code> only stub</td></tr> +<tr><td><code>affinity</code> clause to <code>task</code> construct</td><td>GCC 12</td><td>Stub only</td></tr> +<tr><td><code>close</code> <em>map-type-modifier</em></td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_get_device_num</code> runtime routine</td><td>GCC 12</td><td></td></tr> +<tr><td><code>ancestor</code> modifier on <code>device</code> clause</td><td>GCC 12</td><td>Reverse offload unsupported</td></tr> +<tr><td>Mapping C/C++ pointer variables and to assign the address of device memory mapped by an array section</td><td>GCC 12</td><td></td></tr> +<tr><td>Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables</td><td>GCC 12</td><td>Mapping of vars with allocatable components unsupported</td></tr> +<tr><td>Map-order clarifications</td><td>GCC?</td><td></td></tr> +<tr><td>Array shaping</td><td>N</td><td></td></tr> +<tr><td>Array sections with non-unit strides in C and C++</td><td>N</td><td></td></tr> +<tr><td><code>metadirective</code> directive</td><td>N</td><td></td></tr> +<tr><td>Collapse of associated loops that are imperfectly nested loops</td><td>N</td><td></td></tr> +<tr><td><code>allocate</code> directive</td><td>N</td><td></td></tr> +<tr><td>Discontiguous array section with <code>target update</code> construct</td><td>N</td><td></td></tr> +<tr><td>C/C++'s lvalue expressions in <code>to</code>, <code>from</code> and <code>map</code> clauses</td><td>N</td><td></td></tr> +<tr><td><code>declare mapper</code> directive</td><td>N</td><td></td></tr> +<tr><td>OMPT interface</td><td>N</td><td></td></tr> +<tr><td>OMPD interface</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h2 id="omp5.1">OpenMP 5.1</h2> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td>OpenMP directive as C++ attribute specifiers</td><td>GCC 12</td><td></td></tr> +<tr><td><code>nothing</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>error</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>masked</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>scope</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>strict</code> modifier in the <code>grainsize</code> and <code>num_tasks</code> clauses of the <code>taskloop</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>align</code> clause/modifier in <code>allocate</code> directive/clause and <code>allocator</code> directive</td><td>GCC 12</td><td>C/C++ on clause only</td></tr> +<tr><td><code>thread_limit</code> clause to <code>target</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>has_device_addr</code> clause to <code>target construct</code></td><td>GCC 12</td><td></td></tr> +<tr><td>Extensions to the <code>atomic</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>seq_cst</code> clause on a <code>flush construct</code></td><td>GCC 12</td><td></td></tr> +<tr><td><code>private</code> and <code>firstprivate</code> argument to <code>default</code> clause in C and C++</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_set_num_teams</code>, <code>omp_set_teams_thread_limit</code>, <code>omp_get_max_teams</code>, <code>omp_get_teams_thread_limit</code> runtime routines</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_calloc</code>, <code>omp_realloc</code>, <code>omp_aligned_alloc</code>, and <code>omp_aligned_callocruntime</code> routines</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_alloctrait_key_t</code> enum: <code>omp_atv_serialized</code> added, <code>omp_atv_default</code> changed</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_display_env</code> runtime routine</td><td>GCC 12</td><td>Not inside target regions</td></tr> +<tr><td><code>OMP_PLACES</code> syntax extensions</td><td>GCC 12</td><td></td></tr> +<tr><td><code>OMP_NUM_TEAMS</code> and <code>OMP_TEAMS_THREAD_LIMIT</code> env variables</td><td>GCC 12</td><td></td></tr> +<tr><td>Support of strictly structured blocks in Fortran</td><td>GCC 12</td><td></td></tr> +<tr><td>Support of structured block sequences in C/C++</td><td>GCC 12</td><td></td></tr> +<tr><td><code>unconstrained</code> and <code>reproducible</code> modifiers on <code>order</code> clause</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_target_is_accessible</code> runtime routine</td><td>GCC 13</td><td></td></tr> +<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC 13</td><td></td></tr> +<tr><td><code>omp_all_memory</code> reserved locator</td><td>GCC 13</td><td></td></tr> +<tr><td><em>target_device trait</em> in OpenMP Context</td><td>N</td><td></td></tr> +<tr><td><code>target_device</code> selector set in context selectors</td><td>N</td><td></td></tr> +<tr><td>C/C++'s <code>declare variant</code> directive: elision support of preprocessed code</td><td>N</td><td></td></tr> +<tr><td><code>declare variant</code>: new clauses <code>adjust_args</code> and <code>append_args</code></td><td>N</td><td></td></tr> +<tr><td><code>dispatch</code> construct</td><td>N</td><td></td></tr> +<tr><td>device-specific ICV settings the environment variables</td><td>N</td><td></td></tr> +<tr><td><code>assume</code> directive</td><td>N</td><td></td></tr> +<tr><td>Loop transformation constructs</td><td>N</td><td></td></tr> +<tr><td>iterators in <code>target update</code> motion clauses and map clauses</td><td>N</td><td></td></tr> +<tr><td>indirect calls to the device version of a procedure or function in target regions</td><td>N</td><td></td></tr> +<tr><td><code>interop</code> directive</td><td>N</td><td></td></tr> +<tr><td><code>omp_interop_t</code> object support in runtime routines</td><td>N</td><td></td></tr> +<tr><td><code>nowait</code> clause in <code>taskwait</code> directive</td><td>N</td><td></td></tr> +<tr><td><code>inoutset</code> argument to the <code>depend</code> clause</td><td>N</td><td></td></tr> +<tr><td><code>present</code> argument to <code>defaultmap</code> clause</td><td>N</td><td></td></tr> +<tr><td><code>omp_target_memcpy_async</code> and <code>omp_target_memcpy_rect_async</code> runtime routines</td><td>N</td><td></td></tr> +<tr><td><code>ompt_scope_endpoint_t</code> enum: <code>ompt_scope_beginend</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_sync_region_t</code> enum additions</td><td>N</td><td></td></tr> +<tr><td><code>ompt_state_t</code> enum: <code>ompt_state_wait_barrier_implementation</code> and <code>ompt_state_wait_barrier_teams</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_target_data_op_emi_t</code>, <code>ompt_callback_target_emi_t</code>, <code>ompt_callback_target_map_emi_t</code> and <code>ompt_callback_target_submit_emi_t</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_error_t</code> type</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h2 id="omp5.2">OpenMP 5.2</h2> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td><code>omp_in_explicit_task</code> routine and <em>implicit-task-var</em> ICV</td><td>N</td><td></td></tr> +<tr><td><code>omp</code>/<code>ompx</code>/<code>ompx</code> sentinels and <code>omp_</code>/<code>ompx_</code> namespaces</td><td>N</td><td></td></tr> +<tr><td>Clauses on <code>end</code> directive can be on directive</td><td>N</td><td></td></tr> +<tr><td>Deprecation of no-argument <code>destroy</code> clause on <code>depobj</code></td><td>N</td><td></td></tr> +<tr><td><code>linear</code> clause syntax changes and <code>step</code> modifier</td><td>N</td><td></td></tr> +<tr><td>Deprecation of minus operator for reductions</td><td>N</td><td></td></tr> +<tr><td>Deprecation of separating <code>map</code> modifiers without comma</td><td>N</td><td></td></tr> +<tr><td><code>declare mapper</code> with iterator and <code>present</code> modifiers</td><td>N</td><td></td></tr> +<tr><td>If a matching mapped list item is not found in the data environment, the pointer retains its original value</td><td>N</td><td></td></tr> +<tr><td>New <code>enter</code> clause replacing <code>to</code> on declare target directive</td><td>N</td><td></td></tr> +<tr><td>Extended list of directives permitted in Fortran pure procedures</td><td>N</td><td></td></tr> +<tr><td>New <code>allocators</code> directive for Fortran</td><td>N</td><td></td></tr> +<tr><td>Optional paired <code>end</code> directive with <code>dispatch</code></td><td>N</td><td></td></tr> +<tr><td>New <code>memspace</code> and <code>traits</code> modifiers for <code>uses_allocators</code></td><td>N</td><td></td></tr> +<tr><td>New <code>otherwise</code> clause replacing <code>default</code> on metadirectives</td><td>N</td><td></td></tr> +<tr><td>Deprecation of delimited form of <code>declare target</code></td><td>N</td><td></td></tr> +<tr><td>Reproducible semantics changed for <code>order(concurrent)</code></td><td>N</td><td></td></tr> +<tr><td><code>allocate</code> and <code>firstprivate</code> clauses on <code>scope</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_work</code></td><td>N</td><td></td></tr> +<tr><td>Default map type for <code>map</code> clause in <code>target enter/exit data</code></td><td>N</td><td></td></tr> +<tr><td>New <code>doacross</code> clause replacing <code>depend</code> with <code>sourch</code>/<code>sink</code> modifier</td><td>N</td><td></td></tr> +<tr><td><code>omp_cur_iteration</code> keyword</td><td>N</td><td></td></tr> +</tbody> +</table> + +</body> +</html> diff --git a/htdocs/projects/index.html b/htdocs/projects/index.html index 0647ed6b..3015f84a 100644 --- a/htdocs/projects/index.html +++ b/htdocs/projects/index.html @@ -30,6 +30,7 @@ help develop GCC:</p> <li><a href="cpplib.html">Projects for the C preprocessor.</a></li> <li><a href="c-frontend.html">Projects for improving the C front end.</a></li> <li><a href="cxx-status.html">Implementing new C++ features.</a></li> +<li><a href="gomp/openmp-status.html">Implementing missing OpenMP features.</a></li> <li><a href="gupc.html">The GNU UPC Project.</a></li> <li><a href="#improve_the_installation_procedure">Improve the installation procedure</a></li> <li><a href="#simpler_porting">Simpler porting</a></li> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-16 9:42 ` Tobias Burnus @ 2022-05-17 7:54 ` Gerald Pfeifer 2022-05-17 8:21 ` Jakub Jelinek 1 sibling, 0 replies; 10+ messages in thread From: Gerald Pfeifer @ 2022-05-17 7:54 UTC (permalink / raw) To: Tobias Burnus; +Cc: Jakub Jelinek, gcc-patches On Mon, 16 May 2022, Tobias Burnus wrote: > PPS: I think we should consider to further cleanup/consolidate both the > generic gomp landing page and the http://gcc.gnu.org/wiki/openmp wiki. > Current the information is too far spread and too difficult to find. Yes, that sounds like a great idea, too. :) A minor detail: > +<p>Please add <q>openmp</q> to the keywords field when filling a > +<a href="https://gcc.gnu.org/bugzilla/">bug report</a>.</p> Might it be better to instead link to <a href="../../bugs/"> ? Gerald PS: For the benefit of the doubt: Ok. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-16 9:42 ` Tobias Burnus 2022-05-17 7:54 ` Gerald Pfeifer @ 2022-05-17 8:21 ` Jakub Jelinek 2022-05-17 8:49 ` Tobias Burnus 1 sibling, 1 reply; 10+ messages in thread From: Jakub Jelinek @ 2022-05-17 8:21 UTC (permalink / raw) To: Tobias Burnus; +Cc: Gerald Pfeifer, gcc-patches On Mon, May 16, 2022 at 11:42:03AM +0200, Tobias Burnus wrote: > small update (interdiff): s/s/S/ for consistency, missed one GCC 13 commit, and > improved wording of the enter/exit change. (New wording better captures the > effect; I was thinking too much of the changed spec wording not of the effective > result.) > Plus added some cross-ref hyperlinks to make finding the documentation easier: > > --- a/htdocs/projects/gomp/openmp-status.html > +++ b/htdocs/projects/gomp/openmp-status.html > @@ -25,0 +26 @@ > + <li><a href="index.html">GOMP project page</a></li> > @@ -61 +61 @@ > -<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>stub only</td></tr> > +<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>Stub only</td></tr> > @@ -141,0 +142 @@ > +<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC 13</td><td></td></tr> > @@ -159 +159,0 @@> > -<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>N</td><td></td></tr> > @@ -195 +195 @@ > -<tr><td>Extended map-type handling of <code>target enter/exit data</code></td><td>N</td><td></td></tr> > +<tr><td>Default map type for <code>map</code> clause in <code>target enter/exit data</code></td><td>N</td><td></td></tr> > > --- a/htdocs/projects/index.html > +++ b/htdocs/projects/index.html > @@ -32,0 +33 @@ help develop GCC:</p> > +<li><a href="gomp/openmp-status.html">Implementing missing OpenMP features.</a></li> > > > I will incorporate the 5.2 wording change in my libgomp.texi patch. > (I think the s/stub/Stub/ change is already there and I know the > N→Y change is in the .texi.) Thanks for working on this. Please incorporate Gerald's comments and my comments about the libgomp.texi 5.2 support patch. > +<p>Features added by OpenMP version</p> > +<ul> > + <li><a href="#omp4.5">OpenMP 4.5</a></li> > + <li><a href="#omp5.0">OpenMP 5.0</a></li> > + <li><a href="#omp5.1">OpenMP 5.1</a></li> > + <li><a href="#omp5.2">OpenMP 5.2</a></li> > +</ul> I think we should have also 2.5, 3.0, 3.1 and 4.0 entries in the above list, with similar style as the OpenMP 4.5 entry. Details can be copied from the gomp/index.html page, so 2.5 supported since GCC 4.2, 3.0 supported since GCC 4.4, 3.1 supported since GCC 4.7, 4.0 supported for C/C++ since GCC 4.9 and for Fortran since GCC 4.9.1 Though, maybe a table form for the 2.5-4.5 versions would be more consistent with the rest, and just use OpenMP x.y C/C++/Fortran support or OpenMP x.y C/C++ support or OpenMP x.y Fortran support as name, for the partial/full with 2 rows like requires directive with GCC 7 row and partial in comment and GCC 11 witout a comment or with fully supported comment? Perhaps for those tables just leave the first column header blank instead of "Feature". > +<tr><td>Map-order clarifications</td><td>GCC?</td><td></td></tr> This entry I gave up on, it isn't exactly clear to me what that bullet is about and once we figure that out, we need to do some archeology on whether we support it at all and if yes, since which commit and thus since which GCC version. Otherwise LGTM. Jakub ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-17 8:21 ` Jakub Jelinek @ 2022-05-17 8:49 ` Tobias Burnus 2022-05-17 9:00 ` Jakub Jelinek 0 siblings, 1 reply; 10+ messages in thread From: Tobias Burnus @ 2022-05-17 8:49 UTC (permalink / raw) To: Jakub Jelinek; +Cc: Gerald Pfeifer, gcc-patches [-- Attachment #1: Type: text/plain, Size: 2133 bytes --] Hi Jakub & Gerald, first, thanks for all the suggestions! I have now followed Gerald's suggestion to place the table into the main GOMP page. I then also decided to make it more GCC-user orientated than GCC-developer orientated by re-writing the intro (but keeping the old one as background), also referencing OpenACC, mentioning the command-line arguments to use + adding a bunch of GCC links to have everything together. Thoughts on this part? I also added the first OpenMP entry to gcc-13/changes.html, which also links to the GOMP page. (I expect more mainline commits in the near feature, but I want to have a stub there. I think the next update could be done in a month or two – once more items have accumulated.) And I tried to incorporate all suggested changes. Regarding: On 17.05.22 10:21, Jakub Jelinek wrote: >> +<p>Features added by OpenMP version</p> >> +<ul> >> + <li><a href="#omp4.5">OpenMP 4.5</a></li> >> ... > I think we should have also 2.5, 3.0, 3.1 and 4.0 entries in the above list, > with similar style as the OpenMP 4.5 entry. > ... > Though, maybe a table form for the 2.5-4.5 versions would be more consistent > with the rest, Partially because I am lazy and partially because I think a table with those entries looks odd, I went for the bullet style. >> +<tr><td>Map-order clarifications</td><td>GCC?</td><td></td></tr> > This entry I gave up on, it isn't exactly clear to me what that > bullet is about and once we figure that out, we need to do some archeology > on whether we support it at all and if yes, since which commit and thus > since which GCC version. I concur – but the question is how to handle it now? Leave it and correct it later? Comment/remove it? Can you check whether you now like the bullet points? If so, I will update the .texi to match. Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 [-- Attachment #2: omp-status-v3.diff --] [-- Type: text/x-patch, Size: 24158 bytes --] Add OpenMP by-GCC-version implementation status * htdocs/projects/gomp/index.html: Add by-GCC-version implementation status; add new intro, add links and crossrefs. * htdocs/projects/gomp/index.html: Link it. * htdocs/gcc-13/changes.html: Likewise; document first new features. htdocs/gcc-13/changes.html | 12 ++ htdocs/projects/gomp/index.html | 303 ++++++++++++++++++++++++++++++++++++++-- htdocs/projects/index.html | 1 + 3 files changed, 302 insertions(+), 14 deletions(-) diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html index f21b546b..d62030d2 100644 --- a/htdocs/gcc-13/changes.html +++ b/htdocs/gcc-13/changes.html @@ -37,6 +37,18 @@ a work-in-progress.</p> <!-- .................................................................. --> <h2 id="general">General Improvements</h2> +<ul> + <li><a href="https://gcc.gnu.org/projects/gomp/">OpenMP</a> + <ul> + <li>The following OpenMP 5.1 features have been added: the + <code>omp_all_memory</code> reserved locator and the + <code>omp_target_is_accessible</code> and <code>omp_get_mapped_ptr</code> + API routines.</li> + </ul> + </li> +</ul> + + <!-- .................................................................. --> <h2 id="languages">New Languages and Language specific improvements</h2> diff --git a/htdocs/projects/gomp/index.html b/htdocs/projects/gomp/index.html index 59697c10..32345c8e 100644 --- a/htdocs/projects/gomp/index.html +++ b/htdocs/projects/gomp/index.html @@ -3,13 +3,84 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>GOMP — An OpenMP implementation for GCC</title> +<title>GNU Offloading and Multi-Processing Project (GOMP)</title> <link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" /> </head> <body> -<h1>Welcome to the home of GOMP</h1> +<h1>GNU Offloading and Multi-Processing Project (GOMP)</h1> + +<p>The GOMP project consists of implementation of OpenMP and OpenACC to +permit annotating the source code to permit running it concurrently with +thread parallelization and on offloading devices (<q>accelerators</q> such +as GPUs), including the associated run-time library and API routines. Both +OpenMP and OpenACC are supported with GCC's C, C++ and Fortran compilers.</p> + +<h2>Content</h2> +<ul> + <li><a href="#usage">Usage</a></li> + <li><a href="#history_and_goal">History and Project Goal</a></li> + <li><a href="#contributing">Contributing</a></li> + <li><a href="#bugs">Reporting Bugs</a></li> + <li><a href="#implementation-status">OpenMP Implementation Status</a>: + <a href="#omp2.5">2.5</a> · <a href="#omp3.0">5.0</a> · + <a href="#omp3.1">3.1</a> · <a href="#omp4.0">4.0</a> · + <a href="#omp4.5">4.5</a> · <a href="#omp5.0">5.0</a> · + <a href="#omp5.1">5.1</a> · <a href="#omp5.2">5.2</a></li> + <li><a href="#omp-status">OpenMP Releases and Status</a></li> +</ul> + +<h2 id="usage">Usage</h2> +<ul> + <li>To enable <strong><a href="https://www.openmp.org">OpenMP</a></strong>, + use <a + href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-fopenmp" + ><code>-fopenmp</code></a>; <code>-fopenmp-simd</code> can be used + to enable only the SIMD vectorization and loop-transformation constructs + without creating multiple threads, offloading code or adding library + dependency.</li> + <li>To enable <strong><a href="https://www.openacc.org">OpenACC</a></strong>, + use <a + href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-fopenacc" + ><code>-fopenacc</code></a>.</li> + <li>If either is enabled, offloading is automatically generated for all + offload-device types for which the compiler has been configured. Use <a + href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-foffload" + ><code>-foffload=</code></a> to disable or specify the offload-devices to be + used. Use <a + href="https://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#index-foffload-options" + ><code>-foffload-options=</code></a> to pass device-specific compiler and + linker flags.</li> +</ul> + +<p>Diagnostics</p> +<ul> + <li>The <a + href="https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html#index-fopt-info" + ><code>-fopt-info</code></a> flag provides details about compile-time performed + optimizations.</li> + <li>Environment variables can be used to influence run-time behavior and output + more data, useful for debugging or performance tuning. See the <a + href="https://gcc.gnu.org/onlinedocs/libgomp/">GNU libgomp</a> manual for + details.</li> +</ul> + +<p>Documentation</p> +<ul> + <li><a href="https://gcc.gnu.org/onlinedocs/libgomp/">GNU libgomp</a> manual + for API routines, environment variables and implementation details.</li> + <li><a href="https://www.openmp.org/specifications/">OpenMP specification</a>, + including OpenMP API examples documents, reference cards and additional + definitions specification.</li> + <li><a href="https://www.openacc.org/specification">OpenACC</a> + specification.</li> + <li>Related GCC wiki pages: <a href="https://gcc.gnu.org/wiki/openmp" + >openmp</a>, <a href="https://gcc.gnu.org/wiki/OpenACC">OpenACC</a>, + <a href="https://gcc.gnu.org/wiki/Offloading">Offloading</a>.</li> +</ul> + +<h2 id="history_and_goal">History and Project Goal</h2> <p>The GOMP project has developed an implementation of <a href="https://www.openmp.org">OpenMP</a> @@ -39,10 +110,9 @@ efficient parallel code.</p> <p>OpenMP additionally permits to offload computations on accelerators such as <abbr title="Graphical Processing Units">GPUs</abbr>, making use of their highly parallel computation support; if -no accelarator is available, as fallback, the computation is +no accelerator is available, as fallback, the computation is then done on the host.</p> -<h2>Project goal</h2> <p>To remain relevant, free software development tools must support emerging technologies. By implementing OpenMP, GOMP provides a simplified syntax tools for creating software targeted @@ -54,20 +124,225 @@ projects.</p> extensions to target language parsers. A long-term goal is the generation of efficient and small code for OpenMP applications.</p> -<h2>Contributing</h2> +<p>When support for OpenACC was added, the project name <q>GOMP</q> +was reinterpreted as <q>GNU Offloading and Multi-Processing</q> instead +of denoting <q>GNU OpenMP</q>. + +<h2 id="contributing">Contributing</h2> <p>We encourage everyone to <a href="../../contribute.html">contribute changes</a> and help test GOMP. GOMP has been merged into mainline GCC.</p> -<h2>Reporting Bugs</h2> -<p>Please add "openmp" to the keywords field when filing a bug report.</p> - -<h2>Documentation</h2> -<p>libgomp, the GOMP support library, has -<a href="https://gcc.gnu.org/onlinedocs/libgomp/">online documentation</a> -available.</p> - -<h2>Status</h2> +<h2 id="bugs">Reporting Bugs</h2> +<p>Please add <q>openmp</q> or <q>openacc</q> to the keywords field when +filing a <a href="https://gcc.gnu.org/bugzilla/">bug report</a>.</p> + +<h2 id="implementation-status">OpenMP Implementation Status</h2> + +<p>Implementation status in libgomp manual: +<a href="https://gcc.gnu.org/onlinedocs/libgomp/OpenMP-Implementation-Status.html" +>Mainline (GCC 13)</a>, +<a href="https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/OpenMP-Implementation-Status.html" +>GCC 12</a>.</p> + +<p>Disclaimer: A feature might be only fully supported in a later GCC version +than listed, depending on resolved corner cases and optimizations.</p> + + + +<h3 id="omp2.5">OpenMP 2.5</h3> +<ul> + <li>Supported since GCC 4.2</li> +</ul> + +<h3 id="omp3.0">OpenMP 3.0</h3> +<ul> + <li>Supported since GCC 4.4</li> +</ul> + +<h3 id="omp3.1">OpenMP 3.1</h3> +<ul> + <li>Supported since GCC 4.7</li> +</ul> + +<h3 id="omp4.0">OpenMP 4.0</h3> +<ul> + <li><strong>C/C++:</strong> Supported since GCC 4.9</li> + <li><strong>Fortran:</strong> Supported since GCC 4.9.1</li> +</ul> + +<h3 id="omp4.5">OpenMP 4.5</h3> +<ul> + <li><strong>C/C++:</strong> Supported since GCC 6</li> + <li><strong>Fortran:</strong> Partial support since GCC 7, full support since GCC 11</li> +</ul> + + +<h3 id="omp5.0">OpenMP 5.0</h3> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td><code>in_reduction</code> clause on task constructs</td><td>GCC 9</td><td></td></tr> +<tr><td>Supporting C++'s range-based for loop</td><td>GCC 9</td><td></td></tr> +<tr><td>Iterators</td><td>GCC 9</td><td></td></tr> +<tr><td>!= as relational-op in canonical loop form for C/C++</td><td>GCC 9</td><td></td></tr> +<tr><td>C/C++'s lvalue expressions in <code>depend</code> clauses</td><td>GCC 9</td><td></td></tr> +<tr><td><code>mutexinoutset</code> <em>dependence-type</em> for <code>depend</code> clause</td><td>GCC 9</td><td></td></tr> +<tr><td><code>depobj</code> construct and depend objects </td><td>GCC 9</td><td></td></tr> +<tr><td><code>depend</code> clause on <code>taskwait</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>teams</code> construct outside an enclosing target region</td><td>GCC 9</td><td></td></tr> +<tr><td>Clauses <code>if</code>, <code>nontemporal</code> and <code>order(concurrent)</code> in <code>simd</code> construct</td><td>GCC 9/GCC 10</td><td></td></tr> +<tr><td><code>defaultmap</code> extensions</td><td>GCC 9</td><td></td></tr> +<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC 9</td><td>Stub only</td></tr> +<tr><td>Weak memory ordering clauses on <code>atomic</code> and <code>flush</code> construct</td><td>GCC 9</td><td></td></tr> +<tr><td>Combined master constructs</td><td>GCC 9</td><td></td></tr> +<tr><td>Runtime routines and environment variables to display runtimethread affinity information</td><td>GCC 9</td><td></td></tr> +<tr><td><code>omp_pause_resource</code> and <code>omp_pause_resource_all</code> runtime routines</td><td>GCC 9</td><td></td></tr> +<tr><td><code>nonmonotonic</code> as default loop schedule modifier for worksharing-loop constructs</td><td>GCC 9</td><td></td></tr> +<tr><td><code>atomic</code> constructs in <code>simd</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>task_reduction</code> clause with <code>taskgroup</code></td><td>GCC 9</td><td></td></tr> +<tr><td><code>task</code> modifier to <code>reduction</code> clause</td><td>GCC 9</td><td></td></tr> +<tr><td><code>reduction</code> and <code>in_reduction</code> clauses on <code>taskloop</code> and <code>taskloop simd</code> constructs</td><td>GCC 9</td><td></td></tr> +<tr><td><code>taskloop</code> construct cancelable by <code>cancel</code> construct</td><td>GCC 9</td><td></td></tr> +<tr><td>Lock hints were renamed to synchronization hints</td><td>GCC 9</td><td></td></tr> +<tr><td><code>requires</code> directive</td><td>GCC 9<br>GCC 12<br>–</td><td>(<code>atomic_default_mem_order</code>)<br>(<code>dynamic_allocators</code>)<br>rest parsing only</td></tr> +<tr><td><code>conditional</code> modifier to <code>lastprivate</code> clause</td><td>GCC 10</td><td></td></tr> +<tr><td><code>scan</code> directive and <code>in_scan</code> modifier for the <code>reduction clause</code></td><td>GCC 10</td><td></td></tr> +<tr><td><code>order(concurrent)</code> clause</td><td>GCC 10</td><td></td></tr> +<tr><td><code>loop</code> construct</td><td>GCC 10</td><td></td></tr> +<tr><td><code>declare variant</code> directive</td><td>GCC 10/GCC 11</td><td><em>simd</em> traits not handled correctly</td></tr> +<tr><td><code>use_device_addr</code> clause on <code>target data</code></td><td>GCC 10</td><td></td></tr> +<tr><td>Nested <code>declare target</code> directive</td><td>GCC 10</td><td></td></tr> +<tr><td><code>allocate</code> clause</td><td>GCC 11</td><td>Initial support</td></tr> +<tr><td><em>target-offload-var</em> ICV and <code>OMP_TARGET_OFFLOAD</code> env variable</td><td>GCC 11</td><td></td></tr> +<tr><td>Predefined memory spaces, memory allocators, allocator traits</td><td>GCC 11</td><td>Some are only stubs</td></tr> +<tr><td>Non-rectangular loop nests</td><td>GCC 11</td><td>Only C/C++</td></tr> +<tr><td>Nested-parallel changes to <em>max-active-levels-var</em> ICV</td><td>GCC 11</td><td></td></tr> +<tr><td><code>detach</code> clause to <code>task</code> construct</td><td>GCC 11</td><td></td></tr> +<tr><td><code>omp_fulfill_event</code> runtime routine</td><td>GCC 11</td><td></td></tr> +<tr><td>Memory management routines</td><td>GCC 11</td><td></td></tr> +<tr><td>Implicit <code>declare target</code> directive</td><td>GCC 11</td><td></td></tr> +<tr><td><code>omp_get_supported_active_levels</code> routine</td><td>GCC 11</td><td></td></tr> +<tr><td><code>in_reduction</code> clause on <code>target</code> constructs</td><td>GCC 12</td><td><code>nowait</code> only stub</td></tr> +<tr><td><code>affinity</code> clause to <code>task</code> construct</td><td>GCC 12</td><td>Stub only</td></tr> +<tr><td><code>close</code> <em>map-type-modifier</em></td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_get_device_num</code> runtime routine</td><td>GCC 12</td><td></td></tr> +<tr><td><code>ancestor</code> modifier on <code>device</code> clause</td><td>GCC 12</td><td>Reverse offload unsupported</td></tr> +<tr><td>Mapping C/C++ pointer variables and to assign the address of device memory mapped by an array section</td><td>GCC 12</td><td></td></tr> +<tr><td>Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables</td><td>GCC 12</td><td>Mapping of vars with allocatable components unsupported</td></tr> +<tr><td>Map-order clarifications</td><td>GCC?</td><td></td></tr> +<tr><td>Array shaping</td><td>N</td><td></td></tr> +<tr><td>Array sections with non-unit strides in C and C++</td><td>N</td><td></td></tr> +<tr><td><code>metadirective</code> directive</td><td>N</td><td></td></tr> +<tr><td>Collapse of associated loops that are imperfectly nested loops</td><td>N</td><td></td></tr> +<tr><td><code>allocate</code> directive</td><td>N</td><td></td></tr> +<tr><td>Discontiguous array section with <code>target update</code> construct</td><td>N</td><td></td></tr> +<tr><td>C/C++'s lvalue expressions in <code>to</code>, <code>from</code> and <code>map</code> clauses</td><td>N</td><td></td></tr> +<tr><td><code>declare mapper</code> directive</td><td>N</td><td></td></tr> +<tr><td>OMPT interface</td><td>N</td><td></td></tr> +<tr><td>OMPD interface</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h3 id="omp5.1">OpenMP 5.1</h3> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td>OpenMP directive as C++ attribute specifiers</td><td>GCC 12</td><td></td></tr> +<tr><td><code>nothing</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>error</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>masked</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>scope</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>strict</code> modifier in the <code>grainsize</code> and <code>num_tasks</code> clauses of the <code>taskloop</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>align</code> clause/modifier in <code>allocate</code> directive/clause and <code>allocator</code> directive</td><td>GCC 12</td><td>C/C++ on clause only</td></tr> +<tr><td><code>thread_limit</code> clause to <code>target</code> construct</td><td>GCC 12</td><td></td></tr> +<tr><td><code>has_device_addr</code> clause to <code>target construct</code></td><td>GCC 12</td><td></td></tr> +<tr><td>Extensions to the <code>atomic</code> directive</td><td>GCC 12</td><td></td></tr> +<tr><td><code>seq_cst</code> clause on a <code>flush construct</code></td><td>GCC 12</td><td></td></tr> +<tr><td><code>private</code> and <code>firstprivate</code> argument to <code>default</code> clause in C and C++</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_set_num_teams</code>, <code>omp_set_teams_thread_limit</code>, <code>omp_get_max_teams</code>, <code>omp_get_teams_thread_limit</code> runtime routines</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_calloc</code>, <code>omp_realloc</code>, <code>omp_aligned_alloc</code>, and <code>omp_aligned_callocruntime</code> routines</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_alloctrait_key_t</code> enum: <code>omp_atv_serialized</code> added, <code>omp_atv_default</code> changed</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_display_env</code> runtime routine</td><td>GCC 12</td><td>Not inside target regions</td></tr> +<tr><td><code>OMP_PLACES</code> syntax extensions</td><td>GCC 12</td><td></td></tr> +<tr><td><code>OMP_NUM_TEAMS</code> and <code>OMP_TEAMS_THREAD_LIMIT</code> env variables</td><td>GCC 12</td><td></td></tr> +<tr><td>Support of strictly structured blocks in Fortran</td><td>GCC 12</td><td></td></tr> +<tr><td>Support of structured block sequences in C/C++</td><td>GCC 12</td><td></td></tr> +<tr><td><code>unconstrained</code> and <code>reproducible</code> modifiers on <code>order</code> clause</td><td>GCC 12</td><td></td></tr> +<tr><td><code>omp_target_is_accessible</code> runtime routine</td><td>GCC 13</td><td></td></tr> +<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC 13</td><td></td></tr> +<tr><td><code>omp_all_memory</code> reserved locator</td><td>GCC 13</td><td></td></tr> +<tr><td><em>target_device trait</em> in OpenMP Context</td><td>N</td><td></td></tr> +<tr><td><code>target_device</code> selector set in context selectors</td><td>N</td><td></td></tr> +<tr><td>C/C++'s <code>declare variant</code> directive: elision support of preprocessed code</td><td>N</td><td></td></tr> +<tr><td><code>declare variant</code>: new clauses <code>adjust_args</code> and <code>append_args</code></td><td>N</td><td></td></tr> +<tr><td><code>dispatch</code> construct</td><td>N</td><td></td></tr> +<tr><td>device-specific ICV settings the environment variables</td><td>N</td><td></td></tr> +<tr><td>assume directive</td><td>N</td><td></td></tr> +<tr><td>Loop transformation constructs</td><td>N</td><td></td></tr> +<tr><td>iterators in <code>target update</code> motion clauses and map clauses</td><td>N</td><td></td></tr> +<tr><td>indirect calls to the device version of a procedure or function in target regions</td><td>N</td><td></td></tr> +<tr><td><code>interop</code> directive</td><td>N</td><td></td></tr> +<tr><td><code>omp_interop_t</code> object support in runtime routines</td><td>N</td><td></td></tr> +<tr><td><code>nowait</code> clause in <code>taskwait</code> directive</td><td>N</td><td></td></tr> +<tr><td><code>inoutset</code> argument to the <code>depend</code> clause</td><td>N</td><td></td></tr> +<tr><td><code>present</code> argument to <code>defaultmap</code> clause</td><td>N</td><td></td></tr> +<tr><td><code>omp_target_memcpy_async</code> and <code>omp_target_memcpy_rect_async</code> runtime routines</td><td>N</td><td></td></tr> +<tr><td><code>ompt_scope_endpoint_t</code> enum: <code>ompt_scope_beginend</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_sync_region_t</code> enum additions</td><td>N</td><td></td></tr> +<tr><td><code>ompt_state_t</code> enum: <code>ompt_state_wait_barrier_implementation</code> and <code>ompt_state_wait_barrier_teams</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_target_data_op_emi_t</code>, <code>ompt_callback_target_emi_t</code>, <code>ompt_callback_target_map_emi_t</code> and <code>ompt_callback_target_submit_emi_t</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_error_t</code> type</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h3 id="omp5.2">OpenMP 5.2</h3> + +<table> +<thead> +<tr><th>Feature</th><th>GCC Version</th><th>Comments</th></tr> +</thead> +<tbody> +<tr><td><code>omp_in_explicit_task</code> routine and <em>implicit-task-var</em> ICV</td><td>N</td><td></td></tr> +<tr><td><code>omp</code>/<code>ompx</code>/<code>omx</code> sentinels and <code>omp_</code>/<code>ompx_</code> namespaces</td><td>N/A</td><td></td></tr> +<tr><td>Clauses on <code>end</code> directive can be on directive</td><td>N</td><td></td></tr> +<tr><td>Deprecation of no-argument <code>destroy</code> clause on <code>depobj</code></td><td>N</td><td></td></tr> +<tr><td><code>linear</code> clause syntax changes and <code>step</code> modifier</td><td>N</td><td></td></tr> +<tr><td>Deprecation of minus operator for reductions</td><td>N</td><td></td></tr> +<tr><td>Deprecation of separating <code>map</code> modifiers without comma</td><td>N</td><td></td></tr> +<tr><td><code>declare mapper</code> with iterator and <code>present</code> modifiers</td><td>N</td><td></td></tr> +<tr><td>If a matching mapped list item is not found in the data environment, the pointer retains its original value</td><td>N</td><td></td></tr> +<tr><td>New <code>enter</code> clause as alias for <code>to</code> on declare target directive</td><td>N</td><td></td></tr> +<tr><td>Deprecation of <code>to</code> clause on declare target directive</td><td>N</td><td></td></tr> +<tr><td>Extended list of directives permitted in Fortran pure procedures</td><td>N</td><td></td></tr> +<tr><td>New <code>allocators</code> directive for Fortran</td><td>N</td><td></td></tr> +<tr><td>Deprecation of <code>allocator</code> directive for Fortran allocatables/pointers</td><td>N</td><td></td></tr> +<tr><td>Optional paired <code>end</code> directive with <code>dispatch</code></td><td>N</td><td></td></tr> +<tr><td>New <code>memspace</code> and <code>traits</code> modifiers for <code>uses_allocators</code></td><td>N</td><td></td></tr> +<tr><td>Deprecation of traits array following the allocator_handle expression in <code>uses_allocators</code></td><td>N</td><td></td></tr> +<tr><td>New <code>otherwise</code> clause as alias for <code>default</code> on metadirectives</td><td>N</td><td></td></tr> +<tr><td>Deprecation of <code>default</code> clause on metadirectives</td><td>N</td><td></td></tr> +<tr><td>Deprecation of delimited form of <code>declare target</code></td><td>N</td><td></td></tr> +<tr><td>Reproducible semantics changed for <code>order(concurrent)</code></td><td>N</td><td></td></tr> +<tr><td><code>allocate</code> and <code>firstprivate</code> clauses on <code>scope</code></td><td>N</td><td></td></tr> +<tr><td><code>ompt_callback_work</code></td><td>N</td><td></td></tr> +<tr><td>Default map type for <code>map</code> clause in <code>target enter/exit data</code></td><td>N</td><td></td></tr> +<tr><td>New <code>doacross</code> clause as alias for <code>depend</code> with <code>source</code>/<code>sink</code> modifier</td><td>N</td><td></td></tr> +<tr><td>Deprecation of <code>depend</code> with <code>source</code>/<code>sink</code> modifier</td><td>N</td><td></td></tr> +<tr><td><code>omp_cur_iteration</code> keyword</td><td>N</td><td></td></tr> +</tbody> +</table> + + +<h2 id="omp-status">OpenMP Releases and Status</h2> <dl> <dt><b>November 9, 2021</b></dt> <dd><p><a href="https://www.openmp.org/wp-content/uploads/OpenMP-API-Specification-5-2.pdf">OpenMP diff --git a/htdocs/projects/index.html b/htdocs/projects/index.html index 0647ed6b..dc502ed0 100644 --- a/htdocs/projects/index.html +++ b/htdocs/projects/index.html @@ -30,6 +30,7 @@ help develop GCC:</p> <li><a href="cpplib.html">Projects for the C preprocessor.</a></li> <li><a href="c-frontend.html">Projects for improving the C front end.</a></li> <li><a href="cxx-status.html">Implementing new C++ features.</a></li> +<li><a href="gomp/">Implementing missing OpenMP features.</a></li> <li><a href="gupc.html">The GNU UPC Project.</a></li> <li><a href="#improve_the_installation_procedure">Improve the installation procedure</a></li> <li><a href="#simpler_porting">Simpler porting</a></li> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-17 8:49 ` Tobias Burnus @ 2022-05-17 9:00 ` Jakub Jelinek 2022-05-17 9:50 ` Tobias Burnus 0 siblings, 1 reply; 10+ messages in thread From: Jakub Jelinek @ 2022-05-17 9:00 UTC (permalink / raw) To: Tobias Burnus; +Cc: Gerald Pfeifer, gcc-patches On Tue, May 17, 2022 at 10:49:42AM +0200, Tobias Burnus wrote: > Thoughts on this part? Either place is fine. > > > +<tr><td>Map-order clarifications</td><td>GCC?</td><td></td></tr> > > This entry I gave up on, it isn't exactly clear to me what that > > bullet is about and once we figure that out, we need to do some archeology > > on whether we support it at all and if yes, since which commit and thus > > since which GCC version. > I concur – but the question is how to handle it now? Leave it and > correct it later? Comment/remove it? Write ? in the Version column alone instead of GCC? and in comment say To be verified or something similar. BTW, it would be really nice to use colors like https://gcc.gnu.org/projects/cxx-status.html uses, use just GCC versions instead of GCC version and No instead of N and use hyperlinks to changes.html OpenMP ids (or just changes.html if we don't have an id). And, for No we could in the future hyperlink to bugzilla if we file PRs for those missing or WIP features which people can assign etc. But that can be changed incrementally. > Can you check whether you now like the bullet points? If so, I will > update the .texi to match. LGTM. Jakub ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-17 9:00 ` Jakub Jelinek @ 2022-05-17 9:50 ` Tobias Burnus 2022-05-17 10:02 ` Jakub Jelinek 2023-01-21 20:57 ` Gerald Pfeifer 0 siblings, 2 replies; 10+ messages in thread From: Tobias Burnus @ 2022-05-17 9:50 UTC (permalink / raw) To: Jakub Jelinek, Tobias Burnus; +Cc: Gerald Pfeifer, gcc-patches On 17.05.22 11:00, Jakub Jelinek wrote: > BTW, it would be really nice to use colors like > https://gcc.gnu.org/projects/cxx-status.html uses, use just GCC versions > instead of GCC version and No instead of N and use hyperlinks to > changes.html OpenMP ids (or just changes.html if we don't have an id). Done so: https://gcc.gnu.org/projects/gomp/ I also had to add a table.omptable to gcc.css as we need column 2 not 3 or 4 to be centered. Thanks again for all the comments! Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-17 9:50 ` Tobias Burnus @ 2022-05-17 10:02 ` Jakub Jelinek 2023-01-21 20:57 ` Gerald Pfeifer 1 sibling, 0 replies; 10+ messages in thread From: Jakub Jelinek @ 2022-05-17 10:02 UTC (permalink / raw) To: Tobias Burnus; +Cc: Tobias Burnus, Gerald Pfeifer, gcc-patches On Tue, May 17, 2022 at 11:50:15AM +0200, Tobias Burnus wrote: > On 17.05.22 11:00, Jakub Jelinek wrote: > > BTW, it would be really nice to use colors like > > https://gcc.gnu.org/projects/cxx-status.html uses, use just GCC versions > > instead of GCC version and No instead of N and use hyperlinks to > > changes.html OpenMP ids (or just changes.html if we don't have an id). > Done so: https://gcc.gnu.org/projects/gomp/ > > I also had to add a table.omptable to gcc.css as we need column 2 not 3 > or 4 to be centered. Thanks. Noticed small typo, committed now as obvious. diff --git a/htdocs/projects/gomp/index.html b/htdocs/projects/gomp/index.html index 52991c02..799a1e3b 100644 --- a/htdocs/projects/gomp/index.html +++ b/htdocs/projects/gomp/index.html @@ -24,7 +24,7 @@ OpenMP and OpenACC are supported with GCC's C, C++ and Fortran compilers.</p> <li><a href="#contributing">Contributing</a></li> <li><a href="#bugs">Reporting Bugs</a></li> <li><a href="#implementation-status">OpenMP Implementation Status</a>: - <a href="#omp2.5">2.5</a> · <a href="#omp3.0">5.0</a> · + <a href="#omp2.5">2.5</a> · <a href="#omp3.0">3.0</a> · <a href="#omp3.1">3.1</a> · <a href="#omp4.0">4.0</a> · <a href="#omp4.5">4.5</a> · <a href="#omp5.0">5.0</a> · <a href="#omp5.1">5.1</a> · <a href="#omp5.2">5.2</a></li> Jakub ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-17 9:50 ` Tobias Burnus 2022-05-17 10:02 ` Jakub Jelinek @ 2023-01-21 20:57 ` Gerald Pfeifer 1 sibling, 0 replies; 10+ messages in thread From: Gerald Pfeifer @ 2023-01-21 20:57 UTC (permalink / raw) To: Tobias Burnus; +Cc: Jakub Jelinek, Tobias Burnus, gcc-patches On Tue, 17 May 2022, Tobias Burnus wrote: > Done so: https://gcc.gnu.org/projects/gomp/ Nice! > Thanks again for all the comments! Always welcome! One detailed I noticed only now: The GOMP project consists of implementation of OpenMP and OpenACC to permit annotating the source code to permit running it concurrently ^^^^^^ ^^^^^^ with thread parallelization and on offloading devices Do you have a good idea how to reword that to avoid two instances of "permit" in the same sentence, so close to each other? Gerald ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status 2022-05-14 21:27 [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status Tobias Burnus 2022-05-16 9:42 ` Tobias Burnus @ 2022-05-16 10:06 ` Gerald Pfeifer 1 sibling, 0 replies; 10+ messages in thread From: Gerald Pfeifer @ 2022-05-16 10:06 UTC (permalink / raw) To: Tobias Burnus; +Cc: Jakub Jelinek, gcc-patches Hi Tobias, On Sat, 14 May 2022, Tobias Burnus wrote: > Jakub and I discussed the other day that it would be useful > to have a page similar to > https://gcc.gnu.org/projects/cxx-status.html > to provide by-GCC-version information of the which OpenMP are supported. this looks like a great idea, thanks! > Comments regarding the file, where it is placed and how it is linked to? > I found it simpler to have a single very long line rather than trying > to break it into 80-character lines, but I can also do this reformatting. Yes, in cases like this with a small and fixed set of contributors (to that table) ... whatever serves you best. Regarding the name projects/gomp/openmp-status.html feels a bit long? How about projects/gomp/status.html ? Or maybe even make this part of the main index.html page, so projects/gomp/ in the browser? The former is more of a stronger recommendation, the latter just a thought. Minor tweak: it's "to file a bug report", so "filing a bug" not "filling a bug", though indeed when filing a bug report one needs to fill a form. :-) Gerald ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2023-01-21 20:57 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-05-14 21:27 [wwwdocs][Patch] Add OpenMP by-GCC-version implementation status Tobias Burnus 2022-05-16 9:42 ` Tobias Burnus 2022-05-17 7:54 ` Gerald Pfeifer 2022-05-17 8:21 ` Jakub Jelinek 2022-05-17 8:49 ` Tobias Burnus 2022-05-17 9:00 ` Jakub Jelinek 2022-05-17 9:50 ` Tobias Burnus 2022-05-17 10:02 ` Jakub Jelinek 2023-01-21 20:57 ` Gerald Pfeifer 2022-05-16 10:06 ` Gerald Pfeifer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).