diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2022-10-17 22:19:55 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2022-11-04 10:51:01 +0100 |
commit | e4cba49413ca429dc82f6aa2e88129ecb3fdd943 (patch) | |
tree | c949e231f1a973cb7cb5aad1985c2aab9c653378 /liboffloadmic/plugin/libgomp-plugin-intelmic.cpp | |
parent | e724b0480bfa5ec04f39be8c7290330b495c59de (diff) | |
download | gcc-e4cba49413ca429dc82f6aa2e88129ecb3fdd943.zip gcc-e4cba49413ca429dc82f6aa2e88129ecb3fdd943.tar.gz gcc-e4cba49413ca429dc82f6aa2e88129ecb3fdd943.tar.bz2 |
Remove support for Intel MIC offloading
... after its deprecation in GCC 12.
* Makefile.def: Remove module 'liboffloadmic'.
* Makefile.in: Regenerate.
* configure.ac: Remove 'liboffloadmic' handling.
* configure: Regenerate.
contrib/
* gcc-changelog/git_commit.py (default_changelog_locations):
Remove 'liboffloadmic'.
* gcc_update (files_and_dependencies): Remove 'liboffloadmic'
files.
* update-copyright.py (GCCCmdLine): Remove 'liboffloadmic'
comment.
gcc/
* config.gcc [target *-intelmic-* | *-intelmicemul-*]: Remove.
* config/i386/i386-options.cc (ix86_omp_device_kind_arch_isa)
[ACCEL_COMPILER]: Remove.
* config/i386/intelmic-mkoffload.cc: Remove.
* config/i386/intelmic-offload.h: Likewise.
* config/i386/t-intelmic: Likewise.
* config/i386/t-omp-device: Likewise.
* configure.ac [target *-intelmic-* | *-intelmicemul-*]: Remove.
* configure: Regenerate.
* doc/install.texi (--enable-offload-targets=[...]): Update.
* doc/sourcebuild.texi: Remove 'liboffloadmic' documentation.
include/
* gomp-constants.h (GOMP_DEVICE_INTEL_MIC): Comment out.
(GOMP_VERSION_INTEL_MIC): Remove.
libgomp/
* libgomp-plugin.h (OFFLOAD_TARGET_TYPE_INTEL_MIC): Remove.
* libgomp.texi (OpenMP Context Selectors): Remove Intel MIC
documentation.
* plugin/configfrag.ac <enable_offload_targets>
[*-intelmic-* | *-intelmicemul-*]: Remove.
* configure: Regenerate.
* testsuite/lib/libgomp.exp (libgomp_init): Remove 'liboffloadmic'
handling.
(offload_target_to_openacc_device_type)
[$offload_target = *-intelmic*]: Remove.
(check_effective_target_offload_device_intel_mic)
(check_effective_target_offload_device_any_intel_mic): Remove.
* testsuite/libgomp.c-c++-common/on_device_arch.h
(device_arch_intel_mic, on_device_arch_intel_mic, any_device_arch)
(any_device_arch_intel_mic): Remove.
* testsuite/libgomp.c-c++-common/target-45.c: Remove
'offload_device_any_intel_mic' XFAIL.
* testsuite/libgomp.fortran/target10.f90: Likewise.
liboffloadmic/
* ChangeLog: Remove.
* Makefile.am: Likewise.
* Makefile.in: Likewise.
* aclocal.m4: Likewise.
* configure: Likewise.
* configure.ac: Likewise.
* configure.tgt: Likewise.
* doc/doxygen/config: Likewise.
* doc/doxygen/header.tex: Likewise.
* include/coi/common/COIEngine_common.h: Likewise.
* include/coi/common/COIEvent_common.h: Likewise.
* include/coi/common/COIMacros_common.h: Likewise.
* include/coi/common/COIPerf_common.h: Likewise.
* include/coi/common/COIResult_common.h: Likewise.
* include/coi/common/COISysInfo_common.h: Likewise.
* include/coi/common/COITypes_common.h: Likewise.
* include/coi/sink/COIBuffer_sink.h: Likewise.
* include/coi/sink/COIPipeline_sink.h: Likewise.
* include/coi/sink/COIProcess_sink.h: Likewise.
* include/coi/source/COIBuffer_source.h: Likewise.
* include/coi/source/COIEngine_source.h: Likewise.
* include/coi/source/COIEvent_source.h: Likewise.
* include/coi/source/COIPipeline_source.h: Likewise.
* include/coi/source/COIProcess_source.h: Likewise.
* liboffloadmic_host.spec.in: Likewise.
* liboffloadmic_target.spec.in: Likewise.
* plugin/Makefile.am: Likewise.
* plugin/Makefile.in: Likewise.
* plugin/aclocal.m4: Likewise.
* plugin/configure: Likewise.
* plugin/configure.ac: Likewise.
* plugin/libgomp-plugin-intelmic.cpp: Likewise.
* plugin/offload_target_main.cpp: Likewise.
* runtime/cean_util.cpp: Likewise.
* runtime/cean_util.h: Likewise.
* runtime/coi/coi_client.cpp: Likewise.
* runtime/coi/coi_client.h: Likewise.
* runtime/coi/coi_server.cpp: Likewise.
* runtime/coi/coi_server.h: Likewise.
* runtime/compiler_if_host.cpp: Likewise.
* runtime/compiler_if_host.h: Likewise.
* runtime/compiler_if_target.cpp: Likewise.
* runtime/compiler_if_target.h: Likewise.
* runtime/dv_util.cpp: Likewise.
* runtime/dv_util.h: Likewise.
* runtime/emulator/coi_common.h: Likewise.
* runtime/emulator/coi_device.cpp: Likewise.
* runtime/emulator/coi_device.h: Likewise.
* runtime/emulator/coi_host.cpp: Likewise.
* runtime/emulator/coi_host.h: Likewise.
* runtime/emulator/coi_version_asm.h: Likewise.
* runtime/emulator/coi_version_linker_script.map: Likewise.
* runtime/liboffload_error.c: Likewise.
* runtime/liboffload_error_codes.h: Likewise.
* runtime/liboffload_msg.c: Likewise.
* runtime/liboffload_msg.h: Likewise.
* runtime/mic_lib.f90: Likewise.
* runtime/offload.h: Likewise.
* runtime/offload_common.cpp: Likewise.
* runtime/offload_common.h: Likewise.
* runtime/offload_engine.cpp: Likewise.
* runtime/offload_engine.h: Likewise.
* runtime/offload_env.cpp: Likewise.
* runtime/offload_env.h: Likewise.
* runtime/offload_host.cpp: Likewise.
* runtime/offload_host.h: Likewise.
* runtime/offload_iterator.h: Likewise.
* runtime/offload_omp_host.cpp: Likewise.
* runtime/offload_omp_target.cpp: Likewise.
* runtime/offload_orsl.cpp: Likewise.
* runtime/offload_orsl.h: Likewise.
* runtime/offload_table.cpp: Likewise.
* runtime/offload_table.h: Likewise.
* runtime/offload_target.cpp: Likewise.
* runtime/offload_target.h: Likewise.
* runtime/offload_target_main.cpp: Likewise.
* runtime/offload_timer.h: Likewise.
* runtime/offload_timer_host.cpp: Likewise.
* runtime/offload_timer_target.cpp: Likewise.
* runtime/offload_trace.cpp: Likewise.
* runtime/offload_trace.h: Likewise.
* runtime/offload_util.cpp: Likewise.
* runtime/offload_util.h: Likewise.
* runtime/ofldbegin.cpp: Likewise.
* runtime/ofldend.cpp: Likewise.
* runtime/orsl-lite/include/orsl-lite.h: Likewise.
* runtime/orsl-lite/lib/orsl-lite.c: Likewise.
* runtime/orsl-lite/version.txt: Likewise.
Diffstat (limited to 'liboffloadmic/plugin/libgomp-plugin-intelmic.cpp')
-rw-r--r-- | liboffloadmic/plugin/libgomp-plugin-intelmic.cpp | 545 |
1 files changed, 0 insertions, 545 deletions
diff --git a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp b/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp deleted file mode 100644 index 7be27f0..0000000 --- a/liboffloadmic/plugin/libgomp-plugin-intelmic.cpp +++ /dev/null @@ -1,545 +0,0 @@ -/* Plugin for offload execution on Intel MIC devices. - - Copyright (C) 2014-2016 Free Software Foundation, Inc. - - Contributed by Ilya Verbin <ilya.verbin@intel.com>. - - 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/>. */ - -/* Host side part of a libgomp plugin. */ - -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <utility> -#include <vector> -#include <map> -#include "libgomp-plugin.h" -#include "compiler_if_host.h" -#include "main_target_image.h" -#include "gomp-constants.h" - -#define OFFLOAD_ACTIVE_WAIT_ENV "OFFLOAD_ACTIVE_WAIT" - -#ifdef DEBUG -#define TRACE(...) \ -{ \ -fprintf (stderr, "HOST:\t%s:%s ", __FILE__, __FUNCTION__); \ -fprintf (stderr, __VA_ARGS__); \ -fprintf (stderr, "\n"); \ -} -#else -#define TRACE { } -#endif - - -/* Start/end addresses of functions and global variables on a device. */ -typedef std::vector<addr_pair> AddrVect; - -/* Addresses for one image and all devices. */ -typedef std::vector<AddrVect> DevAddrVect; - -/* Addresses for all images and all devices. */ -typedef std::map<const void *, DevAddrVect> ImgDevAddrMap; - -/* Image descriptor needed by __offload_[un]register_image. */ -struct TargetImageDesc { - int64_t size; - /* 10 characters is enough for max int value. */ - char name[sizeof ("lib0000000000.so")]; - char data[]; -}; - -/* Image descriptors, indexed by a pointer obtained from libgomp. */ -typedef std::map<const void *, TargetImageDesc *> ImgDescMap; - - -/* Total number of available devices. */ -static int num_devices; - -/* Total number of shared libraries with offloading to Intel MIC. */ -static int num_images; - -/* Two dimensional array: one key is a pointer to image, - second key is number of device. Contains a vector of pointer pairs. */ -static ImgDevAddrMap *address_table; - -/* Descriptors of all images, registered in liboffloadmic. */ -static ImgDescMap *image_descriptors; - -/* Thread-safe registration of the main image. */ -static pthread_once_t main_image_is_registered = PTHREAD_ONCE_INIT; - -static VarDesc vd_host2tgt = { - { 1, 1 }, /* dst, src */ - { 1, 0 }, /* in, out */ - 1, /* alloc_if */ - 1, /* free_if */ - 4, /* align */ - 0, /* mic_offset */ - { 0, 0, 0, 0, 0, 0, 0, 0 }, /* is_static, is_static_dstn, has_length, - is_stack_buf, sink_addr, alloc_disp, - is_noncont_src, is_noncont_dst */ - 0, /* offset */ - 0, /* size */ - 1, /* count */ - 0, /* alloc */ - 0, /* into */ - 0 /* ptr */ -}; - -static VarDesc vd_tgt2host = { - { 1, 1 }, /* dst, src */ - { 0, 1 }, /* in, out */ - 1, /* alloc_if */ - 1, /* free_if */ - 4, /* align */ - 0, /* mic_offset */ - { 0, 0, 0, 0, 0, 0, 0, 0 }, /* is_static, is_static_dstn, has_length, - is_stack_buf, sink_addr, alloc_disp, - is_noncont_src, is_noncont_dst */ - 0, /* offset */ - 0, /* size */ - 1, /* count */ - 0, /* alloc */ - 0, /* into */ - 0 /* ptr */ -}; - - -__attribute__((constructor)) -static void -init (void) -{ - const char *active_wait = getenv (OFFLOAD_ACTIVE_WAIT_ENV); - - /* Disable active wait by default to avoid useless CPU usage. */ - if (!active_wait) - setenv (OFFLOAD_ACTIVE_WAIT_ENV, "0", 0); - - address_table = new ImgDevAddrMap; - image_descriptors = new ImgDescMap; - num_devices = _Offload_number_of_devices (); -} - -extern "C" const char * -GOMP_OFFLOAD_get_name (void) -{ - const char *res = "intelmic"; - TRACE ("(): return %s", res); - return res; -} - -extern "C" unsigned int -GOMP_OFFLOAD_get_caps (void) -{ - unsigned int res = GOMP_OFFLOAD_CAP_OPENMP_400; - TRACE ("(): return %x", res); - return res; -} - -extern "C" int -GOMP_OFFLOAD_get_type (void) -{ - enum offload_target_type res = OFFLOAD_TARGET_TYPE_INTEL_MIC; - TRACE ("(): return %d", res); - return res; -} - -extern "C" int -GOMP_OFFLOAD_get_num_devices (unsigned int omp_requires_mask) -{ - /* Return -1 if no omp_requires_mask cannot be fulfilled but - devices were present. */ - if (num_devices > 0 && omp_requires_mask != 0) - return -1; - TRACE ("(): return %d", num_devices); - return num_devices; -} - -static bool -offload (const char *file, uint64_t line, int device, const char *name, - int num_vars, VarDesc *vars, const void **async_data) -{ - OFFLOAD ofld = __offload_target_acquire1 (&device, file, line); - if (ofld) - { - if (async_data == NULL) - return __offload_offload1 (ofld, name, 0, num_vars, vars, NULL, 0, - NULL, NULL); - else - { - OffloadFlags flags; - flags.flags = 0; - flags.bits.omp_async = 1; - return __offload_offload3 (ofld, name, 0, num_vars, vars, NULL, 0, - NULL, async_data, 0, NULL, flags, NULL); - } - } - else - { - GOMP_PLUGIN_error ("%s:%d: Offload target acquire failed\n", file, line); - return false; - } -} - -static void -register_main_image () -{ - /* Do not check the return value, because old versions of liboffloadmic did - not have return values. */ - __offload_register_image (&main_target_image); - - /* liboffloadmic will call GOMP_PLUGIN_target_task_completion when - asynchronous task on target is completed. */ - __offload_register_task_callback (GOMP_PLUGIN_target_task_completion); -} - -/* liboffloadmic loads and runs offload_target_main on all available devices - during a first call to offload (). */ -extern "C" bool -GOMP_OFFLOAD_init_device (int device) -{ - TRACE ("(device = %d)", device); - pthread_once (&main_image_is_registered, register_main_image); - return offload (__FILE__, __LINE__, device, "__offload_target_init_proc", 0, - NULL, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_fini_device (int device) -{ - TRACE ("(device = %d)", device); - - /* liboffloadmic will finalize target processes on all available devices. */ - __offload_unregister_image (&main_target_image); - return true; -} - -static bool -get_target_table (int device, int &num_funcs, int &num_vars, void **&table) -{ - VarDesc vd1[2] = { vd_tgt2host, vd_tgt2host }; - vd1[0].ptr = &num_funcs; - vd1[0].size = sizeof (num_funcs); - vd1[1].ptr = &num_vars; - vd1[1].size = sizeof (num_vars); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_table_p1", 2, - vd1, NULL)) - return false; - - int table_size = num_funcs + 2 * num_vars; - if (table_size > 0) - { - table = new void * [table_size]; - - VarDesc vd2; - vd2 = vd_tgt2host; - vd2.ptr = table; - vd2.size = table_size * sizeof (void *); - - return offload (__FILE__, __LINE__, device, "__offload_target_table_p2", - 1, &vd2, NULL); - } - return true; -} - -/* Offload TARGET_IMAGE to all available devices and fill address_table with - corresponding target addresses. */ - -static bool -offload_image (const void *target_image) -{ - void *image_start = ((void **) target_image)[0]; - void *image_end = ((void **) target_image)[1]; - - TRACE ("(target_image = %p { %p, %p })", - target_image, image_start, image_end); - - int64_t image_size = (uintptr_t) image_end - (uintptr_t) image_start; - TargetImageDesc *image = (TargetImageDesc *) malloc (offsetof (TargetImageDesc, data) - + image_size); - if (!image) - { - GOMP_PLUGIN_error ("%s: Can't allocate memory\n", __FILE__); - return false; - } - - image->size = image_size; - sprintf (image->name, "lib%010d.so", num_images++); - memcpy (image->data, image_start, image->size); - - TRACE ("() __offload_register_image %s { %p, %d }", - image->name, image_start, image->size); - /* Do not check the return value, because old versions of liboffloadmic did - not have return values. */ - __offload_register_image (image); - - /* Receive tables for target_image from all devices. */ - DevAddrVect dev_table; - bool ret = true; - for (int dev = 0; dev < num_devices; dev++) - { - int num_funcs = 0; - int num_vars = 0; - void **table = NULL; - - ret &= get_target_table (dev, num_funcs, num_vars, table); - - AddrVect curr_dev_table; - - for (int i = 0; i < num_funcs; i++) - { - addr_pair tgt_addr; - tgt_addr.start = (uintptr_t) table[i]; - tgt_addr.end = tgt_addr.start + 1; - TRACE ("() func %d:\t0x%llx..0x%llx", i, - tgt_addr.start, tgt_addr.end); - curr_dev_table.push_back (tgt_addr); - } - - for (int i = 0; i < num_vars; i++) - { - addr_pair tgt_addr; - tgt_addr.start = (uintptr_t) table[num_funcs+i*2]; - tgt_addr.end = tgt_addr.start + (uintptr_t) table[num_funcs+i*2+1]; - TRACE ("() var %d:\t0x%llx..0x%llx", i, tgt_addr.start, tgt_addr.end); - curr_dev_table.push_back (tgt_addr); - } - - dev_table.push_back (curr_dev_table); - delete [] table; - } - - address_table->insert (std::make_pair (target_image, dev_table)); - image_descriptors->insert (std::make_pair (target_image, image)); - return ret; -} - -/* Return the libgomp version number we're compatible with. There is - no requirement for cross-version compatibility. */ - -extern "C" unsigned -GOMP_OFFLOAD_version (void) -{ - return GOMP_VERSION; -} - -extern "C" int -GOMP_OFFLOAD_load_image (int device, const unsigned version, - const void *target_image, addr_pair **result, - uint64_t ** /* rev_fn_table */) -{ - TRACE ("(device = %d, target_image = %p)", device, target_image); - - if (GOMP_VERSION_DEV (version) > GOMP_VERSION_INTEL_MIC) - { - GOMP_PLUGIN_error ("Offload data incompatible with intelmic plugin" - " (expected %u, received %u)", - GOMP_VERSION_INTEL_MIC, GOMP_VERSION_DEV (version)); - return -1; - } - - /* If target_image is already present in address_table, then there is no need - to offload it. */ - if (address_table->count (target_image) == 0) - { - /* If fail, return -1 as error code. */ - if (!offload_image (target_image)) - return -1; - } - - AddrVect *curr_dev_table = &(*address_table)[target_image][device]; - int table_size = curr_dev_table->size (); - addr_pair *table = (addr_pair *) malloc (table_size * sizeof (addr_pair)); - if (table == NULL) - { - GOMP_PLUGIN_error ("%s: Can't allocate memory\n", __FILE__); - return -1; - } - - std::copy (curr_dev_table->begin (), curr_dev_table->end (), table); - *result = table; - return table_size; -} - -extern "C" bool -GOMP_OFFLOAD_unload_image (int device, unsigned version, - const void *target_image) -{ - if (GOMP_VERSION_DEV (version) > GOMP_VERSION_INTEL_MIC) - { - GOMP_PLUGIN_error ("Offload data incompatible with intelmic plugin" - " (expected %u, received %u)", - GOMP_VERSION_INTEL_MIC, GOMP_VERSION_DEV (version)); - return false; - } - - TRACE ("(device = %d, target_image = %p)", device, target_image); - - /* liboffloadmic unloads the image from all available devices. */ - if (image_descriptors->count (target_image) > 0) - { - TargetImageDesc *image_desc = (*image_descriptors)[target_image]; - __offload_unregister_image (image_desc); - free (image_desc); - - address_table->erase (target_image); - image_descriptors->erase (target_image); - } - return true; -} - -extern "C" void * -GOMP_OFFLOAD_alloc (int device, size_t size) -{ - TRACE ("(device = %d, size = %d)", device, size); - - void *tgt_ptr; - VarDesc vd[2] = { vd_host2tgt, vd_tgt2host }; - vd[0].ptr = &size; - vd[0].size = sizeof (size); - vd[1].ptr = &tgt_ptr; - vd[1].size = sizeof (void *); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_alloc", 2, - vd, NULL)) - return NULL; - - return tgt_ptr; -} - -extern "C" bool -GOMP_OFFLOAD_free (int device, void *tgt_ptr) -{ - TRACE ("(device = %d, tgt_ptr = %p)", device, tgt_ptr); - - VarDesc vd = vd_host2tgt; - vd.ptr = &tgt_ptr; - vd.size = sizeof (void *); - - return offload (__FILE__, __LINE__, device, "__offload_target_free", 1, - &vd, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_host2dev (int device, void *tgt_ptr, const void *host_ptr, - size_t size) -{ - TRACE ("(device = %d, tgt_ptr = %p, host_ptr = %p, size = %d)", - device, tgt_ptr, host_ptr, size); - if (!size) - return true; - - VarDesc vd1[2] = { vd_host2tgt, vd_host2tgt }; - vd1[0].ptr = &tgt_ptr; - vd1[0].size = sizeof (void *); - vd1[1].ptr = &size; - vd1[1].size = sizeof (size); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_host2tgt_p1", 2, - vd1, NULL)) - return false; - - VarDesc vd2 = vd_host2tgt; - vd2.ptr = (void *) host_ptr; - vd2.size = size; - - return offload (__FILE__, __LINE__, device, "__offload_target_host2tgt_p2", 1, - &vd2, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_dev2host (int device, void *host_ptr, const void *tgt_ptr, - size_t size) -{ - TRACE ("(device = %d, host_ptr = %p, tgt_ptr = %p, size = %d)", - device, host_ptr, tgt_ptr, size); - if (!size) - return true; - - VarDesc vd1[2] = { vd_host2tgt, vd_host2tgt }; - vd1[0].ptr = &tgt_ptr; - vd1[0].size = sizeof (void *); - vd1[1].ptr = &size; - vd1[1].size = sizeof (size); - - if (!offload (__FILE__, __LINE__, device, "__offload_target_tgt2host_p1", 2, - vd1, NULL)) - return false; - - VarDesc vd2 = vd_tgt2host; - vd2.ptr = (void *) host_ptr; - vd2.size = size; - - return offload (__FILE__, __LINE__, device, "__offload_target_tgt2host_p2", 1, - &vd2, NULL); -} - -extern "C" bool -GOMP_OFFLOAD_dev2dev (int device, void *dst_ptr, const void *src_ptr, - size_t size) -{ - TRACE ("(device = %d, dst_ptr = %p, src_ptr = %p, size = %d)", - device, dst_ptr, src_ptr, size); - if (!size) - return true; - - VarDesc vd[3] = { vd_host2tgt, vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &dst_ptr; - vd[0].size = sizeof (void *); - vd[1].ptr = &src_ptr; - vd[1].size = sizeof (void *); - vd[2].ptr = &size; - vd[2].size = sizeof (size); - - return offload (__FILE__, __LINE__, device, "__offload_target_tgt2tgt", 3, - vd, NULL); -} - -extern "C" void -GOMP_OFFLOAD_async_run (int device, void *tgt_fn, void *tgt_vars, - void **, void *async_data) -{ - TRACE ("(device = %d, tgt_fn = %p, tgt_vars = %p, async_data = %p)", device, - tgt_fn, tgt_vars, async_data); - - VarDesc vd[2] = { vd_host2tgt, vd_host2tgt }; - vd[0].ptr = &tgt_fn; - vd[0].size = sizeof (void *); - vd[1].ptr = &tgt_vars; - vd[1].size = sizeof (void *); - - offload (__FILE__, __LINE__, device, "__offload_target_run", 2, vd, - (const void **) async_data); -} - -extern "C" void -GOMP_OFFLOAD_run (int device, void *tgt_fn, void *tgt_vars, void **) -{ - TRACE ("(device = %d, tgt_fn = %p, tgt_vars = %p)", device, tgt_fn, tgt_vars); - - GOMP_OFFLOAD_async_run (device, tgt_fn, tgt_vars, NULL, NULL); -} |