public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [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&nbsp;9</td><td></td></tr>
+<tr><td>Supporting C++'s range-based for loop</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Iterators</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>!= as relational-op in canonical loop form for C/C++</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>C/C++'s lvalue expressions in <code>depend</code> clauses</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>mutexinoutset</code> <em>dependence-type</em> for <code>depend</code> clause</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>depobj</code> construct and depend objects </td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>depend</code> clause on <code>taskwait</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>teams</code> construct outside an enclosing target region</td><td>GCC&nbsp;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&nbsp;9/GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>defaultmap</code> extensions</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td>Combined master constructs</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Runtime routines and environment variables to display runtimethread affinity information</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>omp_pause_resource</code> and <code>omp_pause_resource_all</code> runtime routines</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>nonmonotonic</code> as default loop schedule modifier for worksharing-loop constructs</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>atomic</code> constructs in <code>simd</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>task_reduction</code> clause with <code>taskgroup</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>task</code> modifier to <code>reduction</code> clause</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td><code>taskloop</code> construct cancelable by <code>cancel</code> construct</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Lock hints were renamed to synchronization hints</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>requires</code> directive</td><td>GCC&nbsp;9<br>GCC&nbsp;12<br>&ndash;</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&nbsp;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&nbsp;10</td><td></td></tr>
+<tr><td><code>order(concurrent)</code> clause</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>loop</code> construct</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>declare variant</code> directive</td><td>GCC&nbsp;10/GCC&nbsp;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&nbsp;10</td><td></td></tr>
+<tr><td>Nested <code>declare target</code> directive</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>allocate</code> clause</td><td>GCC&nbsp;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&nbsp;11</td><td></td></tr>
+<tr><td>Predefined memory spaces, memory allocators, allocator traits</td><td>GCC&nbsp;11</td><td>Some are only stubs</td></tr>
+<tr><td>Non-rectangular loop nests</td><td>GCC&nbsp;11</td><td>Only C/C++</td></tr>
+<tr><td>Nested-parallel changes to <em>max-active-levels-var</em> ICV</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>detach</code> clause to <code>task</code> construct</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>omp_fulfill_event</code> runtime routine</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td>Memory management routines</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td>Implicit <code>declare target</code> directive</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>omp_get_supported_active_levels</code> routine</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>in_reduction</code> clause on <code>target</code> constructs</td><td>GCC&nbsp;12</td><td><code>nowait</code> only stub</td></tr>
+<tr><td><code>affinity</code> clause to <code>task</code> construct</td><td>GCC&nbsp;12</td><td>Stub only</td></tr>
+<tr><td><code>close</code> <em>map-type-modifier</em></td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_get_device_num</code> runtime routine</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>ancestor</code> modifier on <code>device</code> clause</td><td>GCC&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td>Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables</td><td>GCC&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>nothing</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>error</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>masked</code> construct</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>scope</code> directive</td><td>GCC&nbsp;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&nbsp;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&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>has_device_addr</code> clause to <code>target construct</code></td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Extensions to the <code>atomic</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>seq_cst</code> clause on a <code>flush construct</code></td><td>GCC&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_display_env</code> runtime routine</td><td>GCC&nbsp;12</td><td>Not inside target regions</td></tr>
+<tr><td><code>OMP_PLACES</code> syntax extensions</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>OMP_NUM_TEAMS</code> and <code>OMP_TEAMS_THREAD_LIMIT</code> env variables</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Support of strictly structured blocks in Fortran</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Support of structured block sequences in C/C++</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>unconstrained</code> and <code>reproducible</code> modifiers on <code>order</code> clause</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_target_is_accessible</code> runtime routine</td><td>GCC&nbsp;13</td><td></td></tr>
+<tr><td><code>omp_all_memory</code> reserved locator</td><td>GCC&nbsp;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&nbsp;9</td><td>stub only</td></tr>
+<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC&nbsp;9</td><td>Stub only</td></tr>
@@ -141,0 +142 @@
+<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td>Supporting C++'s range-based for loop</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Iterators</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>!= as relational-op in canonical loop form for C/C++</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>C/C++'s lvalue expressions in <code>depend</code> clauses</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>mutexinoutset</code> <em>dependence-type</em> for <code>depend</code> clause</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>depobj</code> construct and depend objects </td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>depend</code> clause on <code>taskwait</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>teams</code> construct outside an enclosing target region</td><td>GCC&nbsp;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&nbsp;9/GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>defaultmap</code> extensions</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td>Combined master constructs</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Runtime routines and environment variables to display runtimethread affinity information</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>omp_pause_resource</code> and <code>omp_pause_resource_all</code> runtime routines</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>nonmonotonic</code> as default loop schedule modifier for worksharing-loop constructs</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>atomic</code> constructs in <code>simd</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>task_reduction</code> clause with <code>taskgroup</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>task</code> modifier to <code>reduction</code> clause</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td><code>taskloop</code> construct cancelable by <code>cancel</code> construct</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Lock hints were renamed to synchronization hints</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>requires</code> directive</td><td>GCC&nbsp;9<br>GCC&nbsp;12<br>&ndash;</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&nbsp;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&nbsp;10</td><td></td></tr>
+<tr><td><code>order(concurrent)</code> clause</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>loop</code> construct</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>declare variant</code> directive</td><td>GCC&nbsp;10/GCC&nbsp;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&nbsp;10</td><td></td></tr>
+<tr><td>Nested <code>declare target</code> directive</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>allocate</code> clause</td><td>GCC&nbsp;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&nbsp;11</td><td></td></tr>
+<tr><td>Predefined memory spaces, memory allocators, allocator traits</td><td>GCC&nbsp;11</td><td>Some are only stubs</td></tr>
+<tr><td>Non-rectangular loop nests</td><td>GCC&nbsp;11</td><td>Only C/C++</td></tr>
+<tr><td>Nested-parallel changes to <em>max-active-levels-var</em> ICV</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>detach</code> clause to <code>task</code> construct</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>omp_fulfill_event</code> runtime routine</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td>Memory management routines</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td>Implicit <code>declare target</code> directive</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>omp_get_supported_active_levels</code> routine</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>in_reduction</code> clause on <code>target</code> constructs</td><td>GCC&nbsp;12</td><td><code>nowait</code> only stub</td></tr>
+<tr><td><code>affinity</code> clause to <code>task</code> construct</td><td>GCC&nbsp;12</td><td>Stub only</td></tr>
+<tr><td><code>close</code> <em>map-type-modifier</em></td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_get_device_num</code> runtime routine</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>ancestor</code> modifier on <code>device</code> clause</td><td>GCC&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td>Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables</td><td>GCC&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>nothing</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>error</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>masked</code> construct</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>scope</code> directive</td><td>GCC&nbsp;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&nbsp;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&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>has_device_addr</code> clause to <code>target construct</code></td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Extensions to the <code>atomic</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>seq_cst</code> clause on a <code>flush construct</code></td><td>GCC&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_display_env</code> runtime routine</td><td>GCC&nbsp;12</td><td>Not inside target regions</td></tr>
+<tr><td><code>OMP_PLACES</code> syntax extensions</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>OMP_NUM_TEAMS</code> and <code>OMP_TEAMS_THREAD_LIMIT</code> env variables</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Support of strictly structured blocks in Fortran</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Support of structured block sequences in C/C++</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>unconstrained</code> and <code>reproducible</code> modifiers on <code>order</code> clause</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_target_is_accessible</code> runtime routine</td><td>GCC&nbsp;13</td><td></td></tr>
+<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC&nbsp;13</td><td></td></tr>
+<tr><td><code>omp_all_memory</code> reserved locator</td><td>GCC&nbsp;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-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

* 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&nbsp;9</td><td>stub only</td></tr>
> +<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC&nbsp;9</td><td>Stub only</td></tr>
> @@ -141,0 +142 @@
> +<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC&nbsp;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 &mdash; 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&nbsp;9</td><td></td></tr>
+<tr><td>Supporting C++'s range-based for loop</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Iterators</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>!= as relational-op in canonical loop form for C/C++</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>C/C++'s lvalue expressions in <code>depend</code> clauses</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>mutexinoutset</code> <em>dependence-type</em> for <code>depend</code> clause</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>depobj</code> construct and depend objects </td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>depend</code> clause on <code>taskwait</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>teams</code> construct outside an enclosing target region</td><td>GCC&nbsp;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&nbsp;9/GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>defaultmap</code> extensions</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>hint</code> clause on the <code>atomic</code> construct</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td>Combined master constructs</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Runtime routines and environment variables to display runtimethread affinity information</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>omp_pause_resource</code> and <code>omp_pause_resource_all</code> runtime routines</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>nonmonotonic</code> as default loop schedule modifier for worksharing-loop constructs</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>atomic</code> constructs in <code>simd</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>task_reduction</code> clause with <code>taskgroup</code></td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>task</code> modifier to <code>reduction</code> clause</td><td>GCC&nbsp;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&nbsp;9</td><td></td></tr>
+<tr><td><code>taskloop</code> construct cancelable by <code>cancel</code> construct</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td>Lock hints were renamed to synchronization hints</td><td>GCC&nbsp;9</td><td></td></tr>
+<tr><td><code>requires</code> directive</td><td>GCC&nbsp;9<br>GCC&nbsp;12<br>&ndash;</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&nbsp;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&nbsp;10</td><td></td></tr>
+<tr><td><code>order(concurrent)</code> clause</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>loop</code> construct</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>declare variant</code> directive</td><td>GCC&nbsp;10/GCC&nbsp;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&nbsp;10</td><td></td></tr>
+<tr><td>Nested <code>declare target</code> directive</td><td>GCC&nbsp;10</td><td></td></tr>
+<tr><td><code>allocate</code> clause</td><td>GCC&nbsp;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&nbsp;11</td><td></td></tr>
+<tr><td>Predefined memory spaces, memory allocators, allocator traits</td><td>GCC&nbsp;11</td><td>Some are only stubs</td></tr>
+<tr><td>Non-rectangular loop nests</td><td>GCC&nbsp;11</td><td>Only C/C++</td></tr>
+<tr><td>Nested-parallel changes to <em>max-active-levels-var</em> ICV</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>detach</code> clause to <code>task</code> construct</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>omp_fulfill_event</code> runtime routine</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td>Memory management routines</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td>Implicit <code>declare target</code> directive</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>omp_get_supported_active_levels</code> routine</td><td>GCC&nbsp;11</td><td></td></tr>
+<tr><td><code>in_reduction</code> clause on <code>target</code> constructs</td><td>GCC&nbsp;12</td><td><code>nowait</code> only stub</td></tr>
+<tr><td><code>affinity</code> clause to <code>task</code> construct</td><td>GCC&nbsp;12</td><td>Stub only</td></tr>
+<tr><td><code>close</code> <em>map-type-modifier</em></td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_get_device_num</code> runtime routine</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>ancestor</code> modifier on <code>device</code> clause</td><td>GCC&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td>Mapping of Fortran pointer and allocatable variables, including pointer and allocatable components of variables</td><td>GCC&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>nothing</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>error</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>masked</code> construct</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>scope</code> directive</td><td>GCC&nbsp;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&nbsp;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&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>has_device_addr</code> clause to <code>target construct</code></td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Extensions to the <code>atomic</code> directive</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>seq_cst</code> clause on a <code>flush construct</code></td><td>GCC&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_display_env</code> runtime routine</td><td>GCC&nbsp;12</td><td>Not inside target regions</td></tr>
+<tr><td><code>OMP_PLACES</code> syntax extensions</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>OMP_NUM_TEAMS</code> and <code>OMP_TEAMS_THREAD_LIMIT</code> env variables</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Support of strictly structured blocks in Fortran</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td>Support of structured block sequences in C/C++</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>unconstrained</code> and <code>reproducible</code> modifiers on <code>order</code> clause</td><td>GCC&nbsp;12</td><td></td></tr>
+<tr><td><code>omp_target_is_accessible</code> runtime routine</td><td>GCC&nbsp;13</td><td></td></tr>
+<tr><td><code>omp_get_mapped_ptr</code> runtime routine</td><td>GCC&nbsp;13</td><td></td></tr>
+<tr><td><code>omp_all_memory</code> reserved locator</td><td>GCC&nbsp;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

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).