diff options
-rw-r--r-- | libgomp/ChangeLog | 11 | ||||
-rw-r--r-- | libgomp/plugin/plugin-nvptx.c | 90 |
2 files changed, 19 insertions, 82 deletions
diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 4c9f690..ccdeaa7 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,14 @@ +2015-08-03 Nathan Sidwell <nathan@codesourcery.com> + + * plugin/plugin-nvptx.c: Don't include dlfcn.h. + (cuda_errlist): Constify. + (errmsg): Move into ... + (cuda_error): ... here. Make smaller. + (_XSTR, _STR): Delete. + (cuda_synames): Delete. + (verify_device_library): Delete. + (nvptx_init): Don't call it. + 2015-07-28 Tom de Vries <tom@codesourcery.com> * testsuite/libgomp.c/uns-outer-4.c: New test. diff --git a/libgomp/plugin/plugin-nvptx.c b/libgomp/plugin/plugin-nvptx.c index fc29632..d02a3fd 100644 --- a/libgomp/plugin/plugin-nvptx.c +++ b/libgomp/plugin/plugin-nvptx.c @@ -43,16 +43,15 @@ #include <stdint.h> #include <string.h> #include <stdio.h> -#include <dlfcn.h> #include <unistd.h> #include <assert.h> #define ARRAYSIZE(X) (sizeof (X) / sizeof ((X)[0])) -static struct +static const struct { CUresult r; - char *m; + const char *m; } cuda_errlist[]= { { CUDA_ERROR_INVALID_VALUE, "invalid value" }, @@ -109,9 +108,7 @@ static struct { CUDA_ERROR_UNKNOWN, "unknown" } }; -static char errmsg[128]; - -static char * +static const char * cuda_error (CUresult r) { int i; @@ -119,12 +116,14 @@ cuda_error (CUresult r) for (i = 0; i < ARRAYSIZE (cuda_errlist); i++) { if (cuda_errlist[i].r == r) - return &cuda_errlist[i].m[0]; + return cuda_errlist[i].m; } - sprintf (&errmsg[0], "unknown result code: %5d", r); + static char errmsg[30]; + + snprintf (errmsg, sizeof (errmsg), "unknown error code: %d", r); - return &errmsg[0]; + return errmsg; } static unsigned int instantiated_devices = 0; @@ -353,74 +352,6 @@ static struct ptx_event *ptx_events; static struct ptx_device **ptx_devices; -#define _XSTR(s) _STR(s) -#define _STR(s) #s - -static struct _synames -{ - char *n; -} cuda_symnames[] = -{ - { _XSTR (cuCtxCreate) }, - { _XSTR (cuCtxDestroy) }, - { _XSTR (cuCtxGetCurrent) }, - { _XSTR (cuCtxPushCurrent) }, - { _XSTR (cuCtxSynchronize) }, - { _XSTR (cuDeviceGet) }, - { _XSTR (cuDeviceGetAttribute) }, - { _XSTR (cuDeviceGetCount) }, - { _XSTR (cuEventCreate) }, - { _XSTR (cuEventDestroy) }, - { _XSTR (cuEventQuery) }, - { _XSTR (cuEventRecord) }, - { _XSTR (cuInit) }, - { _XSTR (cuLaunchKernel) }, - { _XSTR (cuLinkAddData) }, - { _XSTR (cuLinkComplete) }, - { _XSTR (cuLinkCreate) }, - { _XSTR (cuMemAlloc) }, - { _XSTR (cuMemAllocHost) }, - { _XSTR (cuMemcpy) }, - { _XSTR (cuMemcpyDtoH) }, - { _XSTR (cuMemcpyDtoHAsync) }, - { _XSTR (cuMemcpyHtoD) }, - { _XSTR (cuMemcpyHtoDAsync) }, - { _XSTR (cuMemFree) }, - { _XSTR (cuMemFreeHost) }, - { _XSTR (cuMemGetAddressRange) }, - { _XSTR (cuMemHostGetDevicePointer) }, - { _XSTR (cuMemHostRegister) }, - { _XSTR (cuMemHostUnregister) }, - { _XSTR (cuModuleGetFunction) }, - { _XSTR (cuModuleLoadData) }, - { _XSTR (cuStreamDestroy) }, - { _XSTR (cuStreamQuery) }, - { _XSTR (cuStreamSynchronize) }, - { _XSTR (cuStreamWaitEvent) } -}; - -static int -verify_device_library (void) -{ - int i; - void *dh, *ds; - - dh = dlopen ("libcuda.so", RTLD_LAZY); - if (!dh) - return -1; - - for (i = 0; i < ARRAYSIZE (cuda_symnames); i++) - { - ds = dlsym (dh, cuda_symnames[i].n); - if (!ds) - return -1; - } - - dlclose (dh); - - return 0; -} - static inline struct nvptx_thread * nvptx_thread (void) { @@ -601,16 +532,11 @@ static bool nvptx_init (void) { CUresult r; - int rc; int ndevs; if (instantiated_devices != 0) return true; - rc = verify_device_library (); - if (rc < 0) - return false; - r = cuInit (0); if (r != CUDA_SUCCESS) GOMP_PLUGIN_fatal ("cuInit error: %s", cuda_error (r)); |