public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Julian Brown <julian@codesourcery.com>
To: <gcc-patches@gcc.gnu.org>
Cc: Andrew Stubbs <andrew_stubbs@mentor.com>
Subject: [PATCH 0/6] [og9] OpenACC worker partitioning in middle end (AMD GCN)
Date: Thu, 05 Sep 2019 01:46:00 -0000	[thread overview]
Message-ID: <cover.1567644180.git.julian@codesourcery.com> (raw)

This patch series provides support for worker partitioning in the middle
end. The OpenACC device-lowering pass (oaccdevlow) is split into three
passes: the first assigns parallelism levels to loops, the second (new)
part rewrites basic blocks to implement a neutering/broadcasting scheme
for the OpenACC worker-partitioned execution mode, and the third part
performs the rest of the previous device-lowering pass.

Also included are patches to add support for placing gang-private
variables in special memory (e.g. LDS, "local-data share", on AMD GCN),
and to rewrite reductions targeting reference variables to use temporary
local scalar variables instead.

Further commentary is provided alongside individual patches.

Tested with offloading to AMD GCN. I will apply to the
openacc-gcc-9-branch shortly.

Thanks,

Julian

Julian Brown (6):
  [og9] Target-dependent gang-private variable decl rewriting
  [og9] OpenACC middle-end worker-partitioning support
  [og9] AMD GCN adjustments for middle-end worker partitioning
  [og9] Fix up tests for oaccdevlow pass splitting
  [og9] Reference reduction localization
  [og9] Enable worker partitioning for AMD GCN

 gcc/ChangeLog.openacc                         |   83 +
 gcc/Makefile.in                               |    1 +
 gcc/config/gcn/gcn-protos.h                   |    2 +-
 gcc/config/gcn/gcn-tree.c                     |    6 +-
 gcc/config/gcn/gcn.c                          |   15 +-
 gcc/config/gcn/gcn.opt                        |    2 +-
 gcc/doc/tm.texi                               |   14 +
 gcc/doc/tm.texi.in                            |    6 +
 gcc/gimplify.c                                |  102 +
 gcc/omp-builtins.def                          |    8 +
 gcc/omp-low.c                                 |   47 +-
 gcc/omp-offload.c                             |  290 ++-
 gcc/omp-offload.h                             |    1 +
 gcc/omp-sese.c                                | 2036 +++++++++++++++++
 gcc/omp-sese.h                                |   26 +
 gcc/passes.def                                |    2 +
 gcc/target.def                                |   19 +
 gcc/targhooks.h                               |    1 +
 gcc/testsuite/ChangeLog.openacc               |   12 +
 .../goacc/classify-kernels-unparallelized.c   |    8 +-
 .../c-c++-common/goacc/classify-kernels.c     |    8 +-
 .../c-c++-common/goacc/classify-parallel.c    |    8 +-
 .../c-c++-common/goacc/classify-routine.c     |    8 +-
 .../goacc/classify-kernels-unparallelized.f95 |    8 +-
 .../gfortran.dg/goacc/classify-kernels.f95    |    8 +-
 .../gfortran.dg/goacc/classify-parallel.f95   |    8 +-
 .../gfortran.dg/goacc/classify-routine.f95    |    8 +-
 gcc/tree-core.h                               |    4 +-
 gcc/tree-pass.h                               |    2 +
 gcc/tree.c                                    |   11 +-
 gcc/tree.h                                    |    2 +
 libgomp/ChangeLog.openacc                     |    5 +
 libgomp/plugin/plugin-gcn.c                   |    4 +-
 33 files changed, 2660 insertions(+), 105 deletions(-)
 create mode 100644 gcc/omp-sese.c
 create mode 100644 gcc/omp-sese.h

-- 
2.22.0

             reply	other threads:[~2019-09-05  1:46 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-05  1:46 Julian Brown [this message]
2019-09-05  1:46 ` [PATCH 1/6] [og9] Target-dependent gang-private variable decl rewriting Julian Brown
2019-09-05  1:46 ` [PATCH 4/6] [og9] Fix up tests for oaccdevlow pass splitting Julian Brown
2019-09-05  1:46 ` [PATCH 3/6] [og9] AMD GCN adjustments for middle-end worker partitioning Julian Brown
2019-09-05  1:46 ` [PATCH 2/6] [og9] OpenACC middle-end worker-partitioning support Julian Brown
2019-09-05 13:52   ` Chung-Lin Tang
2019-09-05 15:01     ` Julian Brown
2019-09-06 12:32       ` Julian Brown
2019-09-05  1:47 ` [PATCH 5/6] [og9] Reference reduction localization Julian Brown
2019-09-05  1:47 ` [PATCH 6/6] [og9] Enable worker partitioning for AMD GCN Julian Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1567644180.git.julian@codesourcery.com \
    --to=julian@codesourcery.com \
    --cc=andrew_stubbs@mentor.com \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).