Hi Gerald,
On 16.01.23 23:16, Gerald Pfeifer wrote:
On Mon, 16 Jan 2023, Tobias Burnus wrote:
<code>requires_offload</code>, <code>unified_address</code>
- and <code>unified_shared_memory</code> clauses cause that the
- only available device is the initial device (the host). Fortran now
+ and <code>unified_shared_memory</code> clauses imply the initial
+ device (= the host) as the only available device. Fortran now
I really stumble over the "as" – that sounds wrong and I fail to parse this
part. I think it should be "is".
happy to make this change. Or do you have an idea to reframe the
sentence (or paragraph) altogether?
Actually, I thinking about it again, the "imply" is also misleading – by
itself the restrictions do not imply that accelerators/GPUs are not
supported; that's only implied in GCC as the libgomp plugins for nvptx
and amdgcn don't handle it, yet.
How about the following? I put the other change into its own bullet
point to be less confusing, completely rewording the remaining item and
mention reverse offload support.
(Reverse offload is: While being in a target region ('omp target', i.e.
running code targeted for an offload device), it is possible to execute
a code on the host. — If there is no available non-host device, the
target region will run on the host (host fallback); in that case,
reverse offload is trivial (as host code calls host code).)
BTW: Before the release, further updates to changes.html are required.
Keep them coming! :-)
Actually, I think only one change was missing (looking at
libgomp/libgomp.texi), unless some more pending patches are accepted. –
I have now included that change in the attached patch.
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
OpenMP: Update gcc-13/changes + projects/gomp
* htdocs/gcc-13/changes.html: Improve wording; mention nvptx reverse
offload.
* htdocs/projects/gomp/index.html: Split clause/directive entry
for 'allocate' and mark the clause variant as fully implemented.
htdocs/gcc-13/changes.html | 19 +++++++++++++------
htdocs/projects/gomp/index.html | 9 +++++++--
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/htdocs/gcc-13/changes.html b/htdocs/gcc-13/changes.html
index ca9cd2da..6deb445f 100644
--- a/htdocs/gcc-13/changes.html
+++ b/htdocs/gcc-13/changes.html
@@ -53,12 +53,19 @@ a work-in-progress.</p>
<li id="openmp"><a href="https://gcc.gnu.org/projects/gomp/">OpenMP</a>
<ul>
<li>
- Reverse offload is now supported and the all clauses to the
- <code>requires</code> directive are now accepted. However, the
- <code>requires_offload</code>, <code>unified_address</code>
- and <code>unified_shared_memory</code> clauses imply the initial
- device (= the host) as the only available device. Fortran now
- supports non-rectangular loop nests, which were added for C/C++ in GCC 11.
+ Reverse offload is now supported with nvptx devices. Additionally, the
+ <code>requires</code> handling has been improved and all clauses are
+ now accepted. If a requirement cannot be fulfilled for an accessible
+ device, this device is excluded from the list of available devices. This
+ may imply that the only device left is the host (the initial device).
+ In particular, <code>requires_offload</code> is currently unsupported on
+ AMD GCN devices while <code>unified_address</code> and
+ <code>unified_shared_memory</code> are unsupported by all non-host
+ devices.
+ </li>
+ <li>
+ OpenMP 5.0: Fortran now supports non-rectangular loop nests, which were
+ added for C/C++ in GCC 11.
</li>
<li>
The following OpenMP 5.1 features have been added: the
diff --git a/htdocs/projects/gomp/index.html b/htdocs/projects/gomp/index.html
index 19ff3c7d..dc9c88e7 100644
--- a/htdocs/projects/gomp/index.html
+++ b/htdocs/projects/gomp/index.html
@@ -547,9 +547,14 @@ than listed, depending on resolved corner cases and optimizations.</p>
<td></td>
</tr>
<tr>
- <td><code>align</code> clause/modifier in <code>allocate</code> directive/clause and <code>allocator</code> directive</td>
+ <td><code>align</code> clause in <code>allocate</code> directive</td>
+ <td class="unsupported">No</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>align</code> modifier in <code>allocate</code> clause</td>
<td class="supported"><a href="../../gcc-12/changes.html#languages">GCC 12</a></td>
- <td>C/C++ on clause only</td>
+ <td></td>
</tr>
<tr>
<td><code>thread_limit</code> clause to <code>target</code> construct</td>