From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 68915 invoked by alias); 10 Aug 2015 16:51:04 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 68900 invoked by uid 89); 10 Aug 2015 16:51:02 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.9 required=5.0 tests=AWL,BAYES_50,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 10 Aug 2015 16:50:57 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-FEM-02.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1ZOqHk-00049e-HT from Thomas_Schwinge@mentor.com ; Mon, 10 Aug 2015 09:50:53 -0700 Received: from feldtkeller.schwinge.homeip.net (137.202.0.76) by SVR-IES-FEM-02.mgc.mentorg.com (137.202.0.106) with Microsoft SMTP Server id 14.3.224.2; Mon, 10 Aug 2015 17:50:51 +0100 From: Thomas Schwinge To: CC: Jakub Jelinek , , , , Subject: Re: libgomp: plugin for non-shared memory host execution In-Reply-To: <878u9wpg2s.fsf@kepler.schwinge.homeip.net> References: <87zjpehpz4.fsf@schwinge.name> <20131108154000.GP27813@tucnak.zalov.cz> <87lhzqs3tv.fsf@kepler.schwinge.homeip.net> <55BA050A.3060200@mentor.com> <87r46zt76g.fsf@schwinge.name> <87vbd1q33a.fsf@kepler.schwinge.homeip.net> <20150730115117.GP1780@tucnak.redhat.com> <878u9wpg2s.fsf@kepler.schwinge.homeip.net> User-Agent: Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/24.4.1 (i586-pc-linux-gnu) Date: Mon, 10 Aug 2015 16:51:00 -0000 Message-ID: <87zj1zjdeo.fsf@kepler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" X-SW-Source: 2015-08/txt/msg00477.txt.bz2 --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-length: 48968 Hi! On Fri, 31 Jul 2015 16:16:59 +0200, I wrote: > On Thu, 30 Jul 2015 13:51:17 +0200, Jakub Jelinek wrot= e: > > On Thu, Jul 30, 2015 at 01:47:37PM +0200, Thomas Schwinge wrote: > > > > Here is such a libgomp plugin plus the infrastructure for initial s= upport > > > > of non-shared memory host execution. [...] > > >=20 > > > ... the libgomp plugin as it is currently implemented fails to adequa= tely > > > provide such functionality: nobody so far has implemented support for > > > certain data mapping constructs; so it is not currently used for Open= MP > > > offloading testing, and also disabled for certain OpenACC offloading = test > > > cases. Its improper integration into the offloading compilation proc= ess, > > > , is also > > > causing issues: we use the target compiler for compiling "device" cod= e -- > > > but it doesn't know that it's being used for that purpose, so cannot > > > properly handle some constructs, such as efficiently implement > > > acc_on_device with constant argument. > > >=20 > > > It has been useful for initial bring-up, to test-drive the libgomp pl= ugin > > > interface, when the nvptx backend and libgomp nvptx plugin as well as= the > > > intelmic plugin were not yet available, but it's now probably time to > > > retire this plugin, at least until somebody feels like working on > > > integrating and implementing it properly. Unless there are any > > > objections, I'll later propose a patch to this effect. > >=20 > > I agree with the removal. It would be nice if somebody could add OpenA= CC > > support to the IntelMIC plugin, then you'd get a non-shared memory host > > execution testing for free, as it has a reasonable emulation mode. >=20 > I find the intelmic plugin, with all its emulation code, a bit > heavy-weight for this purpose. But, let's leave that for later. ;-) >=20 > Committed to gomp-4_0-branch in r226444; will address trunk later (next > week). >=20 > commit 0eefa17a15b9a58fff02239289fc9c40ed62634f > Author: tschwinge > Date: Fri Jul 31 14:13:59 2015 +0000 >=20 > [PR libgomp/65742, PR middle-end/66332] libgomp: Remove plugin for no= n-shared memory host execution Committed to trunk in r226763: commit f212338e41d10436a48f04ea499f63dce5bf50ef Author: tschwinge Date: Mon Aug 10 16:48:26 2015 +0000 [PR libgomp/65742, PR middle-end/66332] libgomp: Remove plugin for non-= shared memory host execution =20=20=20=20 gcc/ * builtins.c (expand_builtin_acc_on_device) [ACCEL_COMPILER]: Emit open-coded sequence. * omp-low.c (oacc_process_reduction_data): Remove handline of GOMP_DEVICE_HOST_NONSHM. gcc/testsuite/ * c-c++-common/goacc/acc_on_device-2.c: Remove XFAIL for C. include/ * gomp-constants.c (GOMP_DEVICE_HOST_NONSHM): Remove. libgomp/ * libgomp-plugin.h (enum offload_target_type): Remove OFFLOAD_TARGET_TYPE_HOST_NONSHM. * openacc.f90 (openacc_kinds): Remove acc_device_host_nonshm. * openacc.h (enum acc_device_t): Likewise. * openacc_lib.h: Likewise. * oacc-init.c (name_of_acc_device_t): Don't handle it. (acc_on_device): Just use __builtin_acc_on_device. * testsuite/libgomp.oacc-c-c++-common/if-1.c: Don't forbid usage of acc_on_device builtin. * plugin/plugin-host.h: Remove file. * plugin/plugin-host.c: Likewise, but salvage some content into... * oacc-host.c: ... this file. * plugin/Makefrag.am: Don't build libgomp-plugin-host_nonshm.la. * plugin/configfrag.ac (offload_targets): Don't add host_nonshm. * Makefile.in: Regenerate. * configure: Likewise. * testsuite/lib/libgomp.exp (check_effective_target_openacc_host_nonshm_selected): Remove. * testsuite/libgomp.oacc-c++/c++.exp: Don't handle ACC_DEVICE_TYPE=3Dhost_nonshm. * testsuite/libgomp.oacc-c/c.exp: Likewise. * testsuite/libgomp.oacc-fortran/fortran.exp: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c: Likewise. * testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f: Likewise. * testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f: Likewise. =20=20=20=20 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226763 138bc75d-0d04-04= 10-961f-82ee72b054a4 --- gcc/ChangeLog | 7 + gcc/builtins.c | 12 +- gcc/omp-low.c | 18 -- gcc/testsuite/ChangeLog | 6 + gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c | 10 +- include/ChangeLog | 4 + include/gomp-constants.h | 4 +- libgomp/ChangeLog | 29 +++ libgomp/Makefile.in | 33 +-- libgomp/configure | 1 - libgomp/libgomp-plugin.h | 2 +- libgomp/oacc-host.c | 230 ++++++++++++++--- libgomp/oacc-init.c | 16 +- libgomp/openacc.f90 | 2 +- libgomp/openacc.h | 2 +- libgomp/openacc_lib.h | 3 +- libgomp/plugin/Makefrag.am | 9 - libgomp/plugin/configfrag.ac | 1 - libgomp/plugin/plugin-host.c | 259 ----------------= ---- libgomp/plugin/plugin-host.h | 37 --- libgomp/testsuite/lib/libgomp.exp | 10 - libgomp/testsuite/libgomp.oacc-c++/c++.exp | 3 - .../libgomp.oacc-c-c++-common/acc_on_device-1.c | 11 - libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c | 1 - libgomp/testsuite/libgomp.oacc-c/c.exp | 3 - .../libgomp.oacc-fortran/acc_on_device-1-1.f90 | 7 - .../libgomp.oacc-fortran/acc_on_device-1-2.f | 7 - .../libgomp.oacc-fortran/acc_on_device-1-3.f | 7 - libgomp/testsuite/libgomp.oacc-fortran/fortran.exp | 3 - 29 files changed, 261 insertions(+), 476 deletions(-) diff --git gcc/ChangeLog gcc/ChangeLog index f547931..efc177c 100644 --- gcc/ChangeLog +++ gcc/ChangeLog @@ -1,5 +1,12 @@ 2015-08-10 Thomas Schwinge =20 + PR libgomp/65742 + PR middle-end/66332 + * builtins.c (expand_builtin_acc_on_device) [ACCEL_COMPILER]: Emit + open-coded sequence. + * omp-low.c (oacc_process_reduction_data): Remove handline of + GOMP_DEVICE_HOST_NONSHM. + * lto-streamer-in.c (lto_input_mode_table): Adjust to GET_MODE_INNER changes. =20 diff --git gcc/builtins.c gcc/builtins.c index eb7b7b2..82229a5 100644 --- gcc/builtins.c +++ gcc/builtins.c @@ -5879,10 +5879,8 @@ expand_stack_save (void) acceleration device (ACCEL_COMPILER conditional). */ =20 static rtx -expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUSED, - rtx target ATTRIBUTE_UNUSED) +expand_builtin_acc_on_device (tree exp, rtx target) { -#ifdef ACCEL_COMPILER if (!validate_arglist (exp, INTEGER_TYPE, VOID_TYPE)) return NULL_RTX; =20 @@ -5891,8 +5889,13 @@ expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNU= SED, /* Return (arg =3D=3D v1 || arg =3D=3D v2) ? 1 : 0. */ machine_mode v_mode =3D TYPE_MODE (TREE_TYPE (arg)); rtx v =3D expand_normal (arg), v1, v2; +#ifdef ACCEL_COMPILER v1 =3D GEN_INT (GOMP_DEVICE_NOT_HOST); v2 =3D GEN_INT (ACCEL_COMPILER_acc_device); +#else + v1 =3D GEN_INT (GOMP_DEVICE_NONE); + v2 =3D GEN_INT (GOMP_DEVICE_HOST); +#endif machine_mode target_mode =3D TYPE_MODE (integer_type_node); if (!target || !register_operand (target, target_mode)) target =3D gen_reg_rtx (target_mode); @@ -5906,9 +5909,6 @@ expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUS= ED, emit_label (done_label); =20 return target; -#else - return NULL; -#endif } =20 =20 diff --git gcc/omp-low.c gcc/omp-low.c index 0f5c0f1..c1dc919 100644 --- gcc/omp-low.c +++ gcc/omp-low.c @@ -9975,24 +9975,6 @@ oacc_process_reduction_data (gimple_seq *body, gimpl= e_seq *in_stmt_seqp, in_stmt_seqp); gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (exit)); =20 - /* Also, set nthreads =3D 1 for ACC_DEVICE_TYPE=3Dhost_nonshm. */ - gimplify_assign (acc_device_host, - build_int_cst (integer_type_node, - GOMP_DEVICE_HOST_NONSHM), - in_stmt_seqp); - - enter =3D create_artificial_label (UNKNOWN_LOCATION); - exit =3D create_artificial_label (UNKNOWN_LOCATION); - - stmt =3D gimple_build_cond (EQ_EXPR, acc_device, acc_device_host, - enter, exit); - gimple_seq_add_stmt (in_stmt_seqp, stmt); - gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (enter)); - gimplify_assign (nthreads, fold_build1 (NOP_EXPR, sizetype, - integer_one_node), - in_stmt_seqp); - gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (exit)); - oacc_initialize_reduction_data (clauses, nthreads, in_stmt_seqp, ctx); oacc_finalize_reduction_data (clauses, nthreads, out_stmt_seqp, ctx); diff --git gcc/testsuite/ChangeLog gcc/testsuite/ChangeLog index 0e707eb..bf858e2 100644 --- gcc/testsuite/ChangeLog +++ gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2015-08-10 Thomas Schwinge + + PR libgomp/65742 + PR middle-end/66332 + * c-c++-common/goacc/acc_on_device-2.c: Remove XFAIL for C. + 2015-08-10 Uros Bizjak =20 PR fortran/64022 diff --git gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c gcc/testsuite= /c-c++-common/goacc/acc_on_device-2.c index 6e3d292..ef622a8 100644 --- gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c +++ gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c @@ -20,17 +20,9 @@ f (void) } =20 /* With -fopenacc, we're expecting the builtin to be expanded, so no calls. - TODO: in C++, even under extern "C", the use of enum for acc_device_t perturbs expansion as a builtin, which expects an int parameter. It's = fine when changing acc_device_t to plain int, but that's not what we're doin= g in . =20 - TODO: given that we can't expand acc_on_device in - gcc/builtins.c:expand_builtin_acc_on_device for in the !ACCEL_COMPILER = case - (because at that point we don't know whether we're acc_device_host or - acc_device_host_nonshm), we'll (erroneously) get a library call in the = host - code. - - { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0 "= expand" { xfail { c || c++ } } } } */ - + { dg-final { scan-rtl-dump-times "\\\(call \[^\\n\]* acc_on_device" 0 "= expand" { xfail c++ } } } */ diff --git include/ChangeLog include/ChangeLog index 4a18ed8..7e2e499 100644 --- include/ChangeLog +++ include/ChangeLog @@ -1,3 +1,7 @@ +2015-08-10 Thomas Schwinge + + * gomp-constants.c (GOMP_DEVICE_HOST_NONSHM): Remove. + 2015-05-22 Yunlian Jiang =20 * libiberty.h (asprintf): Don't declare if HAVE_DECL_ASPRINTF is diff --git include/gomp-constants.h include/gomp-constants.h index e3d2820..807e672 100644 --- include/gomp-constants.h +++ include/gomp-constants.h @@ -101,11 +101,11 @@ enum gomp_map_kind =20 /* Device codes. Keep in sync with libgomp/{openacc.h,openacc.f90,openacc_lib.h}:acc_device_t as well as - libgomp/libgomp_target.h. */ + libgomp/libgomp-plugin.h. */ #define GOMP_DEVICE_NONE 0 #define GOMP_DEVICE_DEFAULT 1 #define GOMP_DEVICE_HOST 2 -#define GOMP_DEVICE_HOST_NONSHM 3 +/* #define GOMP_DEVICE_HOST_NONSHM 3 removed. */ #define GOMP_DEVICE_NOT_HOST 4 #define GOMP_DEVICE_NVIDIA_PTX 5 #define GOMP_DEVICE_INTEL_MIC 6 diff --git libgomp/ChangeLog libgomp/ChangeLog index 084aabd..1d265b6 100644 --- libgomp/ChangeLog +++ libgomp/ChangeLog @@ -1,4 +1,33 @@ 2015-08-10 Thomas Schwinge + + * libgomp-plugin.h (enum offload_target_type): Remove + OFFLOAD_TARGET_TYPE_HOST_NONSHM. + * openacc.f90 (openacc_kinds): Remove acc_device_host_nonshm. + * openacc.h (enum acc_device_t): Likewise. + * openacc_lib.h: Likewise. + * oacc-init.c (name_of_acc_device_t): Don't handle it. + (acc_on_device): Just use __builtin_acc_on_device. + * testsuite/libgomp.oacc-c-c++-common/if-1.c: Don't forbid usage + of acc_on_device builtin. + * plugin/plugin-host.h: Remove file. + * plugin/plugin-host.c: Likewise, but salvage some content into... + * oacc-host.c: ... this file. + * plugin/Makefrag.am: Don't build libgomp-plugin-host_nonshm.la. + * plugin/configfrag.ac (offload_targets): Don't add host_nonshm. + * Makefile.in: Regenerate. + * configure: Likewise. + * testsuite/lib/libgomp.exp + (check_effective_target_openacc_host_nonshm_selected): Remove. + * testsuite/libgomp.oacc-c++/c++.exp: Don't handle + ACC_DEVICE_TYPE=3Dhost_nonshm. + * testsuite/libgomp.oacc-c/c.exp: Likewise. + * testsuite/libgomp.oacc-fortran/fortran.exp: Likewise. + * testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c: Likewise. + * testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90: Likewise. + * testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f: Likewise. + * testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f: Likewise. + +2015-08-10 Thomas Schwinge Jakub Jelinek =20 * config/nvptx/affinity.c: New file. diff --git libgomp/Makefile.in libgomp/Makefile.in index 9d07e8d..79745ce 100644 --- libgomp/Makefile.in +++ libgomp/Makefile.in @@ -146,15 +146,6 @@ am__installdirs =3D "$(DESTDIR)$(toolexeclibdir)" "$(D= ESTDIR)$(infodir)" \ "$(DESTDIR)$(fincludedir)" "$(DESTDIR)$(libsubincludedir)" \ "$(DESTDIR)$(toolexeclibdir)" LTLIBRARIES =3D $(toolexeclib_LTLIBRARIES) -libgomp_plugin_host_nonshm_la_DEPENDENCIES =3D libgomp.la -am_libgomp_plugin_host_nonshm_la_OBJECTS =3D \ - libgomp_plugin_host_nonshm_la-plugin-host.lo -libgomp_plugin_host_nonshm_la_OBJECTS =3D \ - $(am_libgomp_plugin_host_nonshm_la_OBJECTS) -libgomp_plugin_host_nonshm_la_LINK =3D $(LIBTOOL) --tag=3DCC \ - $(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=3Dlink $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libgomp_plugin_host_nonshm_la_LDFLAGS) $(LDFLAGS) -o $@ am__DEPENDENCIES_1 =3D @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_DEPENDENCIES =3D libgomp.la \ @PLUGIN_NVPTX_TRUE@ $(am__DEPENDENCIES_1) @@ -196,8 +187,7 @@ FCLD =3D $(FC) FCLINK =3D $(LIBTOOL) --tag=3DFC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=3Dlink $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ -SOURCES =3D $(libgomp_plugin_host_nonshm_la_SOURCES) \ - $(libgomp_plugin_nvptx_la_SOURCES) $(libgomp_la_SOURCES) +SOURCES =3D $(libgomp_plugin_nvptx_la_SOURCES) $(libgomp_la_SOURCES) MULTISRCTOP =3D=20 MULTIBUILDTOP =3D=20 MULTIDIRS =3D=20 @@ -401,8 +391,7 @@ libsubincludedir =3D $(libdir)/gcc/$(target_alias)/$(gc= c_version)/include AM_CPPFLAGS =3D $(addprefix -I, $(search_path)) AM_CFLAGS =3D $(XCFLAGS) AM_LDFLAGS =3D $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) -toolexeclib_LTLIBRARIES =3D libgomp.la $(am__append_1) \ - libgomp-plugin-host_nonshm.la +toolexeclib_LTLIBRARIES =3D libgomp.la $(am__append_1) nodist_toolexeclib_HEADERS =3D libgomp.spec =20 # -Wc is only a libtool option. @@ -437,14 +426,6 @@ libgomp_la_SOURCES =3D alloc.c barrier.c critical.c en= v.c error.c iter.c \ @PLUGIN_NVPTX_TRUE@ $(lt_host_flags) $(PLUGIN_NVPTX_LDFLAGS) @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBADD =3D libgomp.la $(PLUGIN_= NVPTX_LIBS) @PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBTOOLFLAGS =3D --tag=3Ddisabl= e-static -libgomp_plugin_host_nonshm_version_info =3D -version-info $(libtool_VERSIO= N) -libgomp_plugin_host_nonshm_la_SOURCES =3D plugin/plugin-host.c -libgomp_plugin_host_nonshm_la_CPPFLAGS =3D $(AM_CPPFLAGS) -DHOST_NONSHM_PL= UGIN -libgomp_plugin_host_nonshm_la_LDFLAGS =3D \ - $(libgomp_plugin_host_nonshm_version_info) $(lt_host_flags) - -libgomp_plugin_host_nonshm_la_LIBADD =3D libgomp.la -libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS =3D --tag=3Ddisable-static nodist_noinst_HEADERS =3D libgomp_f.h nodist_libsubinclude_HEADERS =3D omp.h openacc.h @USE_FORTRAN_TRUE@nodist_finclude_HEADERS =3D omp_lib.h omp_lib.f90 omp_li= b.mod omp_lib_kinds.mod \ @@ -572,8 +553,6 @@ clean-toolexeclibLTLIBRARIES: echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done -libgomp-plugin-host_nonshm.la: $(libgomp_plugin_host_nonshm_la_OBJECTS) $(= libgomp_plugin_host_nonshm_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_host_non= shm_la_DEPENDENCIES)=20 - $(libgomp_plugin_host_nonshm_la_LINK) -rpath $(toolexeclibdir) $(libgomp_= plugin_host_nonshm_la_OBJECTS) $(libgomp_plugin_host_nonshm_la_LIBADD) $(LI= BS) libgomp-plugin-nvptx.la: $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plug= in_nvptx_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_nvptx_la_DEPENDENCIES)=20 $(libgomp_plugin_nvptx_la_LINK) $(am_libgomp_plugin_nvptx_la_rpath) $(lib= gomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_LIBADD) $(LIBS) libgomp.la: $(libgomp_la_OBJECTS) $(libgomp_la_DEPENDENCIES) $(EXTRA_libgo= mp_la_DEPENDENCIES)=20 @@ -596,7 +575,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iter_ull.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp-plugin.Plo@am__qu= ote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_host_nonsh= m_la-plugin-host.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_nvptx_la-p= lugin-nvptx.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loop.Plo@am__quote@ @@ -644,13 +622,6 @@ distclean-compile: @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom= p) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< =20 -libgomp_plugin_host_nonshm_la-plugin-host.lo: plugin/plugin-host.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=3DCC $(libgomp_plugin_host_nonshm_l= a_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=3Dcompile $(CC) $(DEFS) $(DEFAULT_IN= CLUDES) $(INCLUDES) $(libgomp_plugin_host_nonshm_la_CPPFLAGS) $(CPPFLAGS) $= (AM_CFLAGS) $(CFLAGS) -MT libgomp_plugin_host_nonshm_la-plugin-host.lo -MD = -MP -MF $(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Tpo -c -o libgo= mp_plugin_host_nonshm_la-plugin-host.lo `test -f 'plugin/plugin-host.c' || = echo '$(srcdir)/'`plugin/plugin-host.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgomp_plugin_host_nonshm_la-plu= gin-host.Tpo $(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source=3D'plugin/plugin-host.c' object= =3D'libgomp_plugin_host_nonshm_la-plugin-host.lo' libtool=3Dyes @AMDEPBACKS= LASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=3D$(DEPDIR) $(CCDEPMODE) $(depcom= p) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=3DCC $(libgomp_plugin_host_nonshm_= la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=3Dcompile $(CC) $(DEFS) $(DEFAULT_I= NCLUDES) $(INCLUDES) $(libgomp_plugin_host_nonshm_la_CPPFLAGS) $(CPPFLAGS) = $(AM_CFLAGS) $(CFLAGS) -c -o libgomp_plugin_host_nonshm_la-plugin-host.lo `= test -f 'plugin/plugin-host.c' || echo '$(srcdir)/'`plugin/plugin-host.c - libgomp_plugin_nvptx_la-plugin-nvptx.lo: plugin/plugin-nvptx.c @am__fastdepCC_TRUE@ $(LIBTOOL) --tag=3DCC $(libgomp_plugin_nvptx_la_LIBT= OOLFLAGS) $(LIBTOOLFLAGS) --mode=3Dcompile $(CC) $(DEFS) $(DEFAULT_INCLUDES= ) $(INCLUDES) $(libgomp_plugin_nvptx_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) = $(CFLAGS) -MT libgomp_plugin_nvptx_la-plugin-nvptx.lo -MD -MP -MF $(DEPDIR)= /libgomp_plugin_nvptx_la-plugin-nvptx.Tpo -c -o libgomp_plugin_nvptx_la-plu= gin-nvptx.lo `test -f 'plugin/plugin-nvptx.c' || echo '$(srcdir)/'`plugin/p= lugin-nvptx.c @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nv= ptx.Tpo $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Plo diff --git libgomp/configure libgomp/configure index 867ce40..c93e877 100755 --- libgomp/configure +++ libgomp/configure @@ -15170,7 +15170,6 @@ if test x"$plugin_support" =3D xyes; then =20 $as_echo "#define PLUGIN_SUPPORT 1" >>confdefs.h =20 - offload_targets=3Dhost_nonshm elif test "x${enable_offload_targets-no}" !=3D xno; then as_fn_error "Can't support offloading without support for plugins" "$LIN= ENO" 5 fi diff --git libgomp/libgomp-plugin.h libgomp/libgomp-plugin.h index 1072ae4..24fbb94 100644 --- libgomp/libgomp-plugin.h +++ libgomp/libgomp-plugin.h @@ -46,7 +46,7 @@ extern "C" { enum offload_target_type { OFFLOAD_TARGET_TYPE_HOST =3D 2, - OFFLOAD_TARGET_TYPE_HOST_NONSHM =3D 3, + /* OFFLOAD_TARGET_TYPE_HOST_NONSHM =3D 3 removed. */ OFFLOAD_TARGET_TYPE_NVIDIA_PTX =3D 5, OFFLOAD_TARGET_TYPE_INTEL_MIC =3D 6 }; diff --git libgomp/oacc-host.c libgomp/oacc-host.c index 6dcdbf3..17a5102 100644 --- libgomp/oacc-host.c +++ libgomp/oacc-host.c @@ -26,51 +26,215 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ =20 -/* This shares much of the implementation of the plugin-host.c "host_nonsh= m" - plugin. */ -#include "plugin/plugin-host.c" +#include "libgomp.h" +#include "oacc-int.h" + +#include +#include +#include + +static struct gomp_device_descr host_dispatch; + +static const char * +host_get_name (void) +{ + return host_dispatch.name; +} + +static unsigned int +host_get_caps (void) +{ + return host_dispatch.capabilities; +} + +static int +host_get_type (void) +{ + return host_dispatch.type; +} + +static int +host_get_num_devices (void) +{ + return 1; +} + +static void +host_init_device (int n __attribute__ ((unused))) +{ +} + +static void +host_fini_device (int n __attribute__ ((unused))) +{ +} + +static int +host_load_image (int n __attribute__ ((unused)), + const void *t __attribute__ ((unused)), + struct addr_pair **r __attribute__ ((unused))) +{ + return 0; +} + +static void +host_unload_image (int n __attribute__ ((unused)), + const void *t __attribute__ ((unused))) +{ +} + +static void * +host_alloc (int n __attribute__ ((unused)), size_t s) +{ + return gomp_malloc (s); +} + +static void +host_free (int n __attribute__ ((unused)), void *p) +{ + free (p); +} + +static void * +host_dev2host (int n __attribute__ ((unused)), + void *h __attribute__ ((unused)), + const void *d __attribute__ ((unused)), + size_t s __attribute__ ((unused))) +{ + return NULL; +} + +static void * +host_host2dev (int n __attribute__ ((unused)), + void *d __attribute__ ((unused)), + const void *h __attribute__ ((unused)), + size_t s __attribute__ ((unused))) +{ + return NULL; +} + +static void +host_run (int n __attribute__ ((unused)), void *fn_ptr, void *vars) +{ + void (*fn)(void *) =3D (void (*)(void *)) fn_ptr; + + fn (vars); +} + +static void +host_openacc_exec (void (*fn) (void *), + size_t mapnum __attribute__ ((unused)), + void **hostaddrs, + void **devaddrs __attribute__ ((unused)), + size_t *sizes __attribute__ ((unused)), + unsigned short *kinds __attribute__ ((unused)), + int num_gangs __attribute__ ((unused)), + int num_workers __attribute__ ((unused)), + int vector_length __attribute__ ((unused)), + int async __attribute__ ((unused)), + void *targ_mem_desc __attribute__ ((unused))) +{ + fn (hostaddrs); +} + +static void +host_openacc_register_async_cleanup (void *targ_mem_desc __attribute__ ((u= nused))) +{ +} + +static int +host_openacc_async_test (int async __attribute__ ((unused))) +{ + return 1; +} + +static int +host_openacc_async_test_all (void) +{ + return 1; +} + +static void +host_openacc_async_wait (int async __attribute__ ((unused))) +{ +} + +static void +host_openacc_async_wait_async (int async1 __attribute__ ((unused)), + int async2 __attribute__ ((unused))) +{ +} + +static void +host_openacc_async_wait_all (void) +{ +} + +static void +host_openacc_async_wait_all_async (int async __attribute__ ((unused))) +{ +} + +static void +host_openacc_async_set_async (int async __attribute__ ((unused))) +{ +} + +static void * +host_openacc_create_thread_data (int ord __attribute__ ((unused))) +{ + return NULL; +} + +static void +host_openacc_destroy_thread_data (void *tls_data __attribute__ ((unused))) +{ +} =20 static struct gomp_device_descr host_dispatch =3D { .name =3D "host", - .capabilities =3D (GOMP_OFFLOAD_CAP_OPENACC_200 + .capabilities =3D (GOMP_OFFLOAD_CAP_SHARED_MEM | GOMP_OFFLOAD_CAP_NATIVE_EXEC - | GOMP_OFFLOAD_CAP_SHARED_MEM), + | GOMP_OFFLOAD_CAP_OPENACC_200), .target_id =3D 0, .type =3D OFFLOAD_TARGET_TYPE_HOST, =20 - .get_name_func =3D GOMP_OFFLOAD_get_name, - .get_caps_func =3D GOMP_OFFLOAD_get_caps, - .get_type_func =3D GOMP_OFFLOAD_get_type, - .get_num_devices_func =3D GOMP_OFFLOAD_get_num_devices, - .init_device_func =3D GOMP_OFFLOAD_init_device, - .fini_device_func =3D GOMP_OFFLOAD_fini_device, - .load_image_func =3D GOMP_OFFLOAD_load_image, - .unload_image_func =3D GOMP_OFFLOAD_unload_image, - .alloc_func =3D GOMP_OFFLOAD_alloc, - .free_func =3D GOMP_OFFLOAD_free, - .dev2host_func =3D GOMP_OFFLOAD_dev2host, - .host2dev_func =3D GOMP_OFFLOAD_host2dev, - .run_func =3D GOMP_OFFLOAD_run, + .get_name_func =3D host_get_name, + .get_caps_func =3D host_get_caps, + .get_type_func =3D host_get_type, + .get_num_devices_func =3D host_get_num_devices, + .init_device_func =3D host_init_device, + .fini_device_func =3D host_fini_device, + .load_image_func =3D host_load_image, + .unload_image_func =3D host_unload_image, + .alloc_func =3D host_alloc, + .free_func =3D host_free, + .dev2host_func =3D host_dev2host, + .host2dev_func =3D host_host2dev, + .run_func =3D host_run, =20 + .mem_map =3D { NULL }, + /* .lock initilized in goacc_host_init. */ .is_initialized =3D false, =20 .openacc =3D { - .exec_func =3D GOMP_OFFLOAD_openacc_parallel, + .data_environ =3D NULL, =20 - .register_async_cleanup_func - =3D GOMP_OFFLOAD_openacc_register_async_cleanup, + .exec_func =3D host_openacc_exec, =20 - .async_set_async_func =3D GOMP_OFFLOAD_openacc_async_set_async, - .async_test_func =3D GOMP_OFFLOAD_openacc_async_test, - .async_test_all_func =3D GOMP_OFFLOAD_openacc_async_test_all, - .async_wait_func =3D GOMP_OFFLOAD_openacc_async_wait, - .async_wait_async_func =3D GOMP_OFFLOAD_openacc_async_wait_async, - .async_wait_all_func =3D GOMP_OFFLOAD_openacc_async_wait_all, - .async_wait_all_async_func =3D GOMP_OFFLOAD_openacc_async_wait_all_a= sync, + .register_async_cleanup_func =3D host_openacc_register_async_cleanup, =20 - .create_thread_data_func =3D GOMP_OFFLOAD_openacc_create_thread_data, - .destroy_thread_data_func =3D GOMP_OFFLOAD_openacc_destroy_thread_da= ta, + .async_test_func =3D host_openacc_async_test, + .async_test_all_func =3D host_openacc_async_test_all, + .async_wait_func =3D host_openacc_async_wait, + .async_wait_async_func =3D host_openacc_async_wait_async, + .async_wait_all_func =3D host_openacc_async_wait_all, + .async_wait_all_async_func =3D host_openacc_async_wait_all_async, + .async_set_async_func =3D host_openacc_async_set_async, + + .create_thread_data_func =3D host_openacc_create_thread_data, + .destroy_thread_data_func =3D host_openacc_destroy_thread_data, =20 .cuda =3D { .get_current_device_func =3D NULL, @@ -81,9 +245,9 @@ static struct gomp_device_descr host_dispatch =3D } }; =20 -/* Register this device type. */ -static __attribute__ ((constructor)) -void goacc_host_init (void) +/* Initialize and register this device type. */ +static __attribute__ ((constructor)) void +goacc_host_init (void) { gomp_mutex_init (&host_dispatch.lock); goacc_register (&host_dispatch); diff --git libgomp/oacc-init.c libgomp/oacc-init.c index 105d9dc..c12f8ad 100644 --- libgomp/oacc-init.c +++ libgomp/oacc-init.c @@ -29,7 +29,6 @@ #include "libgomp.h" #include "oacc-int.h" #include "openacc.h" -#include "plugin/plugin-host.h" #include #include #include @@ -102,7 +101,6 @@ name_of_acc_device_t (enum acc_device_t type) case acc_device_none: return "none"; case acc_device_default: return "default"; case acc_device_host: return "host"; - case acc_device_host_nonshm: return "host_nonshm"; case acc_device_not_host: return "not_host"; case acc_device_nvidia: return "nvidia"; default: gomp_fatal ("unknown device type %u", (unsigned) type); @@ -625,18 +623,8 @@ ialias (acc_set_device_num) int acc_on_device (acc_device_t dev) { - struct goacc_thread *thr =3D goacc_thread (); - - /* We only want to appear to be the "host_nonshm" plugin from "offloaded" - code -- i.e. within a parallel region. Test a flag set by the - openacc_parallel hook of the host_nonshm plugin to determine that. */ - if (acc_get_device_type () =3D=3D acc_device_host_nonshm - && thr && thr->target_tls - && ((struct nonshm_thread *)thr->target_tls)->nonshm_exec) - return dev =3D=3D acc_device_host_nonshm || dev =3D=3D acc_device_not_= host; - - /* For OpenACC, libgomp is only built for the host, so this is sufficien= t. */ - return dev =3D=3D acc_device_host || dev =3D=3D acc_device_none; + /* Just rely on the compiler builtin. */ + return __builtin_acc_on_device (dev); } =20 ialias (acc_on_device) diff --git libgomp/openacc.f90 libgomp/openacc.f90 index 04d8088..fbd63c6 100644 --- libgomp/openacc.f90 +++ libgomp/openacc.f90 @@ -43,7 +43,7 @@ module openacc_kinds integer (acc_device_kind), parameter :: acc_device_none =3D 0 integer (acc_device_kind), parameter :: acc_device_default =3D 1 integer (acc_device_kind), parameter :: acc_device_host =3D 2 - integer (acc_device_kind), parameter :: acc_device_host_nonshm =3D 3 + ! integer (acc_device_kind), parameter :: acc_device_host_nonshm =3D 3 r= emoved. integer (acc_device_kind), parameter :: acc_device_not_host =3D 4 integer (acc_device_kind), parameter :: acc_device_nvidia =3D 5 =20 diff --git libgomp/openacc.h libgomp/openacc.h index 44a1526..fc353e1 100644 --- libgomp/openacc.h +++ libgomp/openacc.h @@ -53,7 +53,7 @@ typedef enum acc_device_t acc_device_none =3D 0, acc_device_default =3D 1, acc_device_host =3D 2, - acc_device_host_nonshm =3D 3, + /* acc_device_host_nonshm =3D 3 removed. */ acc_device_not_host =3D 4, acc_device_nvidia =3D 5, _ACC_device_hwm diff --git libgomp/openacc_lib.h libgomp/openacc_lib.h index 28659a1..e9c503e 100644 --- libgomp/openacc_lib.h +++ libgomp/openacc_lib.h @@ -38,7 +38,8 @@ integer (acc_device_kind), parameter :: acc_device_none =3D 0 integer (acc_device_kind), parameter :: acc_device_default =3D 1 integer (acc_device_kind), parameter :: acc_device_host =3D 2 - integer (acc_device_kind), parameter :: acc_device_host_nonshm =3D 3 +! integer (acc_device_kind), parameter :: acc_device_host_nonshm =3D 3 +! removed. integer (acc_device_kind), parameter :: acc_device_not_host =3D 4 integer (acc_device_kind), parameter :: acc_device_nvidia =3D 5 =20 diff --git libgomp/plugin/Makefrag.am libgomp/plugin/Makefrag.am index 167485f..745becd 100644 --- libgomp/plugin/Makefrag.am +++ libgomp/plugin/Makefrag.am @@ -38,12 +38,3 @@ libgomp_plugin_nvptx_la_LDFLAGS +=3D $(PLUGIN_NVPTX_LDFL= AGS) libgomp_plugin_nvptx_la_LIBADD =3D libgomp.la $(PLUGIN_NVPTX_LIBS) libgomp_plugin_nvptx_la_LIBTOOLFLAGS =3D --tag=3Ddisable-static endif - -libgomp_plugin_host_nonshm_version_info =3D -version-info $(libtool_VERSIO= N) -toolexeclib_LTLIBRARIES +=3D libgomp-plugin-host_nonshm.la -libgomp_plugin_host_nonshm_la_SOURCES =3D plugin/plugin-host.c -libgomp_plugin_host_nonshm_la_CPPFLAGS =3D $(AM_CPPFLAGS) -DHOST_NONSHM_PL= UGIN -libgomp_plugin_host_nonshm_la_LDFLAGS =3D \ - $(libgomp_plugin_host_nonshm_version_info) $(lt_host_flags) -libgomp_plugin_host_nonshm_la_LIBADD =3D libgomp.la -libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS =3D --tag=3Ddisable-static diff --git libgomp/plugin/configfrag.ac libgomp/plugin/configfrag.ac index 254c688..8c2a420 100644 --- libgomp/plugin/configfrag.ac +++ libgomp/plugin/configfrag.ac @@ -33,7 +33,6 @@ AC_CHECK_LIB(dl, dlsym, , [plugin_support=3Dno]) if test x"$plugin_support" =3D xyes; then AC_DEFINE(PLUGIN_SUPPORT, 1, [Define if all infrastructure, needed for plugins, is supported.]) - offload_targets=3Dhost_nonshm elif test "x${enable_offload_targets-no}" !=3D xno; then AC_MSG_ERROR([Can't support offloading without support for plugins]) fi diff --git libgomp/plugin/plugin-host.c libgomp/plugin/plugin-host.c deleted file mode 100644 index da3c5f4..0000000 --- libgomp/plugin/plugin-host.c +++ /dev/null @@ -1,259 +0,0 @@ -/* OpenACC Runtime Library: acc_device_host, acc_device_host_nonshm. - - Copyright (C) 2013-2015 Free Software Foundation, Inc. - - Contributed by Mentor Embedded. - - This file is part of the GNU Offloading and Multi Processing Library - (libgomp). - - Libgomp is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - Libgomp is distributed in the hope that it will be useful, but WITHOUT = ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNE= SS - FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - Under Section 7 of GPL version 3, you are granted additional - permissions described in the GCC Runtime Library Exception, version - 3.1, as published by the Free Software Foundation. - - You should have received a copy of the GNU General Public License and - a copy of the GCC Runtime Library Exception along with this program; - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - . */ - -/* Simple implementation of support routines for a shared-memory - acc_device_host, and a non-shared memory acc_device_host_nonshm, with t= he - latter built as a plugin. */ - -#include "openacc.h" -#include "config.h" -#ifdef HOST_NONSHM_PLUGIN -#include "libgomp-plugin.h" -#include "oacc-plugin.h" -#else -#include "libgomp.h" -#include "oacc-int.h" -#endif - -#include -#include -#include -#include -#include - -#ifdef HOST_NONSHM_PLUGIN -#define STATIC -#define GOMP(X) GOMP_PLUGIN_##X -#define SELF "host_nonshm plugin: " -#else -#define STATIC static -#define GOMP(X) gomp_##X -#define SELF "host: " -#endif - -#ifdef HOST_NONSHM_PLUGIN -#include "plugin-host.h" -#endif - -STATIC const char * -GOMP_OFFLOAD_get_name (void) -{ -#ifdef HOST_NONSHM_PLUGIN - return "host_nonshm"; -#else - return "host"; -#endif -} - -STATIC unsigned int -GOMP_OFFLOAD_get_caps (void) -{ - unsigned int caps =3D (GOMP_OFFLOAD_CAP_OPENACC_200 - | GOMP_OFFLOAD_CAP_NATIVE_EXEC); - -#ifndef HOST_NONSHM_PLUGIN - caps |=3D GOMP_OFFLOAD_CAP_SHARED_MEM; -#endif - - return caps; -} - -STATIC int -GOMP_OFFLOAD_get_type (void) -{ -#ifdef HOST_NONSHM_PLUGIN - return OFFLOAD_TARGET_TYPE_HOST_NONSHM; -#else - return OFFLOAD_TARGET_TYPE_HOST; -#endif -} - -STATIC int -GOMP_OFFLOAD_get_num_devices (void) -{ - return 1; -} - -STATIC void -GOMP_OFFLOAD_init_device (int n __attribute__ ((unused))) -{ -} - -STATIC void -GOMP_OFFLOAD_fini_device (int n __attribute__ ((unused))) -{ -} - -STATIC int -GOMP_OFFLOAD_load_image (int n __attribute__ ((unused)), - const void *t __attribute__ ((unused)), - struct addr_pair **r __attribute__ ((unused))) -{ - return 0; -} - -STATIC void -GOMP_OFFLOAD_unload_image (int n __attribute__ ((unused)), - const void *t __attribute__ ((unused))) -{ -} - -STATIC void * -GOMP_OFFLOAD_alloc (int n __attribute__ ((unused)), size_t s) -{ - return GOMP (malloc) (s); -} - -STATIC void -GOMP_OFFLOAD_free (int n __attribute__ ((unused)), void *p) -{ - free (p); -} - -STATIC void * -GOMP_OFFLOAD_host2dev (int n __attribute__ ((unused)), void *d, const void= *h, - size_t s) -{ -#ifdef HOST_NONSHM_PLUGIN - memcpy (d, h, s); -#endif - - return 0; -} - -STATIC void * -GOMP_OFFLOAD_dev2host (int n __attribute__ ((unused)), void *h, const void= *d, - size_t s) -{ -#ifdef HOST_NONSHM_PLUGIN - memcpy (h, d, s); -#endif - - return 0; -} - -STATIC void -GOMP_OFFLOAD_run (int n __attribute__ ((unused)), void *fn_ptr, void *vars) -{ - void (*fn)(void *) =3D (void (*)(void *)) fn_ptr; - - fn (vars); -} - -STATIC void -GOMP_OFFLOAD_openacc_parallel (void (*fn) (void *), - size_t mapnum __attribute__ ((unused)), - void **hostaddrs __attribute__ ((unused)), - void **devaddrs __attribute__ ((unused)), - size_t *sizes __attribute__ ((unused)), - unsigned short *kinds __attribute__ ((unused)), - int num_gangs __attribute__ ((unused)), - int num_workers __attribute__ ((unused)), - int vector_length __attribute__ ((unused)), - int async __attribute__ ((unused)), - void *targ_mem_desc __attribute__ ((unused))) -{ -#ifdef HOST_NONSHM_PLUGIN - struct nonshm_thread *thd =3D GOMP_PLUGIN_acc_thread (); - thd->nonshm_exec =3D true; - fn (devaddrs); - thd->nonshm_exec =3D false; -#else - fn (hostaddrs); -#endif -} - -STATIC void -GOMP_OFFLOAD_openacc_register_async_cleanup (void *targ_mem_desc) -{ -#ifdef HOST_NONSHM_PLUGIN - /* "Asynchronous" launches are executed synchronously on the (non-SHM) h= ost, - so there's no point in delaying host-side cleanup -- just do it now. = */ - GOMP_PLUGIN_async_unmap_vars (targ_mem_desc); -#endif -} - -STATIC void -GOMP_OFFLOAD_openacc_async_set_async (int async __attribute__ ((unused))) -{ -} - -STATIC int -GOMP_OFFLOAD_openacc_async_test (int async __attribute__ ((unused))) -{ - return 1; -} - -STATIC int -GOMP_OFFLOAD_openacc_async_test_all (void) -{ - return 1; -} - -STATIC void -GOMP_OFFLOAD_openacc_async_wait (int async __attribute__ ((unused))) -{ -} - -STATIC void -GOMP_OFFLOAD_openacc_async_wait_all (void) -{ -} - -STATIC void -GOMP_OFFLOAD_openacc_async_wait_async (int async1 __attribute__ ((unused)), - int async2 __attribute__ ((unused))) -{ -} - -STATIC void -GOMP_OFFLOAD_openacc_async_wait_all_async (int async __attribute__ ((unuse= d))) -{ -} - -STATIC void * -GOMP_OFFLOAD_openacc_create_thread_data (int ord - __attribute__ ((unused))) -{ -#ifdef HOST_NONSHM_PLUGIN - struct nonshm_thread *thd - =3D GOMP_PLUGIN_malloc (sizeof (struct nonshm_thread)); - thd->nonshm_exec =3D false; - return thd; -#else - return NULL; -#endif -} - -STATIC void -GOMP_OFFLOAD_openacc_destroy_thread_data (void *tls_data) -{ -#ifdef HOST_NONSHM_PLUGIN - free (tls_data); -#endif -} diff --git libgomp/plugin/plugin-host.h libgomp/plugin/plugin-host.h deleted file mode 100644 index 96955d1..0000000 --- libgomp/plugin/plugin-host.h +++ /dev/null @@ -1,37 +0,0 @@ -/* OpenACC Runtime Library: acc_device_host, acc_device_host_nonshm. - - Copyright (C) 2015 Free Software Foundation, Inc. - - Contributed by Mentor Embedded. - - This file is part of the GNU Offloading and Multi Processing Library - (libgomp). - - Libgomp is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3, or (at your option) - any later version. - - Libgomp is distributed in the hope that it will be useful, but WITHOUT = ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNE= SS - FOR A PARTICULAR PURPOSE. See the GNU General Public License for - more details. - - Under Section 7 of GPL version 3, you are granted additional - permissions described in the GCC Runtime Library Exception, version - 3.1, as published by the Free Software Foundation. - - You should have received a copy of the GNU General Public License and - a copy of the GCC Runtime Library Exception along with this program; - see the files COPYING3 and COPYING.RUNTIME respectively. If not, see - . */ - -#ifndef PLUGIN_HOST_H -#define PLUGIN_HOST_H - -struct nonshm_thread -{ - bool nonshm_exec; -}; - -#endif diff --git libgomp/testsuite/lib/libgomp.exp libgomp/testsuite/lib/libgomp.= exp index 438777f..f04b163 100644 --- libgomp/testsuite/lib/libgomp.exp +++ libgomp/testsuite/lib/libgomp.exp @@ -355,13 +355,3 @@ proc check_effective_target_openacc_host_selected { } { } return 0; } - -# Return 1 if the host_nonshm target is selected for offloaded - -proc check_effective_target_openacc_host_nonshm_selected { } { - global offload_target_openacc - if { $offload_target_openacc =3D=3D "host_nonshm" } { - return 1; - } - return 0; -} diff --git libgomp/testsuite/libgomp.oacc-c++/c++.exp libgomp/testsuite/lib= gomp.oacc-c++/c++.exp index 3b97024..88b0269 100644 --- libgomp/testsuite/libgomp.oacc-c++/c++.exp +++ libgomp/testsuite/libgomp.oacc-c++/c++.exp @@ -81,9 +81,6 @@ if { $lang_test_file_found } { host { set acc_mem_shared 1 } - host_nonshm { - set acc_mem_shared 0 - } nvidia { if { ![check_effective_target_openacc_nvidia_accel_present] } { # Don't bother; execution testing is going to FAIL. diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c li= bgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c index 81ea476..8112745 100644 --- libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c +++ libgomp/testsuite/libgomp.oacc-c-c++-common/acc_on_device-1.c @@ -15,8 +15,6 @@ main (int argc, char *argv[]) abort (); if (!acc_on_device (acc_device_host)) abort (); - if (acc_on_device (acc_device_host_nonshm)) - abort (); if (acc_on_device (acc_device_not_host)) abort (); if (acc_on_device (acc_device_nvidia)) @@ -32,8 +30,6 @@ main (int argc, char *argv[]) abort (); if (!acc_on_device (acc_device_host)) abort (); - if (acc_on_device (acc_device_host_nonshm)) - abort (); if (acc_on_device (acc_device_not_host)) abort (); if (acc_on_device (acc_device_nvidia)) @@ -51,13 +47,6 @@ main (int argc, char *argv[]) abort (); if (acc_on_device (acc_device_host)) abort (); -#if ACC_DEVICE_TYPE_host_nonshm - if (!acc_on_device (acc_device_host_nonshm)) - abort (); -#else - if (acc_on_device (acc_device_host_nonshm)) - abort (); -#endif if (!acc_on_device (acc_device_not_host)) abort (); #if ACC_DEVICE_TYPE_nvidia diff --git libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c libgomp/tests= uite/libgomp.oacc-c-c++-common/if-1.c index 184b355..6aa3bb7 100644 --- libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c +++ libgomp/testsuite/libgomp.oacc-c-c++-common/if-1.c @@ -1,5 +1,4 @@ /* { dg-do run } */ -/* { dg-additional-options "-fno-builtin-acc_on_device" } */ =20 #include #include diff --git libgomp/testsuite/libgomp.oacc-c/c.exp libgomp/testsuite/libgomp= .oacc-c/c.exp index 326b988..5020e6a 100644 --- libgomp/testsuite/libgomp.oacc-c/c.exp +++ libgomp/testsuite/libgomp.oacc-c/c.exp @@ -44,9 +44,6 @@ foreach offload_target_openacc $offload_targets_s_openacc= { host { set acc_mem_shared 1 } - host_nonshm { - set acc_mem_shared 0 - } nvidia { if { ![check_effective_target_openacc_nvidia_accel_present] } { # Don't bother; execution testing is going to FAIL. diff --git libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90 lib= gomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90 index 4488818..1a10f32 100644 --- libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90 +++ libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90 @@ -11,7 +11,6 @@ implicit none =20 if (.not. acc_on_device (acc_device_none)) call abort if (.not. acc_on_device (acc_device_host)) call abort -if (acc_on_device (acc_device_host_nonshm)) call abort if (acc_on_device (acc_device_not_host)) call abort if (acc_on_device (acc_device_nvidia)) call abort =20 @@ -21,7 +20,6 @@ if (acc_on_device (acc_device_nvidia)) call abort !$acc parallel if(.false.) if (.not. acc_on_device (acc_device_none)) call abort if (.not. acc_on_device (acc_device_host)) call abort -if (acc_on_device (acc_device_host_nonshm)) call abort if (acc_on_device (acc_device_not_host)) call abort if (acc_on_device (acc_device_nvidia)) call abort !$acc end parallel @@ -34,11 +32,6 @@ if (acc_on_device (acc_device_nvidia)) call abort !$acc parallel if (acc_on_device (acc_device_none)) call abort if (acc_on_device (acc_device_host)) call abort -#if ACC_DEVICE_TYPE_host_nonshm -if (.not. acc_on_device (acc_device_host_nonshm)) call abort -#else -if (acc_on_device (acc_device_host_nonshm)) call abort -#endif if (.not. acc_on_device (acc_device_not_host)) call abort #if ACC_DEVICE_TYPE_nvidia if (.not. acc_on_device (acc_device_nvidia)) call abort diff --git libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f libgo= mp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f index 0047a19..a19045b 100644 --- libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f +++ libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f @@ -11,7 +11,6 @@ =20 IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT - IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT =20 @@ -21,7 +20,6 @@ !$ACC PARALLEL IF(.FALSE.) IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT - IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT !$ACC END PARALLEL @@ -34,11 +32,6 @@ !$ACC PARALLEL IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT -#if ACC_DEVICE_TYPE_host_nonshm - IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT -#else - IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT -#endif IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT #if ACC_DEVICE_TYPE_nvidia IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT diff --git libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f libgo= mp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f index 49d7a72..c391776 100644 --- libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f +++ libgomp/testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f @@ -11,7 +11,6 @@ =20 IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT - IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT =20 @@ -21,7 +20,6 @@ !$ACC PARALLEL IF(.FALSE.) IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT - IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT !$ACC END PARALLEL @@ -34,11 +32,6 @@ !$ACC PARALLEL IF (ACC_ON_DEVICE (ACC_DEVICE_NONE)) CALL ABORT IF (ACC_ON_DEVICE (ACC_DEVICE_HOST)) CALL ABORT -#if ACC_DEVICE_TYPE_host_nonshm - IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT -#else - IF (ACC_ON_DEVICE (ACC_DEVICE_HOST_NONSHM)) CALL ABORT -#endif IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NOT_HOST)) CALL ABORT #if ACC_DEVICE_TYPE_nvidia IF (.NOT. ACC_ON_DEVICE (ACC_DEVICE_NVIDIA)) CALL ABORT diff --git libgomp/testsuite/libgomp.oacc-fortran/fortran.exp libgomp/tests= uite/libgomp.oacc-fortran/fortran.exp index a8aaff0..2d6b647 100644 --- libgomp/testsuite/libgomp.oacc-fortran/fortran.exp +++ libgomp/testsuite/libgomp.oacc-fortran/fortran.exp @@ -73,9 +73,6 @@ if { $lang_test_file_found } { host { set acc_mem_shared 1 } - host_nonshm { - set acc_mem_shared 0 - } nvidia { if { ![check_effective_target_openacc_nvidia_accel_present] } { # Don't bother; execution testing is going to FAIL. Gr=C3=BC=C3=9Fe, Thomas --=-=-= Content-Type: application/pgp-signature; name="signature.asc" Content-length: 472 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAEBAgAGBQJVyNZfAAoJEK3/DN1sMFFtDMIH/i3u/T43hNRvdzfqZ3xOQY8r MKBB1O454Qw14vAPPKq6ciES/0Q8lOP5zKqU+9o6jYnVngTmc/bi8XrQgleW/vUB QzDDESm9iQeGB+iBXZkHsqloam1FV8JdoFdP2q2iGCGGCUHKPOAdM8DG7oDfrmVD M9eSgQ4Mymw2Bdafkk8n+bptoTwanfjcltO/SiXONte8BU6Neh0Fcdjd6ftAGimQ 0brVfLyBxzc/zLe4uFmF519j8lQEl1Gq3u1VoE5z2OOqBtJf+RB6ak9L9C7RlETS xI6nQIjEgZOY1D0+3/VM8KUgPm4jcB9bZGwK9Tqicqq7CHT42BsddDDkKOqDVp8= =uzRW -----END PGP SIGNATURE----- --=-=-=--