[PR libgomp/65742, PR middle-end/66332] libgomp: Remove plugin for non-shared memory host execution
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=host_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. From-SVN: r226763
This commit is contained in:
parent
44a7d18d95
commit
b97e78b712
@ -1,5 +1,12 @@
|
||||
2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
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.
|
||||
|
||||
|
@ -5879,10 +5879,8 @@ expand_stack_save (void)
|
||||
acceleration device (ACCEL_COMPILER conditional). */
|
||||
|
||||
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;
|
||||
|
||||
@ -5891,8 +5889,13 @@ expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUSED,
|
||||
/* Return (arg == v1 || arg == v2) ? 1 : 0. */
|
||||
machine_mode v_mode = TYPE_MODE (TREE_TYPE (arg));
|
||||
rtx v = expand_normal (arg), v1, v2;
|
||||
#ifdef ACCEL_COMPILER
|
||||
v1 = GEN_INT (GOMP_DEVICE_NOT_HOST);
|
||||
v2 = GEN_INT (ACCEL_COMPILER_acc_device);
|
||||
#else
|
||||
v1 = GEN_INT (GOMP_DEVICE_NONE);
|
||||
v2 = GEN_INT (GOMP_DEVICE_HOST);
|
||||
#endif
|
||||
machine_mode target_mode = TYPE_MODE (integer_type_node);
|
||||
if (!target || !register_operand (target, target_mode))
|
||||
target = gen_reg_rtx (target_mode);
|
||||
@ -5906,9 +5909,6 @@ expand_builtin_acc_on_device (tree exp ATTRIBUTE_UNUSED,
|
||||
emit_label (done_label);
|
||||
|
||||
return target;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -9975,24 +9975,6 @@ oacc_process_reduction_data (gimple_seq *body, gimple_seq *in_stmt_seqp,
|
||||
in_stmt_seqp);
|
||||
gimple_seq_add_stmt (in_stmt_seqp, gimple_build_label (exit));
|
||||
|
||||
/* Also, set nthreads = 1 for ACC_DEVICE_TYPE=host_nonshm. */
|
||||
gimplify_assign (acc_device_host,
|
||||
build_int_cst (integer_type_node,
|
||||
GOMP_DEVICE_HOST_NONSHM),
|
||||
in_stmt_seqp);
|
||||
|
||||
enter = create_artificial_label (UNKNOWN_LOCATION);
|
||||
exit = create_artificial_label (UNKNOWN_LOCATION);
|
||||
|
||||
stmt = 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);
|
||||
|
@ -1,3 +1,9 @@
|
||||
2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
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 <ubizjak@gmail.com>
|
||||
|
||||
PR fortran/64022
|
||||
|
@ -20,17 +20,9 @@ f (void)
|
||||
}
|
||||
|
||||
/* 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 doing in
|
||||
<openacc.h>.
|
||||
|
||||
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++ } } } */
|
||||
|
@ -1,3 +1,7 @@
|
||||
2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* gomp-constants.c (GOMP_DEVICE_HOST_NONSHM): Remove.
|
||||
|
||||
2015-05-22 Yunlian Jiang <yunlian@google.com>
|
||||
|
||||
* libiberty.h (asprintf): Don't declare if HAVE_DECL_ASPRINTF is
|
||||
|
@ -101,11 +101,11 @@ enum gomp_map_kind
|
||||
|
||||
/* 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
|
||||
|
@ -1,3 +1,32 @@
|
||||
2015-08-10 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* 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=host_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 <thomas@codesourcery.com>
|
||||
Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
|
@ -146,15 +146,6 @@ am__installdirs = "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(infodir)" \
|
||||
"$(DESTDIR)$(fincludedir)" "$(DESTDIR)$(libsubincludedir)" \
|
||||
"$(DESTDIR)$(toolexeclibdir)"
|
||||
LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
|
||||
libgomp_plugin_host_nonshm_la_DEPENDENCIES = libgomp.la
|
||||
am_libgomp_plugin_host_nonshm_la_OBJECTS = \
|
||||
libgomp_plugin_host_nonshm_la-plugin-host.lo
|
||||
libgomp_plugin_host_nonshm_la_OBJECTS = \
|
||||
$(am_libgomp_plugin_host_nonshm_la_OBJECTS)
|
||||
libgomp_plugin_host_nonshm_la_LINK = $(LIBTOOL) --tag=CC \
|
||||
$(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libgomp_plugin_host_nonshm_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
am__DEPENDENCIES_1 =
|
||||
@PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_DEPENDENCIES = libgomp.la \
|
||||
@PLUGIN_NVPTX_TRUE@ $(am__DEPENDENCIES_1)
|
||||
@ -196,8 +187,7 @@ FCLD = $(FC)
|
||||
FCLINK = $(LIBTOOL) --tag=FC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(FCLD) $(AM_FCFLAGS) $(FCFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(libgomp_plugin_host_nonshm_la_SOURCES) \
|
||||
$(libgomp_plugin_nvptx_la_SOURCES) $(libgomp_la_SOURCES)
|
||||
SOURCES = $(libgomp_plugin_nvptx_la_SOURCES) $(libgomp_la_SOURCES)
|
||||
MULTISRCTOP =
|
||||
MULTIBUILDTOP =
|
||||
MULTIDIRS =
|
||||
@ -401,8 +391,7 @@ libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include
|
||||
AM_CPPFLAGS = $(addprefix -I, $(search_path))
|
||||
AM_CFLAGS = $(XCFLAGS)
|
||||
AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
|
||||
toolexeclib_LTLIBRARIES = libgomp.la $(am__append_1) \
|
||||
libgomp-plugin-host_nonshm.la
|
||||
toolexeclib_LTLIBRARIES = libgomp.la $(am__append_1)
|
||||
nodist_toolexeclib_HEADERS = libgomp.spec
|
||||
|
||||
# -Wc is only a libtool option.
|
||||
@ -437,14 +426,6 @@ libgomp_la_SOURCES = alloc.c barrier.c critical.c env.c error.c iter.c \
|
||||
@PLUGIN_NVPTX_TRUE@ $(lt_host_flags) $(PLUGIN_NVPTX_LDFLAGS)
|
||||
@PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBADD = libgomp.la $(PLUGIN_NVPTX_LIBS)
|
||||
@PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
libgomp_plugin_host_nonshm_version_info = -version-info $(libtool_VERSION)
|
||||
libgomp_plugin_host_nonshm_la_SOURCES = plugin/plugin-host.c
|
||||
libgomp_plugin_host_nonshm_la_CPPFLAGS = $(AM_CPPFLAGS) -DHOST_NONSHM_PLUGIN
|
||||
libgomp_plugin_host_nonshm_la_LDFLAGS = \
|
||||
$(libgomp_plugin_host_nonshm_version_info) $(lt_host_flags)
|
||||
|
||||
libgomp_plugin_host_nonshm_la_LIBADD = libgomp.la
|
||||
libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
nodist_noinst_HEADERS = libgomp_f.h
|
||||
nodist_libsubinclude_HEADERS = omp.h openacc.h
|
||||
@USE_FORTRAN_TRUE@nodist_finclude_HEADERS = omp_lib.h omp_lib.f90 omp_lib.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_nonshm_la_DEPENDENCIES)
|
||||
$(libgomp_plugin_host_nonshm_la_LINK) -rpath $(toolexeclibdir) $(libgomp_plugin_host_nonshm_la_OBJECTS) $(libgomp_plugin_host_nonshm_la_LIBADD) $(LIBS)
|
||||
libgomp-plugin-nvptx.la: $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_DEPENDENCIES) $(EXTRA_libgomp_plugin_nvptx_la_DEPENDENCIES)
|
||||
$(libgomp_plugin_nvptx_la_LINK) $(am_libgomp_plugin_nvptx_la_rpath) $(libgomp_plugin_nvptx_la_OBJECTS) $(libgomp_plugin_nvptx_la_LIBADD) $(LIBS)
|
||||
libgomp.la: $(libgomp_la_OBJECTS) $(libgomp_la_DEPENDENCIES) $(EXTRA_libgomp_la_DEPENDENCIES)
|
||||
@ -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__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgomp_plugin_nvptx_la-plugin-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=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
libgomp_plugin_host_nonshm_la-plugin-host.lo: plugin/plugin-host.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(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 libgomp_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-plugin-host.Tpo $(DEPDIR)/libgomp_plugin_host_nonshm_la-plugin-host.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='plugin/plugin-host.c' object='libgomp_plugin_host_nonshm_la-plugin-host.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(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=CC $(libgomp_plugin_nvptx_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(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-plugin-nvptx.lo `test -f 'plugin/plugin-nvptx.c' || echo '$(srcdir)/'`plugin/plugin-nvptx.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Tpo $(DEPDIR)/libgomp_plugin_nvptx_la-plugin-nvptx.Plo
|
||||
|
1
libgomp/configure
vendored
1
libgomp/configure
vendored
@ -15170,7 +15170,6 @@ if test x"$plugin_support" = xyes; then
|
||||
|
||||
$as_echo "#define PLUGIN_SUPPORT 1" >>confdefs.h
|
||||
|
||||
offload_targets=host_nonshm
|
||||
elif test "x${enable_offload_targets-no}" != xno; then
|
||||
as_fn_error "Can't support offloading without support for plugins" "$LINENO" 5
|
||||
fi
|
||||
|
@ -46,7 +46,7 @@ extern "C" {
|
||||
enum offload_target_type
|
||||
{
|
||||
OFFLOAD_TARGET_TYPE_HOST = 2,
|
||||
OFFLOAD_TARGET_TYPE_HOST_NONSHM = 3,
|
||||
/* OFFLOAD_TARGET_TYPE_HOST_NONSHM = 3 removed. */
|
||||
OFFLOAD_TARGET_TYPE_NVIDIA_PTX = 5,
|
||||
OFFLOAD_TARGET_TYPE_INTEL_MIC = 6
|
||||
};
|
||||
|
@ -26,51 +26,215 @@
|
||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* This shares much of the implementation of the plugin-host.c "host_nonshm"
|
||||
plugin. */
|
||||
#include "plugin/plugin-host.c"
|
||||
#include "libgomp.h"
|
||||
#include "oacc-int.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
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 *) = (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__ ((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
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)))
|
||||
{
|
||||
}
|
||||
|
||||
static struct gomp_device_descr host_dispatch =
|
||||
{
|
||||
.name = "host",
|
||||
.capabilities = (GOMP_OFFLOAD_CAP_OPENACC_200
|
||||
.capabilities = (GOMP_OFFLOAD_CAP_SHARED_MEM
|
||||
| GOMP_OFFLOAD_CAP_NATIVE_EXEC
|
||||
| GOMP_OFFLOAD_CAP_SHARED_MEM),
|
||||
| GOMP_OFFLOAD_CAP_OPENACC_200),
|
||||
.target_id = 0,
|
||||
.type = OFFLOAD_TARGET_TYPE_HOST,
|
||||
|
||||
.get_name_func = GOMP_OFFLOAD_get_name,
|
||||
.get_caps_func = GOMP_OFFLOAD_get_caps,
|
||||
.get_type_func = GOMP_OFFLOAD_get_type,
|
||||
.get_num_devices_func = GOMP_OFFLOAD_get_num_devices,
|
||||
.init_device_func = GOMP_OFFLOAD_init_device,
|
||||
.fini_device_func = GOMP_OFFLOAD_fini_device,
|
||||
.load_image_func = GOMP_OFFLOAD_load_image,
|
||||
.unload_image_func = GOMP_OFFLOAD_unload_image,
|
||||
.alloc_func = GOMP_OFFLOAD_alloc,
|
||||
.free_func = GOMP_OFFLOAD_free,
|
||||
.dev2host_func = GOMP_OFFLOAD_dev2host,
|
||||
.host2dev_func = GOMP_OFFLOAD_host2dev,
|
||||
.run_func = GOMP_OFFLOAD_run,
|
||||
.get_name_func = host_get_name,
|
||||
.get_caps_func = host_get_caps,
|
||||
.get_type_func = host_get_type,
|
||||
.get_num_devices_func = host_get_num_devices,
|
||||
.init_device_func = host_init_device,
|
||||
.fini_device_func = host_fini_device,
|
||||
.load_image_func = host_load_image,
|
||||
.unload_image_func = host_unload_image,
|
||||
.alloc_func = host_alloc,
|
||||
.free_func = host_free,
|
||||
.dev2host_func = host_dev2host,
|
||||
.host2dev_func = host_host2dev,
|
||||
.run_func = host_run,
|
||||
|
||||
.mem_map = { NULL },
|
||||
/* .lock initilized in goacc_host_init. */
|
||||
.is_initialized = false,
|
||||
|
||||
.openacc = {
|
||||
.exec_func = GOMP_OFFLOAD_openacc_parallel,
|
||||
.data_environ = NULL,
|
||||
|
||||
.register_async_cleanup_func
|
||||
= GOMP_OFFLOAD_openacc_register_async_cleanup,
|
||||
.exec_func = host_openacc_exec,
|
||||
|
||||
.async_set_async_func = GOMP_OFFLOAD_openacc_async_set_async,
|
||||
.async_test_func = GOMP_OFFLOAD_openacc_async_test,
|
||||
.async_test_all_func = GOMP_OFFLOAD_openacc_async_test_all,
|
||||
.async_wait_func = GOMP_OFFLOAD_openacc_async_wait,
|
||||
.async_wait_async_func = GOMP_OFFLOAD_openacc_async_wait_async,
|
||||
.async_wait_all_func = GOMP_OFFLOAD_openacc_async_wait_all,
|
||||
.async_wait_all_async_func = GOMP_OFFLOAD_openacc_async_wait_all_async,
|
||||
.register_async_cleanup_func = host_openacc_register_async_cleanup,
|
||||
|
||||
.create_thread_data_func = GOMP_OFFLOAD_openacc_create_thread_data,
|
||||
.destroy_thread_data_func = GOMP_OFFLOAD_openacc_destroy_thread_data,
|
||||
.async_test_func = host_openacc_async_test,
|
||||
.async_test_all_func = host_openacc_async_test_all,
|
||||
.async_wait_func = host_openacc_async_wait,
|
||||
.async_wait_async_func = host_openacc_async_wait_async,
|
||||
.async_wait_all_func = host_openacc_async_wait_all,
|
||||
.async_wait_all_async_func = host_openacc_async_wait_all_async,
|
||||
.async_set_async_func = host_openacc_async_set_async,
|
||||
|
||||
.create_thread_data_func = host_openacc_create_thread_data,
|
||||
.destroy_thread_data_func = host_openacc_destroy_thread_data,
|
||||
|
||||
.cuda = {
|
||||
.get_current_device_func = NULL,
|
||||
@ -81,9 +245,9 @@ static struct gomp_device_descr host_dispatch =
|
||||
}
|
||||
};
|
||||
|
||||
/* 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);
|
||||
|
@ -29,7 +29,6 @@
|
||||
#include "libgomp.h"
|
||||
#include "oacc-int.h"
|
||||
#include "openacc.h"
|
||||
#include "plugin/plugin-host.h"
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <strings.h>
|
||||
@ -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 = 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 () == acc_device_host_nonshm
|
||||
&& thr && thr->target_tls
|
||||
&& ((struct nonshm_thread *)thr->target_tls)->nonshm_exec)
|
||||
return dev == acc_device_host_nonshm || dev == acc_device_not_host;
|
||||
|
||||
/* For OpenACC, libgomp is only built for the host, so this is sufficient. */
|
||||
return dev == acc_device_host || dev == acc_device_none;
|
||||
/* Just rely on the compiler builtin. */
|
||||
return __builtin_acc_on_device (dev);
|
||||
}
|
||||
|
||||
ialias (acc_on_device)
|
||||
|
@ -43,7 +43,7 @@ module openacc_kinds
|
||||
integer (acc_device_kind), parameter :: acc_device_none = 0
|
||||
integer (acc_device_kind), parameter :: acc_device_default = 1
|
||||
integer (acc_device_kind), parameter :: acc_device_host = 2
|
||||
integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3
|
||||
! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3 removed.
|
||||
integer (acc_device_kind), parameter :: acc_device_not_host = 4
|
||||
integer (acc_device_kind), parameter :: acc_device_nvidia = 5
|
||||
|
||||
|
@ -53,7 +53,7 @@ typedef enum acc_device_t
|
||||
acc_device_none = 0,
|
||||
acc_device_default = 1,
|
||||
acc_device_host = 2,
|
||||
acc_device_host_nonshm = 3,
|
||||
/* acc_device_host_nonshm = 3 removed. */
|
||||
acc_device_not_host = 4,
|
||||
acc_device_nvidia = 5,
|
||||
_ACC_device_hwm
|
||||
|
@ -38,7 +38,8 @@
|
||||
integer (acc_device_kind), parameter :: acc_device_none = 0
|
||||
integer (acc_device_kind), parameter :: acc_device_default = 1
|
||||
integer (acc_device_kind), parameter :: acc_device_host = 2
|
||||
integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3
|
||||
! integer (acc_device_kind), parameter :: acc_device_host_nonshm = 3
|
||||
! removed.
|
||||
integer (acc_device_kind), parameter :: acc_device_not_host = 4
|
||||
integer (acc_device_kind), parameter :: acc_device_nvidia = 5
|
||||
|
||||
|
@ -38,12 +38,3 @@ libgomp_plugin_nvptx_la_LDFLAGS += $(PLUGIN_NVPTX_LDFLAGS)
|
||||
libgomp_plugin_nvptx_la_LIBADD = libgomp.la $(PLUGIN_NVPTX_LIBS)
|
||||
libgomp_plugin_nvptx_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
endif
|
||||
|
||||
libgomp_plugin_host_nonshm_version_info = -version-info $(libtool_VERSION)
|
||||
toolexeclib_LTLIBRARIES += libgomp-plugin-host_nonshm.la
|
||||
libgomp_plugin_host_nonshm_la_SOURCES = plugin/plugin-host.c
|
||||
libgomp_plugin_host_nonshm_la_CPPFLAGS = $(AM_CPPFLAGS) -DHOST_NONSHM_PLUGIN
|
||||
libgomp_plugin_host_nonshm_la_LDFLAGS = \
|
||||
$(libgomp_plugin_host_nonshm_version_info) $(lt_host_flags)
|
||||
libgomp_plugin_host_nonshm_la_LIBADD = libgomp.la
|
||||
libgomp_plugin_host_nonshm_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
|
@ -33,7 +33,6 @@ AC_CHECK_LIB(dl, dlsym, , [plugin_support=no])
|
||||
if test x"$plugin_support" = xyes; then
|
||||
AC_DEFINE(PLUGIN_SUPPORT, 1,
|
||||
[Define if all infrastructure, needed for plugins, is supported.])
|
||||
offload_targets=host_nonshm
|
||||
elif test "x${enable_offload_targets-no}" != xno; then
|
||||
AC_MSG_ERROR([Can't support offloading without support for plugins])
|
||||
fi
|
||||
|
@ -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 FITNESS
|
||||
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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Simple implementation of support routines for a shared-memory
|
||||
acc_device_host, and a non-shared memory acc_device_host_nonshm, with the
|
||||
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 <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#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 = (GOMP_OFFLOAD_CAP_OPENACC_200
|
||||
| GOMP_OFFLOAD_CAP_NATIVE_EXEC);
|
||||
|
||||
#ifndef HOST_NONSHM_PLUGIN
|
||||
caps |= 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 *) = (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 = GOMP_PLUGIN_acc_thread ();
|
||||
thd->nonshm_exec = true;
|
||||
fn (devaddrs);
|
||||
thd->nonshm_exec = 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) host,
|
||||
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__ ((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
STATIC void *
|
||||
GOMP_OFFLOAD_openacc_create_thread_data (int ord
|
||||
__attribute__ ((unused)))
|
||||
{
|
||||
#ifdef HOST_NONSHM_PLUGIN
|
||||
struct nonshm_thread *thd
|
||||
= GOMP_PLUGIN_malloc (sizeof (struct nonshm_thread));
|
||||
thd->nonshm_exec = 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
|
||||
}
|
@ -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 FITNESS
|
||||
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
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef PLUGIN_HOST_H
|
||||
#define PLUGIN_HOST_H
|
||||
|
||||
struct nonshm_thread
|
||||
{
|
||||
bool nonshm_exec;
|
||||
};
|
||||
|
||||
#endif
|
@ -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 == "host_nonshm" } {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -1,5 +1,4 @@
|
||||
/* { dg-do run } */
|
||||
/* { dg-additional-options "-fno-builtin-acc_on_device" } */
|
||||
|
||||
#include <openacc.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -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.
|
||||
|
@ -11,7 +11,6 @@ implicit none
|
||||
|
||||
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
|
||||
|
||||
@ -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
|
||||
|
@ -11,7 +11,6 @@
|
||||
|
||||
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
|
||||
|
||||
@ -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
|
||||
|
@ -11,7 +11,6 @@
|
||||
|
||||
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
|
||||
|
||||
@ -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
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user