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

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