This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, OpenACC] Add support for gang local storage allocation in shared memory
- From: Tom de Vries <tdevries at suse dot de>
- To: Julian Brown <julian at codesourcery dot com>
- Cc: Bernhard Reutner-Fischer <rep dot dot dot nop at gmail dot com>, gcc-patches at gcc dot gnu dot org, Cesar Philippidis <cesar at codesourcery dot com>, Chung-Lin Tang <cltang at codesourcery dot com>, jakub at redhat dot com
- Date: Fri, 5 Oct 2018 15:41:52 +0200
- Subject: Re: [PATCH, OpenACC] Add support for gang local storage allocation in shared memory
- References: <20180813172151.6bfcece3@squid.athome> <524d9017-e7f0-87a2-6a62-9b23abd65ac2@codesourcery.com> <94ac317d-5e4c-7738-4b22-b59d29dc114a@codesourcery.com> <20180815174637.7f7f9666@squid.athome> <1532490C-015A-4F89-8512-FD9751C7EEA4@gmail.com> <20180816164643.01e26476@squid.athome>
On 8/16/18 5:46 PM, Julian Brown wrote:
> On Wed, 15 Aug 2018 21:56:54 +0200
> Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> wrote:
>
>> On 15 August 2018 18:46:37 CEST, Julian Brown
>> <julian@codesourcery.com> wrote:
>>> On Mon, 13 Aug 2018 12:06:21 -0700
>>> Cesar Philippidis <cesar@codesourcery.com> wrote:
>>
>> atttribute has more t than strictly necessary.
>> Don't like signed integer levels where they should be some unsigned.
>> Also don't like single switch cases instead of if.
>> And omitting function comments even if the hook way above is
>> documented may be ok ish but is a bit lazy ;)
>
> Here's a new version with those comments addressed. I also changed the
> logic around a little to avoid adding decls to the vec in omp_context
> which would never be given the gang-private attribute.
>
> Re-tested with offloading to NVPTX.
>
> OK?
As far as the nvptx part is concerned, I see:
...
=== ERROR type #4: trailing operator (1 error(s)) ===
gcc/config/nvptx/nvptx.c:5946:27: gangprivate_shared_size =
...
Otherwise, the nvptx part is OK.
Thanks,
- Tom
>
> Julian
>
> 2018-08-10 Julian Brown <julian@codesourcery.com>
> Chung-Lin Tang <cltang@codesourcery.com>
>
> gcc/
> * config/nvptx/nvptx.c (tree-hash-traits.h): Include.
> (gangprivate_shared_size): New global variable.
> (gangprivate_shared_align): Likewise.
> (gangprivate_shared_sym): Likewise.
> (gangprivate_shared_hmap): Likewise.
> (nvptx_option_override): Initialize gangprivate_shared_sym,
> gangprivate_shared_align.
> (nvptx_file_end): Output gangprivate_shared_sym.
> (nvptx_goacc_expand_accel_var): New function.
> (nvptx_set_current_function): New function.
> (TARGET_SET_CURRENT_FUNCTION): Define hook.
> (TARGET_GOACC_EXPAND_ACCEL): Likewise.
> * doc/tm.texi (TARGET_GOACC_EXPAND_ACCEL_VAR): Document new hook.
> * doc/tm.texi.in (TARGET_GOACC_EXPAND_ACCEL_VAR): Likewise.
> * expr.c (expand_expr_real_1): Remap decls marked with the
> "oacc gangprivate" attribute.
> * omp-low.c (omp_context): Add oacc_partitioning_level and
> oacc_addressable_var_decls fields.
> (new_omp_context): Initialize oacc_addressable_var_decls in new
> omp_context.
> (delete_omp_context): Delete oacc_addressable_var_decls in old
> omp_context.
> (lower_oacc_head_tail): Record partitioning-level count in omp context.
> (oacc_record_private_var_clauses, oacc_record_vars_in_bind)
> (mark_oacc_gangprivate): New functions.
> (lower_omp_for): Call oacc_record_private_var_clauses with "for"
> clauses. Call mark_oacc_gangprivate for gang-partitioned loops.
> (lower_omp_target): Call oacc_record_private_var_clauses with "target"
> clauses.
> Call mark_oacc_gangprivate for offloaded target regions.
> (lower_omp_1): Call vars_in_bind for GIMPLE_BIND within OMP regions.
> * target.def (expand_accel_var): New hook.
>
> libgomp/
> * testsuite/libgomp.oacc-c-c++-common/gang-private-1.c: New test.
> * testsuite/libgomp.oacc-c-c++-common/loop-gwv-2.c: New test.
> * testsuite/libgomp.oacc-c/pr85465.c: New test.
> * testsuite/libgomp.oacc-fortran/gangprivate-attrib-1.f90: New test.
>