89 lines
2.7 KiB
C
89 lines
2.7 KiB
C
|
/* 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 */
|