| /* This testcase is part of GDB, the GNU debugger. |
| |
| Copyright 2010-2017 Free Software Foundation, Inc. |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License as published by |
| the Free Software Foundation; either version 3 of the License, or |
| (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, |
| but WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| GNU General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program. If not, see <http://www.gnu.org/licenses/>. |
| |
| Contributed by Ken Werner <ken.werner@de.ibm.com> */ |
| |
| /* Utility macros and functions for OpenCL applications. */ |
| |
| #ifndef CL_UTIL_H |
| #define CL_UTIL_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #ifdef __APPLE__ |
| #include <OpenCL/opencl.h> |
| #else |
| #include <CL/cl.h> |
| #endif |
| #include <stdio.h> |
| |
| /* Executes the given OpenCL function and checks its return value. |
| In case of failure (rc != CL_SUCCESS) an error string will be |
| printed to stderr and the program will be terminated. This Macro |
| is only intended for OpenCL routines which return cl_int. */ |
| |
| #define CHK(func)\ |
| {\ |
| int rc = (func);\ |
| CHK_ERR (#func, rc);\ |
| } |
| |
| /* Macro that checks an OpenCL error code. In case of failure |
| (err != CL_SUCCESS) an error string will be printed to stderr |
| including the prefix and the program will be terminated. This |
| Macro is only intended to use in conjunction with OpenCL routines |
| which take a pointer to a cl_int as an argument to place their |
| error code. */ |
| |
| #define CHK_ERR(prefix, err)\ |
| if (err != CL_SUCCESS)\ |
| {\ |
| fprintf (stderr, "CHK_ERR (%s, %d)\n", prefix, err);\ |
| fprintf (stderr, "%s:%d error: %s\n", __FILE__, __LINE__,\ |
| get_clerror_string (err));\ |
| exit (EXIT_FAILURE);\ |
| }; |
| |
| /* Return a pointer to a string that describes the error code specified |
| by the errcode argument. */ |
| |
| extern const char *get_clerror_string (int errcode); |
| |
| /* Prints OpenCL information to stdout. */ |
| |
| extern void print_clinfo (); |
| |
| /* Reads a given file into the memory and returns a pointer to the data or NULL |
| if the file does not exist. FILENAME specifies the location of the file to |
| be read. SIZE is an output parameter that returns the size of the file in |
| bytes. */ |
| |
| extern const char *read_file (const char * const filename, size_t *size); |
| |
| /* Saves all program binaries of the given OpenCL PROGRAM. The file |
| names are extracted from the devices. */ |
| |
| extern void save_program_binaries (cl_program program); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* CL_UTIL_H */ |