[Bug target/105421] GCN offloading, raised '-mgang-private-size': 'HSA_STATUS_ERROR_MEMORY_APERTURE_VIOLATION'

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Oct 20 10:02:12 GMT 2022


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

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Thomas Schwinge <tschwinge@gcc.gnu.org>:

https://gcc.gnu.org/g:7c55755d4c760de326809636531478fd7419e1e5

commit r13-3404-g7c55755d4c760de326809636531478fd7419e1e5
Author: Julian Brown <julian@codesourcery.com>
Date:   Fri Oct 14 11:06:07 2022 +0000

    amdgcn: Use FLAT addressing for all functions with pointer arguments
[PR105421]

    The GCN backend uses a heuristic to determine whether to use FLAT or
    GLOBAL addressing in a particular (offload) function: namely, if a
    function takes a pointer-to-scalar parameter, it is assumed that the
    pointer may refer to "flat scratch" space, and thus FLAT addressing must
    be used instead of GLOBAL.

    I came up with this heuristic initially whilst working on support for
    moving OpenACC gang-private variables into local-data share (scratch)
    memory. The assumption that only scalar variables would be transformed in
    that way turned out to be wrong.  For example, prior to the next patch in
    the series, Fortran compiler-generated temporary structures were treated
    as gang private and moved to LDS space, typically overflowing the region
    allocated for such variables.  That will no longer happen after that
    patch is applied, but there may be other cases of structs moving to LDS
    space now or in the future that this patch may be needed for.

    2022-10-14  Julian Brown  <julian@codesourcery.com>

            PR target/105421
    gcc/
            * config/gcn/gcn.cc (gcn_detect_incoming_pointer_arg): Any pointer
            argument forces FLAT addressing mode, not just
            pointer-to-non-aggregate.


More information about the Gcc-bugs mailing list