| /* This testcase is part of GDB, the GNU debugger. | |
| Copyright 2010-2022 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 */ |