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

cesar at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |cesar at gcc dot gnu.org

--- Comment #1 from cesar at gcc dot gnu.org ---
The is the legacy firstprivate_int optimization. Prior to the param state
optimization, GCC used to build a struct of pointers to all of the data
mappings used by an offloaded region. That struct would then be passed to the
offloaded function. To optimize the transfer of firstprivate integer values,
Jakub introduced an GOMP_MAP_FIRSTPRIVATE_INT data mapping, which effective
converts 32-bit ints to 64-bit ints. The advantage here is that those
firstprivate values do not require a separate data mapping, because the 64-bt
int is casted into a dummy pointer. There should be on-device code to reconvert
that 64-bit int into a 32-bit int. If not, there's a bug somewhere.

With regards to OpenACC code passing data mappings to offloaded functions
directly via function arguments, it's not clear if the approach I took is
optimal for all targets. So, maybe when it comes time to upstream that patch,
it could be rewritten as a separate device-specific pass which expands struct
containing all of the offloaded data mappings into individual function
arguments.

Reply via email to