plugin-nvptx.c (ARRAYSIZE): Delete.
authorNathan Sidwell <nathan@codesourcery.com>
Tue, 29 Sep 2015 19:45:47 +0000 (19:45 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Tue, 29 Sep 2015 19:45:47 +0000 (19:45 +0000)
* plugin/plugin-nvptx.c (ARRAYSIZE): Delete.
(cuda_errlist): Delete.
(cuda_error): Reimplement.

From-SVN: r228265

libgomp/ChangeLog
libgomp/plugin/plugin-nvptx.c

index 7c1b20f8d0f6df9d645a3888727a5e5374d58f0f..88a25fcb8bf915878bb38f2b552640e4855a9792 100644 (file)
@@ -1,3 +1,9 @@
+2015-09-29  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * plugin/plugin-nvptx.c (ARRAYSIZE): Delete.
+       (cuda_errlist): Delete.
+       (cuda_error): Reimplement.
+
 2015-09-28  Nathan Sidwell  <nathan@codesourcery.com>
 
        * libgomp.h (acc_dispatch_t): Replace separate geometry args with
index 0c4e1afb50ce1acbf97429b32abcd00f454d779d..41fd9b454ebda1ad80e144ab6bd4d1d73aee11b0 100644 (file)
 #include <unistd.h>
 #include <assert.h>
 
-#define        ARRAYSIZE(X) (sizeof (X) / sizeof ((X)[0]))
-
-static const struct
-{
-  CUresult r;
-  const char *m;
-} cuda_errlist[]=
-{
-  { CUDA_ERROR_INVALID_VALUE, "invalid value" },
-  { CUDA_ERROR_OUT_OF_MEMORY, "out of memory" },
-  { CUDA_ERROR_NOT_INITIALIZED, "not initialized" },
-  { CUDA_ERROR_DEINITIALIZED, "deinitialized" },
-  { CUDA_ERROR_PROFILER_DISABLED, "profiler disabled" },
-  { CUDA_ERROR_PROFILER_NOT_INITIALIZED, "profiler not initialized" },
-  { CUDA_ERROR_PROFILER_ALREADY_STARTED, "already started" },
-  { CUDA_ERROR_PROFILER_ALREADY_STOPPED, "already stopped" },
-  { CUDA_ERROR_NO_DEVICE, "no device" },
-  { CUDA_ERROR_INVALID_DEVICE, "invalid device" },
-  { CUDA_ERROR_INVALID_IMAGE, "invalid image" },
-  { CUDA_ERROR_INVALID_CONTEXT, "invalid context" },
-  { CUDA_ERROR_CONTEXT_ALREADY_CURRENT, "context already current" },
-  { CUDA_ERROR_MAP_FAILED, "map error" },
-  { CUDA_ERROR_UNMAP_FAILED, "unmap error" },
-  { CUDA_ERROR_ARRAY_IS_MAPPED, "array is mapped" },
-  { CUDA_ERROR_ALREADY_MAPPED, "already mapped" },
-  { CUDA_ERROR_NO_BINARY_FOR_GPU, "no binary for gpu" },
-  { CUDA_ERROR_ALREADY_ACQUIRED, "already acquired" },
-  { CUDA_ERROR_NOT_MAPPED, "not mapped" },
-  { CUDA_ERROR_NOT_MAPPED_AS_ARRAY, "not mapped as array" },
-  { CUDA_ERROR_NOT_MAPPED_AS_POINTER, "not mapped as pointer" },
-  { CUDA_ERROR_ECC_UNCORRECTABLE, "ecc uncorrectable" },
-  { CUDA_ERROR_UNSUPPORTED_LIMIT, "unsupported limit" },
-  { CUDA_ERROR_CONTEXT_ALREADY_IN_USE, "context already in use" },
-  { CUDA_ERROR_PEER_ACCESS_UNSUPPORTED, "peer access unsupported" },
-  { CUDA_ERROR_INVALID_SOURCE, "invalid source" },
-  { CUDA_ERROR_FILE_NOT_FOUND, "file not found" },
-  { CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND,
-                                           "shared object symbol not found" },
-  { CUDA_ERROR_SHARED_OBJECT_INIT_FAILED, "shared object init error" },
-  { CUDA_ERROR_OPERATING_SYSTEM, "operating system" },
-  { CUDA_ERROR_INVALID_HANDLE, "invalid handle" },
-  { CUDA_ERROR_NOT_FOUND, "not found" },
-  { CUDA_ERROR_NOT_READY, "not ready" },
-  { CUDA_ERROR_LAUNCH_FAILED, "launch error" },
-  { CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES, "launch out of resources" },
-  { CUDA_ERROR_LAUNCH_TIMEOUT, "launch timeout" },
-  { CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING,
-                                             "launch incompatibe texturing" },
-  { CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED, "peer access already enabled" },
-  { CUDA_ERROR_PEER_ACCESS_NOT_ENABLED, "peer access not enabled " },
-  { CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE, "primary cotext active" },
-  { CUDA_ERROR_CONTEXT_IS_DESTROYED, "context is destroyed" },
-  { CUDA_ERROR_ASSERT, "assert" },
-  { CUDA_ERROR_TOO_MANY_PEERS, "too many peers" },
-  { CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED,
-                                           "host memory already registered" },
-  { CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED, "host memory not registered" },
-  { CUDA_ERROR_NOT_PERMITTED, "not permitted" },
-  { CUDA_ERROR_NOT_SUPPORTED, "not supported" },
-  { CUDA_ERROR_UNKNOWN, "unknown" }
-};
-
 static const char *
 cuda_error (CUresult r)
 {
-  int i;
-
-  for (i = 0; i < ARRAYSIZE (cuda_errlist); i++)
-    {
-      if (cuda_errlist[i].r == r)
-       return cuda_errlist[i].m;
-    }
-
-  static char errmsg[30];
+#if CUDA_VERSION < 7000
+  /* Specified in documentation and present in library from at least
+     5.5.  Not declared in header file prior to 7.0.  */
+  extern CUresult cuGetErrorString (CUresult, const char **);
+#endif
+  const char *desc;
 
-  snprintf (errmsg, sizeof (errmsg), "unknown error code: %d", r);
+  r = cuGetErrorString (r, &desc);
+  if (r != CUDA_SUCCESS)
+    desc = "unknown cuda error";
 
-  return errmsg;
+  return desc;
 }
 
 static unsigned int instantiated_devices = 0;