Hi! On Tue, 31 Jan 2017 15:44:46 +0100, I wrote: > --- libgomp/libgomp.h > +++ libgomp/libgomp.h > @@ -882,31 +882,35 @@ typedef struct acc_dispatch_t
> + __typeof (GOMP_OFFLOAD_openacc_parallel) *exec_func; As can be seen here, for a handful of functions, the name of the implementation in the plugins ("GOMP_OFFLOAD_openacc_parallel") doesn't match the name used in libgomp proper ("openacc.exec_func"). Here is a patch to adjust these. OK for trunk? If not now, then in next stage 1? commit 4dc0a9c9a6a1d67e298b254d9c1aa7592db5c763 Author: Thomas Schwinge <tho...@codesourcery.com> Date: Thu Jan 26 20:18:30 2017 +0100 libgomp: Normalize the names of a few functions of the libgomp plugin API libgomp/ * libgomp-plugin.h (GOMP_OFFLOAD_openacc_parallel): Rename to GOMP_OFFLOAD_openacc_exec. Adjust all users. (GOMP_OFFLOAD_openacc_get_current_cuda_device): Rename to GOMP_OFFLOAD_openacc_cuda_get_current_device. Adjust all users. (GOMP_OFFLOAD_openacc_get_current_cuda_context): Rename to GOMP_OFFLOAD_openacc_cuda_get_current_context. Adjust all users. (GOMP_OFFLOAD_openacc_get_cuda_stream): Rename to GOMP_OFFLOAD_openacc_cuda_get_stream. Adjust all users. (GOMP_OFFLOAD_openacc_set_cuda_stream): Rename to GOMP_OFFLOAD_openacc_cuda_set_stream. Adjust all users. --- libgomp/ChangeLog | 11 +++++++++++ libgomp/libgomp-plugin.h | 12 ++++++------ libgomp/libgomp.h | 10 +++++----- libgomp/plugin/plugin-nvptx.c | 14 +++++++------- libgomp/target.c | 10 +++++----- 5 files changed, 34 insertions(+), 23 deletions(-) diff --git libgomp/ChangeLog libgomp/ChangeLog [snipped] diff --git libgomp/libgomp-plugin.h libgomp/libgomp-plugin.h index fba45ee..ff81350 100644 --- libgomp/libgomp-plugin.h +++ libgomp/libgomp-plugin.h @@ -93,8 +93,8 @@ extern bool GOMP_OFFLOAD_dev2dev (int, void *, const void *, size_t); extern bool GOMP_OFFLOAD_can_run (void *); extern void GOMP_OFFLOAD_run (int, void *, void *, void **); extern void GOMP_OFFLOAD_async_run (int, void *, void *, void **, void *); -extern void GOMP_OFFLOAD_openacc_parallel (void (*) (void *), size_t, void **, - void **, int, unsigned *, void *); +extern void GOMP_OFFLOAD_openacc_exec (void (*) (void *), size_t, void **, + void **, int, unsigned *, void *); extern void GOMP_OFFLOAD_openacc_register_async_cleanup (void *, int); extern int GOMP_OFFLOAD_openacc_async_test (int); extern int GOMP_OFFLOAD_openacc_async_test_all (void); @@ -105,10 +105,10 @@ extern void GOMP_OFFLOAD_openacc_async_wait_all_async (int); extern void GOMP_OFFLOAD_openacc_async_set_async (int); extern void *GOMP_OFFLOAD_openacc_create_thread_data (int); extern void GOMP_OFFLOAD_openacc_destroy_thread_data (void *); -extern void *GOMP_OFFLOAD_openacc_get_current_cuda_device (void); -extern void *GOMP_OFFLOAD_openacc_get_current_cuda_context (void); -extern void *GOMP_OFFLOAD_openacc_get_cuda_stream (int); -extern int GOMP_OFFLOAD_openacc_set_cuda_stream (int, void *); +extern void *GOMP_OFFLOAD_openacc_cuda_get_current_device (void); +extern void *GOMP_OFFLOAD_openacc_cuda_get_current_context (void); +extern void *GOMP_OFFLOAD_openacc_cuda_get_stream (int); +extern int GOMP_OFFLOAD_openacc_cuda_set_stream (int, void *); #ifdef __cplusplus } diff --git libgomp/libgomp.h libgomp/libgomp.h index 6dfe9aa..1769a48 100644 --- libgomp/libgomp.h +++ libgomp/libgomp.h @@ -882,7 +882,7 @@ typedef struct acc_dispatch_t struct target_mem_desc *data_environ; /* Execute. */ - __typeof (GOMP_OFFLOAD_openacc_parallel) *exec_func; + __typeof (GOMP_OFFLOAD_openacc_exec) *exec_func; /* Async cleanup callback registration. */ __typeof (GOMP_OFFLOAD_openacc_register_async_cleanup) @@ -905,12 +905,12 @@ typedef struct acc_dispatch_t /* NVIDIA target specific routines. */ struct { - __typeof (GOMP_OFFLOAD_openacc_get_current_cuda_device) + __typeof (GOMP_OFFLOAD_openacc_cuda_get_current_device) *get_current_device_func; - __typeof (GOMP_OFFLOAD_openacc_get_current_cuda_context) + __typeof (GOMP_OFFLOAD_openacc_cuda_get_current_context) *get_current_context_func; - __typeof (GOMP_OFFLOAD_openacc_get_cuda_stream) *get_stream_func; - __typeof (GOMP_OFFLOAD_openacc_set_cuda_stream) *set_stream_func; + __typeof (GOMP_OFFLOAD_openacc_cuda_get_stream) *get_stream_func; + __typeof (GOMP_OFFLOAD_openacc_cuda_set_stream) *set_stream_func; } cuda; } acc_dispatch_t; diff --git libgomp/plugin/plugin-nvptx.c libgomp/plugin/plugin-nvptx.c index 4144218..0284c7f 100644 --- libgomp/plugin/plugin-nvptx.c +++ libgomp/plugin/plugin-nvptx.c @@ -1922,9 +1922,9 @@ GOMP_OFFLOAD_dev2dev (int ord, void *dst, const void *src, size_t n) void (*device_run) (int n, void *fn_ptr, void *vars) = NULL; void -GOMP_OFFLOAD_openacc_parallel (void (*fn) (void *), size_t mapnum, - void **hostaddrs, void **devaddrs, - int async, unsigned *dims, void *targ_mem_desc) +GOMP_OFFLOAD_openacc_exec (void (*fn) (void *), size_t mapnum, + void **hostaddrs, void **devaddrs, + int async, unsigned *dims, void *targ_mem_desc) { nvptx_exec (fn, mapnum, hostaddrs, devaddrs, async, dims, targ_mem_desc); } @@ -2014,13 +2014,13 @@ GOMP_OFFLOAD_openacc_destroy_thread_data (void *data) } void * -GOMP_OFFLOAD_openacc_get_current_cuda_device (void) +GOMP_OFFLOAD_openacc_cuda_get_current_device (void) { return nvptx_get_current_cuda_device (); } void * -GOMP_OFFLOAD_openacc_get_current_cuda_context (void) +GOMP_OFFLOAD_openacc_cuda_get_current_context (void) { return nvptx_get_current_cuda_context (); } @@ -2028,7 +2028,7 @@ GOMP_OFFLOAD_openacc_get_current_cuda_context (void) /* NOTE: This returns a CUstream, not a ptx_stream pointer. */ void * -GOMP_OFFLOAD_openacc_get_cuda_stream (int async) +GOMP_OFFLOAD_openacc_cuda_get_stream (int async) { return nvptx_get_cuda_stream (async); } @@ -2036,7 +2036,7 @@ GOMP_OFFLOAD_openacc_get_cuda_stream (int async) /* NOTE: This takes a CUstream, not a ptx_stream pointer. */ int -GOMP_OFFLOAD_openacc_set_cuda_stream (int async, void *stream) +GOMP_OFFLOAD_openacc_cuda_set_stream (int async, void *stream) { return nvptx_set_cuda_stream (async, stream); } diff --git libgomp/target.c libgomp/target.c index 26d5aba..3dd119f 100644 --- libgomp/target.c +++ libgomp/target.c @@ -2399,7 +2399,7 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device, } if (device->capabilities & GOMP_OFFLOAD_CAP_OPENACC_200) { - if (!DLSYM_OPT (openacc.exec, openacc_parallel) + if (!DLSYM_OPT (openacc.exec, openacc_exec) || !DLSYM_OPT (openacc.register_async_cleanup, openacc_register_async_cleanup) || !DLSYM_OPT (openacc.async_test, openacc_async_test) @@ -2423,11 +2423,11 @@ gomp_load_plugin_for_device (struct gomp_device_descr *device, unsigned cuda = 0; cuda += DLSYM_OPT (openacc.cuda.get_current_device, - openacc_get_current_cuda_device); + openacc_cuda_get_current_device); cuda += DLSYM_OPT (openacc.cuda.get_current_context, - openacc_get_current_cuda_context); - cuda += DLSYM_OPT (openacc.cuda.get_stream, openacc_get_cuda_stream); - cuda += DLSYM_OPT (openacc.cuda.set_stream, openacc_set_cuda_stream); + openacc_cuda_get_current_context); + cuda += DLSYM_OPT (openacc.cuda.get_stream, openacc_cuda_get_stream); + cuda += DLSYM_OPT (openacc.cuda.set_stream, openacc_cuda_set_stream); if (cuda && cuda != 4) { /* Make sure all the CUDA functions are there if any of them are. */ Grüße Thomas