123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- // a stripped-down subset of cl.h and cl_platform.h, for BOINC
- #ifndef BOINC_CL_BOINC_H
- #define BOINC_CL_BOINC_H
- #include <cstddef>
- #if defined(_WIN32)
- #define CL_API_ENTRY
- #define CL_API_CALL __stdcall
- #define CL_CALLBACK __stdcall
- #else
- #define CL_API_ENTRY
- #define CL_API_CALL
- #define CL_CALLBACK
- #endif
- #if (defined (_WIN32) && defined(_MSC_VER))
- /* scalar types */
- typedef signed __int8 cl_char;
- typedef unsigned __int8 cl_uchar;
- typedef signed __int16 cl_short;
- typedef unsigned __int16 cl_ushort;
- typedef signed __int32 cl_int;
- typedef unsigned __int32 cl_uint;
- typedef signed __int64 cl_long;
- typedef unsigned __int64 cl_ulong;
- typedef unsigned __int16 cl_half;
- #else /* !_WIN32 */
- #include <stdint.h>
- typedef int8_t cl_char;
- typedef uint8_t cl_uchar;
- typedef int16_t cl_short;
- typedef uint16_t cl_ushort;
- typedef int32_t cl_int;
- typedef uint32_t cl_uint;
- typedef int64_t cl_long;
- typedef uint64_t cl_ulong;
- typedef uint16_t cl_half;
- #endif /* !_WIN32 */
- typedef float cl_float;
- typedef double cl_double;
- typedef struct _cl_platform_id * cl_platform_id;
- typedef struct _cl_device_id * cl_device_id;
- typedef struct _cl_context * cl_context;
- typedef struct _cl_command_queue * cl_command_queue;
- typedef struct _cl_mem * cl_mem;
- typedef struct _cl_program * cl_program;
- typedef struct _cl_kernel * cl_kernel;
- typedef struct _cl_event * cl_event;
- typedef struct _cl_sampler * cl_sampler;
- typedef cl_uint cl_bool;
- typedef cl_ulong cl_bitfield;
- typedef cl_bitfield cl_device_type;
- typedef cl_uint cl_platform_info;
- typedef cl_uint cl_device_info;
- typedef cl_bitfield cl_device_fp_config;
- typedef cl_uint cl_device_mem_cache_type;
- typedef cl_uint cl_device_local_mem_type;
- typedef cl_bitfield cl_device_exec_capabilities;
- typedef cl_bitfield cl_command_queue_properties;
- /* Error Codes */
- #define CL_SUCCESS 0
- #define CL_DEVICE_NOT_FOUND -1
- #define CL_DEVICE_NOT_AVAILABLE -2
- #define CL_COMPILER_NOT_AVAILABLE -3
- #define CL_MEM_OBJECT_ALLOCATION_FAILURE -4
- #define CL_OUT_OF_RESOURCES -5
- #define CL_OUT_OF_HOST_MEMORY -6
- #define CL_PROFILING_INFO_NOT_AVAILABLE -7
- #define CL_MEM_COPY_OVERLAP -8
- #define CL_IMAGE_FORMAT_MISMATCH -9
- #define CL_IMAGE_FORMAT_NOT_SUPPORTED -10
- #define CL_BUILD_PROGRAM_FAILURE -11
- #define CL_MAP_FAILURE -12
- #define CL_MISALIGNED_SUB_BUFFER_OFFSET -13
- #define CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST -14
- #define CL_INVALID_VALUE -30
- #define CL_INVALID_DEVICE_TYPE -31
- #define CL_INVALID_PLATFORM -32
- #define CL_INVALID_DEVICE -33
- #define CL_INVALID_CONTEXT -34
- #define CL_INVALID_QUEUE_PROPERTIES -35
- #define CL_INVALID_COMMAND_QUEUE -36
- #define CL_INVALID_HOST_PTR -37
- #define CL_INVALID_MEM_OBJECT -38
- #define CL_INVALID_IMAGE_FORMAT_DESCRIPTOR -39
- #define CL_INVALID_IMAGE_SIZE -40
- #define CL_INVALID_SAMPLER -41
- #define CL_INVALID_BINARY -42
- #define CL_INVALID_BUILD_OPTIONS -43
- #define CL_INVALID_PROGRAM -44
- #define CL_INVALID_PROGRAM_EXECUTABLE -45
- #define CL_INVALID_KERNEL_NAME -46
- #define CL_INVALID_KERNEL_DEFINITION -47
- #define CL_INVALID_KERNEL -48
- #define CL_INVALID_ARG_INDEX -49
- #define CL_INVALID_ARG_VALUE -50
- #define CL_INVALID_ARG_SIZE -51
- #define CL_INVALID_KERNEL_ARGS -52
- #define CL_INVALID_WORK_DIMENSION -53
- #define CL_INVALID_WORK_GROUP_SIZE -54
- #define CL_INVALID_WORK_ITEM_SIZE -55
- #define CL_INVALID_GLOBAL_OFFSET -56
- #define CL_INVALID_EVENT_WAIT_LIST -57
- #define CL_INVALID_EVENT -58
- #define CL_INVALID_OPERATION -59
- #define CL_INVALID_GL_OBJECT -60
- #define CL_INVALID_BUFFER_SIZE -61
- #define CL_INVALID_MIP_LEVEL -62
- #define CL_INVALID_GLOBAL_WORK_SIZE -63
- #define CL_INVALID_PROPERTY -64
- // cl_platform_info
- #define CL_PLATFORM_PROFILE 0x0900
- #define CL_PLATFORM_VERSION 0x0901
- #define CL_PLATFORM_NAME 0x0902
- #define CL_PLATFORM_VENDOR 0x0903
- #define CL_PLATFORM_EXTENSIONS 0x0904
- /* cl_device_type - bitfield */
- #define CL_DEVICE_TYPE_DEFAULT (1 << 0)
- #define CL_DEVICE_TYPE_CPU (1 << 1)
- #define CL_DEVICE_TYPE_GPU (1 << 2)
- #define CL_DEVICE_TYPE_ACCELERATOR (1 << 3)
- #define CL_DEVICE_TYPE_ALL 0xFFFFFFFF
- /* cl_device_info */
- #define CL_DEVICE_TYPE 0x1000
- #define CL_DEVICE_VENDOR_ID 0x1001
- #define CL_DEVICE_MAX_COMPUTE_UNITS 0x1002
- #define CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS 0x1003
- #define CL_DEVICE_MAX_WORK_GROUP_SIZE 0x1004
- #define CL_DEVICE_MAX_WORK_ITEM_SIZES 0x1005
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR 0x1006
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT 0x1007
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT 0x1008
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG 0x1009
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT 0x100A
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE 0x100B
- #define CL_DEVICE_MAX_CLOCK_FREQUENCY 0x100C
- #define CL_DEVICE_ADDRESS_BITS 0x100D
- #define CL_DEVICE_MAX_READ_IMAGE_ARGS 0x100E
- #define CL_DEVICE_MAX_WRITE_IMAGE_ARGS 0x100F
- #define CL_DEVICE_MAX_MEM_ALLOC_SIZE 0x1010
- #define CL_DEVICE_IMAGE2D_MAX_WIDTH 0x1011
- #define CL_DEVICE_IMAGE2D_MAX_HEIGHT 0x1012
- #define CL_DEVICE_IMAGE3D_MAX_WIDTH 0x1013
- #define CL_DEVICE_IMAGE3D_MAX_HEIGHT 0x1014
- #define CL_DEVICE_IMAGE3D_MAX_DEPTH 0x1015
- #define CL_DEVICE_IMAGE_SUPPORT 0x1016
- #define CL_DEVICE_MAX_PARAMETER_SIZE 0x1017
- #define CL_DEVICE_MAX_SAMPLERS 0x1018
- #define CL_DEVICE_MEM_BASE_ADDR_ALIGN 0x1019
- #define CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE 0x101A
- #define CL_DEVICE_SINGLE_FP_CONFIG 0x101B
- #define CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 0x101C
- #define CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 0x101D
- #define CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 0x101E
- #define CL_DEVICE_GLOBAL_MEM_SIZE 0x101F
- #define CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 0x1020
- #define CL_DEVICE_MAX_CONSTANT_ARGS 0x1021
- #define CL_DEVICE_LOCAL_MEM_TYPE 0x1022
- #define CL_DEVICE_LOCAL_MEM_SIZE 0x1023
- #define CL_DEVICE_ERROR_CORRECTION_SUPPORT 0x1024
- #define CL_DEVICE_PROFILING_TIMER_RESOLUTION 0x1025
- #define CL_DEVICE_ENDIAN_LITTLE 0x1026
- #define CL_DEVICE_AVAILABLE 0x1027
- #define CL_DEVICE_COMPILER_AVAILABLE 0x1028
- #define CL_DEVICE_EXECUTION_CAPABILITIES 0x1029
- #define CL_DEVICE_QUEUE_PROPERTIES 0x102A
- #define CL_DEVICE_NAME 0x102B
- #define CL_DEVICE_VENDOR 0x102C
- #define CL_DRIVER_VERSION 0x102D
- #define CL_DEVICE_PROFILE 0x102E
- #define CL_DEVICE_VERSION 0x102F
- #define CL_DEVICE_EXTENSIONS 0x1030
- #define CL_DEVICE_PLATFORM 0x1031
- #define CL_DEVICE_DOUBLE_FP_CONFIG 0x1032
- #define CL_DEVICE_HALF_FP_CONFIG 0x1033
- #define CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF 0x1034
- #define CL_DEVICE_HOST_UNIFIED_MEMORY 0x1035
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR 0x1036
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT 0x1037
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_INT 0x1038
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG 0x1039
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT 0x103A
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE 0x103B
- #define CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF 0x103C
- #define CL_DEVICE_OPENCL_C_VERSION 0x103D
- // Nvidia Specific Extensions
- //
- //
- // cl_nv_device_attribute_query
- // See: https://www.khronos.org/registry/cl/extensions/nv/cl_nv_device_attribute_query.txt
- //
- #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000
- #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001
- #define CL_DEVICE_REGISTERS_PER_BLOCK_NV 0x4002
- #define CL_DEVICE_WARP_SIZE_NV 0x4003
- #define CL_DEVICE_GPU_OVERLAP_NV 0x4004
- #define CL_DEVICE_KERNEL_EXEC_TIMEOUT_NV 0x4005
- #define CL_DEVICE_INTEGRATED_MEMORY_NV 0x4006
- // AMD Specific Extensions
- //
- //
- // cl_amd_device_attribute_query
- // See: https://www.khronos.org/registry/cl/extensions/amd/cl_amd_device_attribute_query.txt
- //
- #define CL_DEVICE_PROFILING_TIMER_OFFSET_AMD 0x4036
- #define CL_DEVICE_TOPOLOGY_AMD 0x4037
- #define CL_DEVICE_BOARD_NAME_AMD 0x4038
- #define CL_DEVICE_GLOBAL_FREE_MEMORY_AMD 0x4039
- #define CL_DEVICE_SIMD_PER_COMPUTE_UNIT_AMD 0x4040
- #define CL_DEVICE_SIMD_WIDTH_AMD 0x4041
- #define CL_DEVICE_SIMD_INSTRUCTION_WIDTH_AMD 0x4042
- #define CL_DEVICE_WAVEFRONT_WIDTH_AMD 0x4043
- #define CL_DEVICE_GLOBAL_MEM_CHANNELS_AMD 0x4044
- #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANKS_AMD 0x4045
- #define CL_DEVICE_GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD 0x4046
- #define CL_DEVICE_LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD 0x4047
- #define CL_DEVICE_LOCAL_MEM_BANKS_AMD 0x4048
- #define CL_DEVICE_THREAD_TRACE_SUPPORTED_AMD 0x4049
- #define CL_DEVICE_GFXIP_MAJOR_AMD 0x404A
- #define CL_DEVICE_GFXIP_MINOR_AMD 0x404B
- #define CL_DEVICE_AVAILABLE_ASYNC_QUEUES_AMD 0x404C
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Platform API */
- extern CL_API_ENTRY cl_int CL_API_CALL
- clGetPlatformIDs(cl_uint /* num_entries */,
- cl_platform_id * /* platforms */,
- cl_uint * /* num_platforms */);
- extern CL_API_ENTRY cl_int CL_API_CALL
- clGetPlatformInfo(cl_platform_id /* platform */,
- cl_platform_info /* param_name */,
- size_t /* param_value_size */,
- void * /* param_value */,
- size_t * /* param_value_size_ret */);
- /* Device APIs */
- extern CL_API_ENTRY cl_int CL_API_CALL
- clGetDeviceIDs(cl_platform_id /* platform */,
- cl_device_type /* device_type */,
- cl_uint /* num_entries */,
- cl_device_id * /* devices */,
- cl_uint * /* num_devices */);
- extern CL_API_ENTRY cl_int CL_API_CALL
- clGetDeviceInfo(cl_device_id /* device */,
- cl_device_info /* param_name */,
- size_t /* param_value_size */,
- void * /* param_value */,
- size_t * /* param_value_size_ret */);
- #ifdef __cplusplus
- }
- #endif
- #endif // BOINC_CL_BOINC_H
|