summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-10-22 15:46:29 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2016-10-22 15:46:29 +0200
commit4a5516aa784d2f0352daf8579c377130a914b067 (patch)
treec081e60f2ed31b693ce9b90b3e73d5a519fd8aa5
parentb0ff11acf0c857874e518717164eff3ddbabb803 (diff)
Added extra error codes to reflect the more detailed error reporting of OpenCL functions
-rw-r--r--include/clblast.h24
-rw-r--r--include/clblast_c.h24
-rwxr-xr-x[-rw-r--r--]scripts/generator/generator.py31
3 files changed, 58 insertions, 21 deletions
diff --git a/include/clblast.h b/include/clblast.h
index 53e23669..7b2021d8 100644
--- a/include/clblast.h
+++ b/include/clblast.h
@@ -46,14 +46,34 @@ enum class StatusCode {
// Status codes in common with the OpenCL standard
kSuccess = 0, // CL_SUCCESS
+ kOpenCLCompilerNotAvailable= -3, // CL_COMPILER_NOT_AVAILABLE
kTempBufferAllocFailure = -4, // CL_MEM_OBJECT_ALLOCATION_FAILURE
- kBuildProgramFailure = -11, // CL_BUILD_PROGRAM_FAILURE: OpenCL compilation error
+ kOpenCLOutOfResources = -5, // CL_OUT_OF_RESOURCES
+ kOpenCLOutOfHostMemory = -6, // CL_OUT_OF_HOST_MEMORY
+ kOpenCLBuildProgramFailure = -11, // CL_BUILD_PROGRAM_FAILURE: OpenCL compilation error
+ kInvalidValue = -30, // CL_INVALID_VALUE
+ kInvalidCommandQueue = -36, // CL_INVALID_COMMAND_QUEUE
+ kInvalidMemObject = -38, // CL_INVALID_MEM_OBJECT
kInvalidBinary = -42, // CL_INVALID_BINARY
+ kInvalidBuildOptions = -43, // CL_INVALID_BUILD_OPTIONS
+ kInvalidProgram = -44, // CL_INVALID_PROGRAM
+ kInvalidProgramExecutable = -45, // CL_INVALID_PROGRAM_EXECUTABLE
+ kInvalidKernelName = -46, // CL_INVALID_KERNEL_NAME
+ kInvalidKernelDefinition = -47, // CL_INVALID_KERNEL_DEFINITION
kInvalidKernel = -48, // CL_INVALID_KERNEL
+ kInvalidArgIndex = -49, // CL_INVALID_ARG_INDEX
+ kInvalidArgValue = -50, // CL_INVALID_ARG_VALUE
+ kInvalidArgSize = -51, // CL_INVALID_ARG_SIZE
+ kInvalidKernelArgs = -52, // CL_INVALID_KERNEL_ARGS
kInvalidLocalNumDimensions = -53, // CL_INVALID_WORK_DIMENSION: Too many thread dimensions
kInvalidLocalThreadsTotal = -54, // CL_INVALID_WORK_GROUP_SIZE: Too many threads in total
kInvalidLocalThreadsDim = -55, // CL_INVALID_WORK_ITEM_SIZE: ... or for a specific dimension
- kInvalidTempBufferSize = -61, // CL_INVALID_BUFFER_SIZE
+ kInvalidGlobalOffset = -56, // CL_INVALID_GLOBAL_OFFSET
+ kInvalidEventWaitList = -57, // CL_INVALID_EVENT_WAIT_LIST
+ kInvalidEvent = -58, // CL_INVALID_EVENT
+ kInvalidOperation = -59, // CL_INVALID_OPERATION
+ kInvalidBufferSize = -61, // CL_INVALID_BUFFER_SIZE
+ kInvalidGlobalWorkSize = -63, // CL_INVALID_GLOBAL_WORK_SIZE
// Status codes in common with the clBLAS library
kNotImplemented = -1024, // Routine or functionality not implemented yet
diff --git a/include/clblast_c.h b/include/clblast_c.h
index 2805c20f..294c3c50 100644
--- a/include/clblast_c.h
+++ b/include/clblast_c.h
@@ -47,14 +47,34 @@ typedef enum StatusCode_ {
// Status codes in common with the OpenCL standard
kSuccess = 0, // CL_SUCCESS
+ kOpenCLCompilerNotAvailable= -3, // CL_COMPILER_NOT_AVAILABLE
kTempBufferAllocFailure = -4, // CL_MEM_OBJECT_ALLOCATION_FAILURE
- kBuildProgramFailure = -11, // CL_BUILD_PROGRAM_FAILURE: OpenCL compilation error
+ kOpenCLOutOfResources = -5, // CL_OUT_OF_RESOURCES
+ kOpenCLOutOfHostMemory = -6, // CL_OUT_OF_HOST_MEMORY
+ kOpenCLBuildProgramFailure = -11, // CL_BUILD_PROGRAM_FAILURE: OpenCL compilation error
+ kInvalidValue = -30, // CL_INVALID_VALUE
+ kInvalidCommandQueue = -36, // CL_INVALID_COMMAND_QUEUE
+ kInvalidMemObject = -38, // CL_INVALID_MEM_OBJECT
kInvalidBinary = -42, // CL_INVALID_BINARY
+ kInvalidBuildOptions = -43, // CL_INVALID_BUILD_OPTIONS
+ kInvalidProgram = -44, // CL_INVALID_PROGRAM
+ kInvalidProgramExecutable = -45, // CL_INVALID_PROGRAM_EXECUTABLE
+ kInvalidKernelName = -46, // CL_INVALID_KERNEL_NAME
+ kInvalidKernelDefinition = -47, // CL_INVALID_KERNEL_DEFINITION
kInvalidKernel = -48, // CL_INVALID_KERNEL
+ kInvalidArgIndex = -49, // CL_INVALID_ARG_INDEX
+ kInvalidArgValue = -50, // CL_INVALID_ARG_VALUE
+ kInvalidArgSize = -51, // CL_INVALID_ARG_SIZE
+ kInvalidKernelArgs = -52, // CL_INVALID_KERNEL_ARGS
kInvalidLocalNumDimensions = -53, // CL_INVALID_WORK_DIMENSION: Too many thread dimensions
kInvalidLocalThreadsTotal = -54, // CL_INVALID_WORK_GROUP_SIZE: Too many threads in total
kInvalidLocalThreadsDim = -55, // CL_INVALID_WORK_ITEM_SIZE: ... or for a specific dimension
- kInvalidTempBufferSize = -61, // CL_INVALID_BUFFER_SIZE
+ kInvalidGlobalOffset = -56, // CL_INVALID_GLOBAL_OFFSET
+ kInvalidEventWaitList = -57, // CL_INVALID_EVENT_WAIT_LIST
+ kInvalidEvent = -58, // CL_INVALID_EVENT
+ kInvalidOperation = -59, // CL_INVALID_OPERATION
+ kInvalidBufferSize = -61, // CL_INVALID_BUFFER_SIZE
+ kInvalidGlobalWorkSize = -63, // CL_INVALID_GLOBAL_WORK_SIZE
// Status codes in common with the clBLAS library
kNotImplemented = -1024, // Routine or functionality not implemented yet
diff --git a/scripts/generator/generator.py b/scripts/generator/generator.py
index 04ab5475..aabce8d7 100644..100755
--- a/scripts/generator/generator.py
+++ b/scripts/generator/generator.py
@@ -29,8 +29,15 @@ import generator.doc as doc
from generator.routine import Routine
from generator.datatype import H, S, D, C, Z, Sc, Dz, iH, iS, iD, iC, iZ, Css, Zdd, Ccs, Zzd, T, Tc, TU
-
-HEADER_LINES = [97, 73, 98, 22, 29, 41]
+FILES = [
+ "/include/clblast.h",
+ "/src/clblast.cpp",
+ "/include/clblast_c.h",
+ "/src/clblast_c.cpp",
+ "/test/wrapper_clblas.hpp",
+ "/test/wrapper_cblas.hpp",
+]
+HEADER_LINES = [117, 73, 118, 22, 29, 41]
FOOTER_LINES = [17, 80, 19, 18, 6, 6]
# Different possibilities for requirements
@@ -124,33 +131,23 @@ def main(argv):
cl_args = parser.parse_args(argv)
library_root = cl_args.clblast_root
- # Sets all the files the output
- files = [
- library_root + "/include/clblast.h",
- library_root + "/src/clblast.cpp",
- library_root + "/include/clblast_c.h",
- library_root + "/src/clblast_c.cpp",
- library_root + "/test/wrapper_clblas.hpp",
- library_root + "/test/wrapper_cblas.hpp",
- ]
-
# Checks whether the command-line arguments are valid; exists otherwise
- for f in files:
- if not os.path.isfile(f):
+ for f in FILES:
+ if not os.path.isfile(library_root + f):
print("[ERROR] The path '" + library_root + "' does not point to the root of the CLBlast library")
sys.exit()
# Iterates over all regular files to output
- for i in range(0, len(files)):
+ for i in range(0, len(FILES)):
# Stores the header and the footer of the original file
- with open(files[i]) as f:
+ with open(library_root + FILES[i]) as f:
original = f.readlines()
file_header = original[:HEADER_LINES[i]]
file_footer = original[-FOOTER_LINES[i]:]
# Re-writes the body of the file
- with open(files[i], "w") as f:
+ with open(library_root + FILES[i], "w") as f:
body = ""
levels = [1, 2, 3] if (i == 4 or i == 5) else [1, 2, 3, 4]
for level in levels: