This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH 0/7 libgomp,amdgcn] AMD GCN Offloading Support
- From: Andrew Stubbs <ams at codesourcery dot com>
- To: <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 12 Nov 2019 13:29:09 +0000
- Subject: [PATCH 0/7 libgomp,amdgcn] AMD GCN Offloading Support
- Ironport-sdr: X1g61j/mHj/LKTPVWtmzizQQcBpalFyqdO0TcQL25+/TjsRZ/niYE/XmxHDv4QKzaVY7/u4uuk mK+7rL/6pUmIgPmy0FdI3CQiMQBLF+P/WBGrkMM+Uwq9JhqtYMKOqWOHvHZUMnB2EzwFmaVVCr F4BI8KA4hRdprIakv619grqHyvL7nnLurqkcO1iEXVHMVkD/lTzVKfQOCPbi383R7ZdsXlspia +B06l++bImGfP44GXdCIf8LEAGPwcf50wvrlwVSu2gaq8AxldRtKaOV5ON/RRgIOAbuNavGwHL g1I=
- Ironport-sdr: dlkJd4N7r0RgYYREvY+SaLMBkLvIu+q9lXggmix2niOapXw8YwFHKK2H/SCFWjZU7zXheO6M40 mxHLk452RHNipbQi4ddQAmDcwPcctJymn+m5Z7Jf99DRqjl3jbJeFTSqybdAFMmFi6x7r+49/k ST8DNTGII4obEbgDoSHC7mooUW7TaeReBlfcTewMCCFQxb2jSrgn9RKpB/9kAsemJP73Ydtakn 74iIdm/VEiMcIfv72gvJz09ToMIRSsLEmLuoDy5DKnWmoTCNgzZMU30FQZw3+cHW+Wt4n/PnQ6 ekM=
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