This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 0/7 libgomp,amdgcn] AMD GCN Offloading Support


Hi all,

This patch series contributes initial OpenMP and OpenACC support for AMD
GCN GPUs.

The test results are not yet perfect, but there are many more passes than
failures, so this is a good starting point.  The rest of the issues can
be addressed as bugs during stage 3.

I have another, unfinished, patch to massage the testsuite itself.  I'll
post this shortly, once I've finished checking the forward port is
appropriate.

This series implements only single-worker support for OpenACC.  Julian
Brown may post the multiple-worker support soon, if it isn't too
difficult to forward-port.  Otherwise that will have to wait for GCC 11.

Andrew

Andrew Stubbs (7):
  Move generic libgomp files from nvptx to accel
  GCN mkoffload
  Add device number to GOMP_OFFLOAD_openacc_async_construct
  GCN libgomp port
  Optimize GCN OpenMP malloc performance
  Use a single worker for OpenACC on AMD GCN
  GCN Libgomp Plugin

 gcc/config/gcn/gcn.c                          |    4 +-
 gcc/config/gcn/gcn.opt                        |    2 +-
 gcc/config/gcn/mkoffload.c                    |  694 +++
 gcc/config/gcn/offload.h                      |   35 +
 include/gomp-constants.h                      |    2 +
 libgomp/Makefile.am                           |    2 +-
 libgomp/Makefile.in                           |   61 +-
 libgomp/config.h.in                           |    3 +
 .../config/{nvptx => accel}/libgomp-plugin.c  |    0
 libgomp/config/{nvptx => accel}/lock.c        |    0
 libgomp/config/{nvptx => accel}/mutex.c       |    0
 libgomp/config/{nvptx => accel}/mutex.h       |    0
 libgomp/config/{nvptx => accel}/oacc-async.c  |    0
 libgomp/config/{nvptx => accel}/oacc-cuda.c   |    0
 libgomp/config/{nvptx => accel}/oacc-host.c   |    0
 libgomp/config/{nvptx => accel}/oacc-init.c   |    0
 libgomp/config/{nvptx => accel}/oacc-mem.c    |    0
 libgomp/config/{nvptx => accel}/oacc-plugin.c |    0
 libgomp/config/{nvptx => accel}/omp-lock.h    |    0
 libgomp/config/{nvptx => accel}/openacc.f90   |    1 +
 libgomp/config/{nvptx => accel}/pool.h        |    0
 libgomp/config/{nvptx => accel}/proc.c        |    0
 libgomp/config/{nvptx => accel}/ptrlock.c     |    0
 libgomp/config/{nvptx => accel}/ptrlock.h     |    0
 libgomp/config/{nvptx => accel}/sem.c         |    0
 libgomp/config/{nvptx => accel}/sem.h         |    0
 .../{nvptx => accel}/thread-stacksize.h       |    0
 libgomp/config/gcn/affinity-fmt.c             |   51 +
 libgomp/config/gcn/bar.c                      |  232 +
 libgomp/config/gcn/bar.h                      |  168 +
 libgomp/config/gcn/doacross.h                 |   58 +
 libgomp/config/gcn/icv-device.c               |   72 +
 libgomp/config/gcn/oacc-target.c              |   31 +
 libgomp/config/gcn/simple-bar.h               |   61 +
 libgomp/config/gcn/target.c                   |   67 +
 libgomp/config/gcn/task.c                     |   39 +
 libgomp/config/gcn/team.c                     |  212 +
 libgomp/config/gcn/time.c                     |   52 +
 libgomp/configure                             |   61 +-
 libgomp/configure.ac                          |    2 +-
 libgomp/configure.tgt                         |    6 +-
 libgomp/libgomp-plugin.h                      |    5 +-
 libgomp/libgomp.h                             |   74 +
 libgomp/oacc-async.c                          |    3 +-
 libgomp/oacc-host.c                           |    2 +-
 libgomp/oacc-int.h                            |    9 +-
 libgomp/oacc-target.c                         |    1 +
 libgomp/openacc.f90                           |    1 +
 libgomp/openacc.h                             |    1 +
 libgomp/plugin/Makefrag.am                    |   14 +
 libgomp/plugin/configfrag.ac                  |   35 +
 libgomp/plugin/plugin-gcn.c                   | 3985 +++++++++++++++++
 libgomp/plugin/plugin-nvptx.c                 |    2 +-
 libgomp/team.c                                |   15 +-
 libgomp/work.c                                |    4 +-
 55 files changed, 6035 insertions(+), 32 deletions(-)
 create mode 100644 gcc/config/gcn/mkoffload.c
 create mode 100644 gcc/config/gcn/offload.h
 rename libgomp/config/{nvptx => accel}/libgomp-plugin.c (100%)
 rename libgomp/config/{nvptx => accel}/lock.c (100%)
 rename libgomp/config/{nvptx => accel}/mutex.c (100%)
 rename libgomp/config/{nvptx => accel}/mutex.h (100%)
 rename libgomp/config/{nvptx => accel}/oacc-async.c (100%)
 rename libgomp/config/{nvptx => accel}/oacc-cuda.c (100%)
 rename libgomp/config/{nvptx => accel}/oacc-host.c (100%)
 rename libgomp/config/{nvptx => accel}/oacc-init.c (100%)
 rename libgomp/config/{nvptx => accel}/oacc-mem.c (100%)
 rename libgomp/config/{nvptx => accel}/oacc-plugin.c (100%)
 rename libgomp/config/{nvptx => accel}/omp-lock.h (100%)
 rename libgomp/config/{nvptx => accel}/openacc.f90 (98%)
 rename libgomp/config/{nvptx => accel}/pool.h (100%)
 rename libgomp/config/{nvptx => accel}/proc.c (100%)
 rename libgomp/config/{nvptx => accel}/ptrlock.c (100%)
 rename libgomp/config/{nvptx => accel}/ptrlock.h (100%)
 rename libgomp/config/{nvptx => accel}/sem.c (100%)
 rename libgomp/config/{nvptx => accel}/sem.h (100%)
 rename libgomp/config/{nvptx => accel}/thread-stacksize.h (100%)
 create mode 100644 libgomp/config/gcn/affinity-fmt.c
 create mode 100644 libgomp/config/gcn/bar.c
 create mode 100644 libgomp/config/gcn/bar.h
 create mode 100644 libgomp/config/gcn/doacross.h
 create mode 100644 libgomp/config/gcn/icv-device.c
 create mode 100644 libgomp/config/gcn/oacc-target.c
 create mode 100644 libgomp/config/gcn/simple-bar.h
 create mode 100644 libgomp/config/gcn/target.c
 create mode 100644 libgomp/config/gcn/task.c
 create mode 100644 libgomp/config/gcn/team.c
 create mode 100644 libgomp/config/gcn/time.c
 create mode 100644 libgomp/oacc-target.c
 create mode 100644 libgomp/plugin/plugin-gcn.c

-- 
2.20.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]