| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 | /* * StarPU * Copyright (C) INRIA 2008-2010 (see AUTHORS file) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 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 Lesser General Public License in COPYING.LGPL for more details. */#ifndef __STARPU_OPENCL_H__#define __STARPU_OPENCL_H__#ifdef STARPU_USE_OPENCL#include <CL/cl.h>#ifdef __cplusplusextern "C" {#endif#define STARPU_OPENCL_REPORT_ERROR(status)                                     \	do {                                                            \		char *errormsg;                                         \		switch (status) {                                       \		case CL_SUCCESS:                                        \			errormsg = "success";                           \			break;                                          \		case CL_DEVICE_NOT_FOUND:				\			errormsg = "Device not found";                  \			break;                                          \		case CL_DEVICE_NOT_AVAILABLE:				\			errormsg = "Device not available";              \			break;                                          \		case CL_COMPILER_NOT_AVAILABLE:				\			errormsg = "Compiler not available";            \			break;                                          \		case CL_MEM_OBJECT_ALLOCATION_FAILURE:			\			errormsg = "Memory object allocation failure";  \			break;                                          \		case CL_OUT_OF_RESOURCES:				\			errormsg = "Out of resources";                  \			break;                                          \		case CL_OUT_OF_HOST_MEMORY:				\			errormsg = "Out of host memory";                \			break;                                          \		case CL_PROFILING_INFO_NOT_AVAILABLE:			\			errormsg = "Profiling info not available";      \			break;                                          \		case CL_MEM_COPY_OVERLAP:				\			errormsg = "Memory copy overlap";               \			break;                                          \		case CL_IMAGE_FORMAT_MISMATCH:				\			errormsg = "Image format mismatch";             \			break;                                          \		case CL_IMAGE_FORMAT_NOT_SUPPORTED:			\			errormsg = "Image format not supported";        \			break;                                          \		case CL_BUILD_PROGRAM_FAILURE:				\			errormsg = "Build program failure";             \			break;                                          \		case CL_MAP_FAILURE:				        \			errormsg = "Map failure";                       \			break;                                          \		case CL_INVALID_VALUE:				        \			errormsg = "Invalid value";                     \			break;                                          \		case CL_INVALID_DEVICE_TYPE:				\			errormsg = "Invalid device type";               \			break;                                          \		case CL_INVALID_PLATFORM:				\			errormsg = "Invalid platform";                  \			break;                                          \		case CL_INVALID_DEVICE:				        \			errormsg = "Invalid device";                    \			break;                                          \		case CL_INVALID_CONTEXT:				\			errormsg = "Invalid context";                   \			break;                                          \		case CL_INVALID_QUEUE_PROPERTIES:			\			errormsg = "Invalid queue properties";          \			break;                                          \		case CL_INVALID_COMMAND_QUEUE:				\			errormsg = "Invalid command queue";             \			break;                                          \		case CL_INVALID_HOST_PTR:				\			errormsg = "Invalid host pointer";              \			break;                                          \		case CL_INVALID_MEM_OBJECT:				\			errormsg = "Invalid memory object";             \			break;                                          \		case CL_INVALID_IMAGE_FORMAT_DESCRIPTOR:		\			errormsg = "Invalid image format descriptor";   \			break;                                          \		case CL_INVALID_IMAGE_SIZE:				\			errormsg = "Invalid image size";                \			break;                                          \		case CL_INVALID_SAMPLER:				\			errormsg = "Invalid sampler";                   \			break;                                          \		case CL_INVALID_BINARY:				        \			errormsg = "Invalid binary";                    \			break;                                          \		case CL_INVALID_BUILD_OPTIONS:				\			errormsg = "Invalid build options";             \			break;                                          \		case CL_INVALID_PROGRAM:				\			errormsg = "Invalid program";                   \			break;                                          \		case CL_INVALID_PROGRAM_EXECUTABLE:			\			errormsg = "Invalid program executable";        \			break;                                          \		case CL_INVALID_KERNEL_NAME:				\			errormsg = "Invalid kernel name";               \			break;                                          \		case CL_INVALID_KERNEL_DEFINITION:			\			errormsg = "Invalid kernel definition";         \			break;                                          \		case CL_INVALID_KERNEL:				        \			errormsg = "Invalid kernel";                    \			break;                                          \		case CL_INVALID_ARG_INDEX:				\			errormsg = "Invalid argument index";            \			break;                                          \		case CL_INVALID_ARG_VALUE:				\			errormsg = "Invalid argument value";            \			break;                                          \		case CL_INVALID_ARG_SIZE:				\			errormsg = "Invalid argument size";             \			break;                                          \		case CL_INVALID_KERNEL_ARGS:				\			errormsg = "Invalid kernel arguments";          \			break;                                          \		case CL_INVALID_WORK_DIMENSION:				\			errormsg = "Invalid work dimension";            \			break;                                          \		case CL_INVALID_WORK_GROUP_SIZE:			\			errormsg = "Invalid work group size";           \			break;                                          \		case CL_INVALID_WORK_ITEM_SIZE:				\			errormsg = "Invalid work item size";            \			break;                                          \		case CL_INVALID_GLOBAL_OFFSET:				\			errormsg = "Invalid global offset";             \			break;                                          \		case CL_INVALID_EVENT_WAIT_LIST:			\			errormsg = "Invalid event wait list";           \			break;                                          \		case CL_INVALID_EVENT:				        \			errormsg = "Invalid event";                     \			break;                                          \		case CL_INVALID_OPERATION:				\			errormsg = "Invalid operation";                 \			break;                                          \		case CL_INVALID_GL_OBJECT:				\			errormsg = "Invalid GL object";                 \			break;                                          \		case CL_INVALID_BUFFER_SIZE:				\			errormsg = "Invalid buffer size";               \			break;                                          \		case CL_INVALID_MIP_LEVEL:				\			errormsg = "Invalid MIP level";                 \			break;                                          \		default:						\			errormsg = "unknown error";			\			break;			                        \		}                                                       \		printf("oops in %s ... <%s> (%d) \n", __func__, errormsg, status); \		assert(0);	                                        \	} while (0)void starpu_opencl_get_context(int devid, cl_context *context);void starpu_opencl_get_device(int devid, cl_device_id *device);void starpu_opencl_get_queue(int devid, cl_command_queue *queue);int starpu_opencl_load_kernel(cl_kernel *kernel, cl_command_queue *queue, char *program_name, char *kernel_name, int devid);int starpu_opencl_release(cl_kernel kernel);#ifdef __cplusplus}#endif#endif // STARPU_USE_OPENCL#endif // __STARPU_OPENCL_H__
 |