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

Andrew Stubbs ams@codesourcery.com
Wed Nov 13 13:05:00 GMT 2019


These patches are now all committed. I've adjusted the changelogs to 
list all the proper authors (apologies if I missed anyone).

Thank you for the quick reviews, Jakub. :-)

Andrew

On 12/11/2019 13:29, Andrew Stubbs wrote:
> 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
> 



More information about the Gcc-patches mailing list