[Bug c++/102204] New: OpenMP offload map type restriction

xw111luoye at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Sep 5 03:30:39 GMT 2021


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.


More information about the Gcc-bugs mailing list