Commit 6fc0385c by Thomas Schwinge Committed by Thomas Schwinge

OpenACC 'acc_get_property' cleanup

	include/
	* gomp-constants.h (enum gomp_device_property): Remove.
	libgomp/
	* libgomp-plugin.h (enum goacc_property): New.  Adjust all users
	to use this instead of 'enum gomp_device_property'.
	(GOMP_OFFLOAD_get_property): Rename to...
	(GOMP_OFFLOAD_openacc_get_property): ... this.  Adjust all users.
	* libgomp.h (struct gomp_device_descr): Move
	'GOMP_OFFLOAD_openacc_get_property'...
	(struct acc_dispatch_t): ... here.  Adjust all users.
	* plugin/plugin-hsa.c (GOMP_OFFLOAD_get_property): Remove.
	liboffloadmic/
	* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property):
	Remove.

From-SVN: r280150
parent b3b75e66
2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
* gomp-constants.h (enum gomp_device_property): Remove.
2020-01-01 Jakub Jelinek <jakub@redhat.com> 2020-01-01 Jakub Jelinek <jakub@redhat.com>
Update copyright years. Update copyright years.
......
...@@ -199,21 +199,6 @@ enum gomp_map_kind ...@@ -199,21 +199,6 @@ enum gomp_map_kind
#define GOMP_DEVICE_ICV -1 #define GOMP_DEVICE_ICV -1
#define GOMP_DEVICE_HOST_FALLBACK -2 #define GOMP_DEVICE_HOST_FALLBACK -2
/* Device property codes. Keep in sync with
libgomp/{openacc.h,openacc.f90}:acc_device_property_t */
/* Start from 1 to catch uninitialized use. */
enum gomp_device_property
{
GOMP_DEVICE_PROPERTY_MEMORY = 1,
GOMP_DEVICE_PROPERTY_FREE_MEMORY = 2,
GOMP_DEVICE_PROPERTY_NAME = 0x10001,
GOMP_DEVICE_PROPERTY_VENDOR = 0x10002,
GOMP_DEVICE_PROPERTY_DRIVER = 0x10003
};
/* Internal property mask to tell numeric and string values apart. */
#define GOMP_DEVICE_PROPERTY_STRING_MASK 0x10000
/* GOMP_task/GOMP_taskloop* flags argument. */ /* GOMP_task/GOMP_taskloop* flags argument. */
#define GOMP_TASK_FLAG_UNTIED (1 << 0) #define GOMP_TASK_FLAG_UNTIED (1 << 0)
#define GOMP_TASK_FLAG_FINAL (1 << 1) #define GOMP_TASK_FLAG_FINAL (1 << 1)
......
2020-01-10 Thomas Schwinge <thomas@codesourcery.com> 2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
* libgomp-plugin.h (enum goacc_property): New. Adjust all users
to use this instead of 'enum gomp_device_property'.
(GOMP_OFFLOAD_get_property): Rename to...
(GOMP_OFFLOAD_openacc_get_property): ... this. Adjust all users.
* libgomp.h (struct gomp_device_descr): Move
'GOMP_OFFLOAD_openacc_get_property'...
(struct acc_dispatch_t): ... here. Adjust all users.
* plugin/plugin-hsa.c (GOMP_OFFLOAD_get_property): Remove.
* target.c (gomp_map_vars_internal) * target.c (gomp_map_vars_internal)
<GOMP_MAP_USE_DEVICE_PTR_IF_PRESENT>: Clean up/elaborate code <GOMP_MAP_USE_DEVICE_PTR_IF_PRESENT>: Clean up/elaborate code
paths. paths.
......
...@@ -54,13 +54,6 @@ enum offload_target_type ...@@ -54,13 +54,6 @@ enum offload_target_type
OFFLOAD_TARGET_TYPE_GCN = 8 OFFLOAD_TARGET_TYPE_GCN = 8
}; };
/* Container type for passing device properties. */
union gomp_device_property_value
{
const char *ptr;
size_t val;
};
/* Opaque type to represent plugin-dependent implementation of an /* Opaque type to represent plugin-dependent implementation of an
OpenACC asynchronous queue. */ OpenACC asynchronous queue. */
struct goacc_asyncqueue; struct goacc_asyncqueue;
...@@ -75,6 +68,32 @@ struct goacc_asyncqueue_list ...@@ -75,6 +68,32 @@ struct goacc_asyncqueue_list
typedef struct goacc_asyncqueue *goacc_aq; typedef struct goacc_asyncqueue *goacc_aq;
typedef struct goacc_asyncqueue_list *goacc_aq_list; typedef struct goacc_asyncqueue_list *goacc_aq_list;
/* OpenACC 'acc_get_property' support. */
/* Device property values. Keep in sync with
'libgomp/{openacc.h,openacc.f90}:acc_device_property_t'. */
enum goacc_property
{
/* Mask to tell numeric and string values apart. */
#define GOACC_PROPERTY_STRING_MASK 0x10000
/* Start from 1 to catch uninitialized use. */
GOACC_PROPERTY_MEMORY = 1,
GOACC_PROPERTY_FREE_MEMORY = 2,
GOACC_PROPERTY_NAME = GOACC_PROPERTY_STRING_MASK | 1,
GOACC_PROPERTY_VENDOR = GOACC_PROPERTY_STRING_MASK | 2,
GOACC_PROPERTY_DRIVER = GOACC_PROPERTY_STRING_MASK | 3
};
/* Container type for passing device properties. */
union goacc_property_value
{
const char *ptr;
size_t val;
};
/* Auxiliary struct, used for transferring pairs of addresses from plugin /* Auxiliary struct, used for transferring pairs of addresses from plugin
to libgomp. */ to libgomp. */
struct addr_pair struct addr_pair
...@@ -101,7 +120,6 @@ extern const char *GOMP_OFFLOAD_get_name (void); ...@@ -101,7 +120,6 @@ extern const char *GOMP_OFFLOAD_get_name (void);
extern unsigned int GOMP_OFFLOAD_get_caps (void); extern unsigned int GOMP_OFFLOAD_get_caps (void);
extern int GOMP_OFFLOAD_get_type (void); extern int GOMP_OFFLOAD_get_type (void);
extern int GOMP_OFFLOAD_get_num_devices (void); extern int GOMP_OFFLOAD_get_num_devices (void);
extern union gomp_device_property_value GOMP_OFFLOAD_get_property (int, int);
extern bool GOMP_OFFLOAD_init_device (int); extern bool GOMP_OFFLOAD_init_device (int);
extern bool GOMP_OFFLOAD_fini_device (int); extern bool GOMP_OFFLOAD_fini_device (int);
extern unsigned GOMP_OFFLOAD_version (void); extern unsigned GOMP_OFFLOAD_version (void);
...@@ -141,6 +159,8 @@ extern void *GOMP_OFFLOAD_openacc_cuda_get_current_context (void); ...@@ -141,6 +159,8 @@ extern void *GOMP_OFFLOAD_openacc_cuda_get_current_context (void);
extern void *GOMP_OFFLOAD_openacc_cuda_get_stream (struct goacc_asyncqueue *); extern void *GOMP_OFFLOAD_openacc_cuda_get_stream (struct goacc_asyncqueue *);
extern int GOMP_OFFLOAD_openacc_cuda_set_stream (struct goacc_asyncqueue *, extern int GOMP_OFFLOAD_openacc_cuda_set_stream (struct goacc_asyncqueue *,
void *); void *);
extern union goacc_property_value
GOMP_OFFLOAD_openacc_get_property (int, enum goacc_property);
#ifdef __cplusplus #ifdef __cplusplus
} }
......
...@@ -1068,6 +1068,8 @@ typedef struct acc_dispatch_t ...@@ -1068,6 +1068,8 @@ typedef struct acc_dispatch_t
__typeof (GOMP_OFFLOAD_openacc_async_host2dev) *host2dev_func; __typeof (GOMP_OFFLOAD_openacc_async_host2dev) *host2dev_func;
} async; } async;
__typeof (GOMP_OFFLOAD_openacc_get_property) *get_property_func;
/* NVIDIA target specific routines. */ /* NVIDIA target specific routines. */
struct { struct {
__typeof (GOMP_OFFLOAD_openacc_cuda_get_current_device) __typeof (GOMP_OFFLOAD_openacc_cuda_get_current_device)
...@@ -1113,7 +1115,6 @@ struct gomp_device_descr ...@@ -1113,7 +1115,6 @@ struct gomp_device_descr
__typeof (GOMP_OFFLOAD_get_caps) *get_caps_func; __typeof (GOMP_OFFLOAD_get_caps) *get_caps_func;
__typeof (GOMP_OFFLOAD_get_type) *get_type_func; __typeof (GOMP_OFFLOAD_get_type) *get_type_func;
__typeof (GOMP_OFFLOAD_get_num_devices) *get_num_devices_func; __typeof (GOMP_OFFLOAD_get_num_devices) *get_num_devices_func;
__typeof (GOMP_OFFLOAD_get_property) *get_property_func;
__typeof (GOMP_OFFLOAD_init_device) *init_device_func; __typeof (GOMP_OFFLOAD_init_device) *init_device_func;
__typeof (GOMP_OFFLOAD_fini_device) *fini_device_func; __typeof (GOMP_OFFLOAD_fini_device) *fini_device_func;
__typeof (GOMP_OFFLOAD_version) *version_func; __typeof (GOMP_OFFLOAD_version) *version_func;
......
...@@ -59,27 +59,6 @@ host_get_num_devices (void) ...@@ -59,27 +59,6 @@ host_get_num_devices (void)
return 1; return 1;
} }
static union gomp_device_property_value
host_get_property (int n, int prop)
{
union gomp_device_property_value nullval = { .val = 0 };
if (n >= host_get_num_devices ())
return nullval;
switch (prop)
{
case GOMP_DEVICE_PROPERTY_NAME:
return (union gomp_device_property_value) { .ptr = "GOMP" };
case GOMP_DEVICE_PROPERTY_VENDOR:
return (union gomp_device_property_value) { .ptr = "GNU" };
case GOMP_DEVICE_PROPERTY_DRIVER:
return (union gomp_device_property_value) { .ptr = VERSION };
default:
return nullval;
}
}
static bool static bool
host_init_device (int n __attribute__ ((unused))) host_init_device (int n __attribute__ ((unused)))
{ {
...@@ -245,6 +224,29 @@ host_openacc_async_destruct (struct goacc_asyncqueue *aq ...@@ -245,6 +224,29 @@ host_openacc_async_destruct (struct goacc_asyncqueue *aq
return true; return true;
} }
static union goacc_property_value
host_openacc_get_property (int n, enum goacc_property prop)
{
union goacc_property_value nullval = { .val = 0 };
if (n >= host_get_num_devices ())
return nullval;
switch (prop)
{
case GOACC_PROPERTY_NAME:
return (union goacc_property_value) { .ptr = "GOMP" };
case GOACC_PROPERTY_VENDOR:
return (union goacc_property_value) { .ptr = "GNU" };
case GOACC_PROPERTY_DRIVER:
return (union goacc_property_value) { .ptr = VERSION };
case GOACC_PROPERTY_MEMORY:
case GOACC_PROPERTY_FREE_MEMORY:
default:
return nullval;
}
}
static void * static void *
host_openacc_create_thread_data (int ord __attribute__ ((unused))) host_openacc_create_thread_data (int ord __attribute__ ((unused)))
{ {
...@@ -269,7 +271,6 @@ static struct gomp_device_descr host_dispatch = ...@@ -269,7 +271,6 @@ static struct gomp_device_descr host_dispatch =
.get_caps_func = host_get_caps, .get_caps_func = host_get_caps,
.get_type_func = host_get_type, .get_type_func = host_get_type,
.get_num_devices_func = host_get_num_devices, .get_num_devices_func = host_get_num_devices,
.get_property_func = host_get_property,
.init_device_func = host_init_device, .init_device_func = host_init_device,
.fini_device_func = host_fini_device, .fini_device_func = host_fini_device,
.version_func = host_version, .version_func = host_version,
...@@ -303,6 +304,8 @@ static struct gomp_device_descr host_dispatch = ...@@ -303,6 +304,8 @@ static struct gomp_device_descr host_dispatch =
.host2dev_func = host_openacc_async_host2dev, .host2dev_func = host_openacc_async_host2dev,
}, },
.get_property_func = host_openacc_get_property,
.cuda = { .cuda = {
.get_current_device_func = NULL, .get_current_device_func = NULL,
.get_current_context_func = NULL, .get_current_context_func = NULL,
......
...@@ -760,14 +760,14 @@ acc_set_device_num (int ord, acc_device_t d) ...@@ -760,14 +760,14 @@ acc_set_device_num (int ord, acc_device_t d)
ialias (acc_set_device_num) ialias (acc_set_device_num)
static union gomp_device_property_value static union goacc_property_value
get_property_any (int ord, acc_device_t d, acc_device_property_t prop) get_property_any (int ord, acc_device_t d, acc_device_property_t prop)
{ {
goacc_lazy_initialize (); goacc_lazy_initialize ();
struct goacc_thread *thr = goacc_thread (); struct goacc_thread *thr = goacc_thread ();
if (d == acc_device_current && thr && thr->dev) if (d == acc_device_current && thr && thr->dev)
return thr->dev->get_property_func (thr->dev->target_id, prop); return thr->dev->openacc.get_property_func (thr->dev->target_id, prop);
gomp_mutex_lock (&acc_device_lock); gomp_mutex_lock (&acc_device_lock);
...@@ -789,7 +789,7 @@ get_property_any (int ord, acc_device_t d, acc_device_property_t prop) ...@@ -789,7 +789,7 @@ get_property_any (int ord, acc_device_t d, acc_device_property_t prop)
assert (dev); assert (dev);
return dev->get_property_func (dev->target_id, prop); return dev->openacc.get_property_func (dev->target_id, prop);
} }
size_t size_t
...@@ -798,7 +798,7 @@ acc_get_property (int ord, acc_device_t d, acc_device_property_t prop) ...@@ -798,7 +798,7 @@ acc_get_property (int ord, acc_device_t d, acc_device_property_t prop)
if (!known_device_type_p (d)) if (!known_device_type_p (d))
unknown_device_type_error(d); unknown_device_type_error(d);
if (prop & GOMP_DEVICE_PROPERTY_STRING_MASK) if (prop & GOACC_PROPERTY_STRING_MASK)
return 0; return 0;
else else
return get_property_any (ord, d, prop).val; return get_property_any (ord, d, prop).val;
...@@ -812,7 +812,7 @@ acc_get_property_string (int ord, acc_device_t d, acc_device_property_t prop) ...@@ -812,7 +812,7 @@ acc_get_property_string (int ord, acc_device_t d, acc_device_property_t prop)
if (!known_device_type_p (d)) if (!known_device_type_p (d))
unknown_device_type_error(d); unknown_device_type_error(d);
if (prop & GOMP_DEVICE_PROPERTY_STRING_MASK) if (prop & GOACC_PROPERTY_STRING_MASK)
return get_property_any (ord, d, prop).ptr; return get_property_any (ord, d, prop).ptr;
else else
return NULL; return NULL;
......
...@@ -53,7 +53,7 @@ module openacc_kinds ...@@ -53,7 +53,7 @@ module openacc_kinds
integer, parameter :: acc_device_property = c_size_t integer, parameter :: acc_device_property = c_size_t
! Keep in sync with include/gomp-constants.h. ! Keep in sync with 'libgomp/libgomp-plugin.h:goacc_property'.
integer (acc_device_property), parameter :: acc_property_memory = 1 integer (acc_device_property), parameter :: acc_property_memory = 1
integer (acc_device_property), parameter :: acc_property_free_memory = 2 integer (acc_device_property), parameter :: acc_property_free_memory = 2
integer (acc_device_property), parameter :: acc_property_name = int(Z'10001') integer (acc_device_property), parameter :: acc_property_name = int(Z'10001')
......
...@@ -64,8 +64,7 @@ typedef enum acc_device_t { ...@@ -64,8 +64,7 @@ typedef enum acc_device_t {
} acc_device_t; } acc_device_t;
typedef enum acc_device_property_t { typedef enum acc_device_property_t {
/* Keep in sync with include/gomp-constants.h. */ /* Keep in sync with 'libgomp/libgomp-plugin.h:goacc_property'. */
/* Start from 1 to catch uninitialized use. */
acc_property_memory = 1, acc_property_memory = 1,
acc_property_free_memory = 2, acc_property_free_memory = 2,
acc_property_name = 0x10001, acc_property_name = 0x10001,
......
...@@ -3236,17 +3236,6 @@ GOMP_OFFLOAD_get_num_devices (void) ...@@ -3236,17 +3236,6 @@ GOMP_OFFLOAD_get_num_devices (void)
return hsa_context.agent_count; return hsa_context.agent_count;
} }
union gomp_device_property_value
GOMP_OFFLOAD_get_property (int device, int prop)
{
/* Stub. Check device and return default value for unsupported properties. */
/* TODO: Implement this function. */
get_agent_info (device);
union gomp_device_property_value nullval = { .val = 0 };
return nullval;
}
/* Initialize device (agent) number N so that it can be used for computation. /* Initialize device (agent) number N so that it can be used for computation.
Return TRUE on success. */ Return TRUE on success. */
...@@ -3999,6 +3988,17 @@ GOMP_OFFLOAD_openacc_async_dev2host (int device, void *dst, const void *src, ...@@ -3999,6 +3988,17 @@ GOMP_OFFLOAD_openacc_async_dev2host (int device, void *dst, const void *src,
return true; return true;
} }
union goacc_property_value
GOMP_OFFLOAD_openacc_get_property (int device, enum goacc_property prop)
{
/* Stub. Check device and return default value for unsupported properties. */
/* TODO: Implement this function. */
get_agent_info (device);
union goacc_property_value nullval = { .val = 0 };
return nullval;
}
/* Set up plugin-specific thread-local-data (host-side). */ /* Set up plugin-specific thread-local-data (host-side). */
void * void *
......
...@@ -699,32 +699,6 @@ GOMP_OFFLOAD_get_num_devices (void) ...@@ -699,32 +699,6 @@ GOMP_OFFLOAD_get_num_devices (void)
return hsa_context.agent_count; return hsa_context.agent_count;
} }
/* Part of the libgomp plugin interface. Return the value of property
PROP of agent number N. */
union gomp_device_property_value
GOMP_OFFLOAD_get_property (int n, int prop)
{
union gomp_device_property_value nullval = { .val = 0 };
if (!init_hsa_context ())
return nullval;
if (n >= hsa_context.agent_count)
{
GOMP_PLUGIN_error
("Request for a property of a non-existing HSA device %i", n);
return nullval;
}
switch (prop)
{
case GOMP_DEVICE_PROPERTY_VENDOR:
return (union gomp_device_property_value) { .ptr = "HSA" };
default:
return nullval;
}
}
/* Part of the libgomp plugin interface. Initialize agent number N so that it /* Part of the libgomp plugin interface. Initialize agent number N so that it
can be used for computation. Return TRUE on success. */ can be used for computation. Return TRUE on success. */
......
...@@ -1121,74 +1121,6 @@ GOMP_OFFLOAD_get_num_devices (void) ...@@ -1121,74 +1121,6 @@ GOMP_OFFLOAD_get_num_devices (void)
return nvptx_get_num_devices (); return nvptx_get_num_devices ();
} }
union gomp_device_property_value
GOMP_OFFLOAD_get_property (int n, int prop)
{
union gomp_device_property_value propval = { .val = 0 };
pthread_mutex_lock (&ptx_dev_lock);
if (n >= nvptx_get_num_devices () || n < 0 || ptx_devices[n] == NULL)
{
pthread_mutex_unlock (&ptx_dev_lock);
return propval;
}
struct ptx_device *ptx_dev = ptx_devices[n];
switch (prop)
{
case GOMP_DEVICE_PROPERTY_MEMORY:
{
size_t total_mem;
CUDA_CALL_ERET (propval, cuDeviceTotalMem, &total_mem, ptx_dev->dev);
propval.val = total_mem;
}
break;
case GOMP_DEVICE_PROPERTY_FREE_MEMORY:
{
size_t total_mem;
size_t free_mem;
CUdevice ctxdev;
CUDA_CALL_ERET (propval, cuCtxGetDevice, &ctxdev);
if (ptx_dev->dev == ctxdev)
CUDA_CALL_ERET (propval, cuMemGetInfo, &free_mem, &total_mem);
else if (ptx_dev->ctx)
{
CUcontext old_ctx;
CUDA_CALL_ERET (propval, cuCtxPushCurrent, ptx_dev->ctx);
CUDA_CALL_ERET (propval, cuMemGetInfo, &free_mem, &total_mem);
CUDA_CALL_ASSERT (cuCtxPopCurrent, &old_ctx);
}
else
{
CUcontext new_ctx;
CUDA_CALL_ERET (propval, cuCtxCreate, &new_ctx, CU_CTX_SCHED_AUTO,
ptx_dev->dev);
CUDA_CALL_ERET (propval, cuMemGetInfo, &free_mem, &total_mem);
CUDA_CALL_ASSERT (cuCtxDestroy, new_ctx);
}
propval.val = free_mem;
}
break;
case GOMP_DEVICE_PROPERTY_NAME:
propval.ptr = ptx_dev->name;
break;
case GOMP_DEVICE_PROPERTY_VENDOR:
propval.ptr = "Nvidia";
break;
case GOMP_DEVICE_PROPERTY_DRIVER:
propval.ptr = cuda_driver_version_s;
break;
}
pthread_mutex_unlock (&ptx_dev_lock);
return propval;
}
bool bool
GOMP_OFFLOAD_init_device (int n) GOMP_OFFLOAD_init_device (int n)
{ {
...@@ -1818,6 +1750,76 @@ GOMP_OFFLOAD_openacc_async_dev2host (int ord, void *dst, const void *src, ...@@ -1818,6 +1750,76 @@ GOMP_OFFLOAD_openacc_async_dev2host (int ord, void *dst, const void *src,
return true; return true;
} }
union goacc_property_value
GOMP_OFFLOAD_openacc_get_property (int n, enum goacc_property prop)
{
union goacc_property_value propval = { .val = 0 };
pthread_mutex_lock (&ptx_dev_lock);
if (n >= nvptx_get_num_devices () || n < 0 || ptx_devices[n] == NULL)
{
pthread_mutex_unlock (&ptx_dev_lock);
return propval;
}
struct ptx_device *ptx_dev = ptx_devices[n];
switch (prop)
{
case GOACC_PROPERTY_MEMORY:
{
size_t total_mem;
CUDA_CALL_ERET (propval, cuDeviceTotalMem, &total_mem, ptx_dev->dev);
propval.val = total_mem;
}
break;
case GOACC_PROPERTY_FREE_MEMORY:
{
size_t total_mem;
size_t free_mem;
CUdevice ctxdev;
CUDA_CALL_ERET (propval, cuCtxGetDevice, &ctxdev);
if (ptx_dev->dev == ctxdev)
CUDA_CALL_ERET (propval, cuMemGetInfo, &free_mem, &total_mem);
else if (ptx_dev->ctx)
{
CUcontext old_ctx;
CUDA_CALL_ERET (propval, cuCtxPushCurrent, ptx_dev->ctx);
CUDA_CALL_ERET (propval, cuMemGetInfo, &free_mem, &total_mem);
CUDA_CALL_ASSERT (cuCtxPopCurrent, &old_ctx);
}
else
{
CUcontext new_ctx;
CUDA_CALL_ERET (propval, cuCtxCreate, &new_ctx, CU_CTX_SCHED_AUTO,
ptx_dev->dev);
CUDA_CALL_ERET (propval, cuMemGetInfo, &free_mem, &total_mem);
CUDA_CALL_ASSERT (cuCtxDestroy, new_ctx);
}
propval.val = free_mem;
}
break;
case GOACC_PROPERTY_NAME:
propval.ptr = ptx_dev->name;
break;
case GOACC_PROPERTY_VENDOR:
propval.ptr = "Nvidia";
break;
case GOACC_PROPERTY_DRIVER:
propval.ptr = cuda_driver_version_s;
break;
default:
break;
}
pthread_mutex_unlock (&ptx_dev_lock);
return propval;
}
/* Adjust launch dimensions: pick good values for number of blocks and warps /* Adjust launch dimensions: pick good values for number of blocks and warps
and ensure that number of warps does not exceed CUDA limits as well as GCC's and ensure that number of warps does not exceed CUDA limits as well as GCC's
own limits. */ own limits. */
......
...@@ -3028,7 +3028,6 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device, ...@@ -3028,7 +3028,6 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device,
DLSYM (get_caps); DLSYM (get_caps);
DLSYM (get_type); DLSYM (get_type);
DLSYM (get_num_devices); DLSYM (get_num_devices);
DLSYM (get_property);
DLSYM (init_device); DLSYM (init_device);
DLSYM (fini_device); DLSYM (fini_device);
DLSYM (load_image); DLSYM (load_image);
...@@ -3061,7 +3060,8 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device, ...@@ -3061,7 +3060,8 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device,
openacc_async_queue_callback) openacc_async_queue_callback)
|| !DLSYM_OPT (openacc.async.exec, openacc_async_exec) || !DLSYM_OPT (openacc.async.exec, openacc_async_exec)
|| !DLSYM_OPT (openacc.async.dev2host, openacc_async_dev2host) || !DLSYM_OPT (openacc.async.dev2host, openacc_async_dev2host)
|| !DLSYM_OPT (openacc.async.host2dev, openacc_async_host2dev)) || !DLSYM_OPT (openacc.async.host2dev, openacc_async_host2dev)
|| !DLSYM_OPT (openacc.get_property, openacc_get_property))
{ {
/* Require all the OpenACC handlers if we have /* Require all the OpenACC handlers if we have
GOMP_OFFLOAD_CAP_OPENACC_200. */ GOMP_OFFLOAD_CAP_OPENACC_200. */
......
2020-01-10 Thomas Schwinge <thomas@codesourcery.com>
* plugin/libgomp-plugin-intelmic.cpp (GOMP_OFFLOAD_get_property):
Remove.
2019-12-22 Maciej W. Rozycki <macro@codesourcery.com> 2019-12-22 Maciej W. Rozycki <macro@codesourcery.com>
Frederik Harwath <frederik@codesourcery.com> Frederik Harwath <frederik@codesourcery.com>
Thomas Schwinge <tschwinge@codesourcery.com> Thomas Schwinge <tschwinge@codesourcery.com>
......
...@@ -174,27 +174,6 @@ GOMP_OFFLOAD_get_num_devices (void) ...@@ -174,27 +174,6 @@ GOMP_OFFLOAD_get_num_devices (void)
return num_devices; return num_devices;
} }
extern "C" union gomp_device_property_value
GOMP_OFFLOAD_get_property (int n, int prop)
{
union gomp_device_property_value nullval = { .val = 0 };
if (n >= num_devices)
{
GOMP_PLUGIN_error
("Request for a property of a non-existing Intel MIC device %i", n);
return nullval;
}
switch (prop)
{
case GOMP_DEVICE_PROPERTY_VENDOR:
return (union gomp_device_property_value) { .ptr = "Intel" };
default:
return nullval;
}
}
static bool static bool
offload (const char *file, uint64_t line, int device, const char *name, offload (const char *file, uint64_t line, int device, const char *name,
int num_vars, VarDesc *vars, const void **async_data) int num_vars, VarDesc *vars, const void **async_data)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment