public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/102204] New: OpenMP offload map type restriction
@ 2021-09-05  3:30 xw111luoye at gmail dot com
  2021-09-13 13:41 ` [Bug c++/102204] " jakub at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: xw111luoye at gmail dot com @ 2021-09-05  3:30 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204

            Bug ID: 102204
           Summary: OpenMP offload map type restriction
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xw111luoye at gmail dot com
  Target Milestone: ---

With branch devel/omp/gcc-11
I'm getting
/home/yeluo/opt/qmcpack/build_rtx3060_gcc_offload_real/src/config.h:42:29:
error: array section does not have mappable type in ‘map’ clause
   42 |   #define PRAGMA_OFFLOAD(x) _Pragma(x)
      |                             ^~~~~~~
/home/yeluo/opt/qmcpack/src/Particle/SoaDistanceTableAAOMPTarget.h:84:5: note:
in expansion of macro ‘PRAGMA_OFFLOAD’
   84 |     PRAGMA_OFFLOAD("omp target enter data map(to : this[:1])")
      |     ^~~~~~~~~~~~~~
In file included from
/home/yeluo/opt/qmcpack/src/Particle/createDistanceTableAAOMPTarget.cpp:19:
/home/yeluo/opt/qmcpack/src/Particle/SoaDistanceTableAAOMPTarget.h:31:8: note:
type ‘qmcplusplus::SoaDistanceTableAAOMPTarget<double, 3, 41>’ with virtual
members is not mappable
   31 | struct SoaDistanceTableAAOMPTarget : public DTD_BConds<T, D, SC>,
public DistanceTableData
      |        ^~~~~~~~~~~~~~~~~~~~~~~~~~~

because SoaDistanceTableAAOMPTarget is a derived class and there is virtual
function overriding.
https://github.com/QMCPACK/qmcpack/blob/1a7af8e589726a91da94e5f6ad8b4e8d9e2acd4d/src/Particle/SoaDistanceTableAAOMPTarget.h#L31

In my case virtual functions are never called in offload region and I map
"this[:1]" for easy access a fixed data set. So I'm expecting just bit wise
copy to the device.

please remove this restriction.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/102204] OpenMP offload map type restriction
  2021-09-05  3:30 [Bug c++/102204] New: OpenMP offload map type restriction xw111luoye at gmail dot com
@ 2021-09-13 13:41 ` jakub at gcc dot gnu.org
  2021-09-13 14:03 ` xw111luoye at gmail dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-09-13 13:41 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
That isn't a made up restriction, but the OpenMP 4.5 standard (and older too)
explicitly requiring that
"A mappable type cannot contain virtual members."
OpenMP 5.0 doesn't have that restriction anymore, but removing it is part of
significant other changes that need to be implemented on the compiler and
library side and those haven't been done yet.
AFAIK no compiler has full OpenMP 5.0 support yet.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/102204] OpenMP offload map type restriction
  2021-09-05  3:30 [Bug c++/102204] New: OpenMP offload map type restriction xw111luoye at gmail dot com
  2021-09-13 13:41 ` [Bug c++/102204] " jakub at gcc dot gnu.org
@ 2021-09-13 14:03 ` xw111luoye at gmail dot com
  2022-01-28 18:27 ` xw111luoye at gmail dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: xw111luoye at gmail dot com @ 2021-09-13 14:03 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204

--- Comment #2 from Ye Luo <xw111luoye at gmail dot com> ---
User code has been written in mostly 5.0 fashion as 4.5 has too many
restrictions. For most users, they only need a subset of 5.0 feature with
up-to-date compilers and fully implemented 5.0 is not expected.

Back to this issue, could the compiler just issue a warning instead of a full
stop? In my case, bitwise copying of a struct is sufficient. Namely use the
struct as if there is no virtual method. At least this unblock some potential
users.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/102204] OpenMP offload map type restriction
  2021-09-05  3:30 [Bug c++/102204] New: OpenMP offload map type restriction xw111luoye at gmail dot com
  2021-09-13 13:41 ` [Bug c++/102204] " jakub at gcc dot gnu.org
  2021-09-13 14:03 ` xw111luoye at gmail dot com
@ 2022-01-28 18:27 ` xw111luoye at gmail dot com
  2022-02-10 18:04 ` cvs-commit at gcc dot gnu.org
  2022-02-10 18:07 ` burnus at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: xw111luoye at gmail dot com @ 2022-01-28 18:27 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204

--- Comment #3 from Ye Luo <xw111luoye at gmail dot com> ---
I tried today's main 3f0fcda37f58d4108feb67de08f181a32bcb6388.
This issue persists. Any chance this will be resolved in 12 release?

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/102204] OpenMP offload map type restriction
  2021-09-05  3:30 [Bug c++/102204] New: OpenMP offload map type restriction xw111luoye at gmail dot com
                   ` (2 preceding siblings ...)
  2022-01-28 18:27 ` xw111luoye at gmail dot com
@ 2022-02-10 18:04 ` cvs-commit at gcc dot gnu.org
  2022-02-10 18:07 ` burnus at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-02-10 18:04 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tobias Burnus <burnus@gcc.gnu.org>:

https://gcc.gnu.org/g:c22f3fb780775b91548e32937a3ce1095a7c72a3

commit r12-7185-gc22f3fb780775b91548e32937a3ce1095a7c72a3
Author: Tobias Burnus <tobias@codesourcery.com>
Date:   Thu Feb 10 18:57:37 2022 +0100

    OpenMP/C++: Permit mapping classes with virtual members [PR102204]

            PR c++/102204
    gcc/cp/ChangeLog:

            * decl2.cc (cp_omp_mappable_type_1): Remove check for virtual
            members as those are permitted since OpenMP 5.0.

    libgomp/ChangeLog:

            * testsuite/libgomp.c++/target-virtual-1.C: New test.

    gcc/testsuite/ChangeLog:

            * g++.dg/gomp/unmappable-1.C: Remove previously expected
dg-message.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug c++/102204] OpenMP offload map type restriction
  2021-09-05  3:30 [Bug c++/102204] New: OpenMP offload map type restriction xw111luoye at gmail dot com
                   ` (3 preceding siblings ...)
  2022-02-10 18:04 ` cvs-commit at gcc dot gnu.org
@ 2022-02-10 18:07 ` burnus at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: burnus at gcc dot gnu.org @ 2022-02-10 18:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102204

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED

--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> ---
FIXED on mainline alias GCC 12.

Thanks for the report!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-02-10 18:07 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-05  3:30 [Bug c++/102204] New: OpenMP offload map type restriction xw111luoye at gmail dot com
2021-09-13 13:41 ` [Bug c++/102204] " jakub at gcc dot gnu.org
2021-09-13 14:03 ` xw111luoye at gmail dot com
2022-01-28 18:27 ` xw111luoye at gmail dot com
2022-02-10 18:04 ` cvs-commit at gcc dot gnu.org
2022-02-10 18:07 ` burnus at gcc dot gnu.org

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