| TYPE | CONSTANT | OpenCL ver. | C++ | PYTHON | ||
| 1.0 | 1.1 | 1.2 | ||||
| Error Codes (cl_int) | ✓ | ✓ | ✓ | status_t | status_t | |
| CL_SUCCESS | ✓ | ✓ | ✓ | status_t::success | status_t.success | |
| CL_DEVICE_NOT_FOUND | ✓ | ✓ | ✓ | status_t::device_not_found | status_t.device_not_found | |
| CL_DEVICE_NOT_AVAILABLE | ✓ | ✓ | ✓ | status_t::device_not_available | status_t.device_not_available | |
| CL_COMPILER_NOT_AVAILABLE | ✓ | ✓ | ✓ | status_t::compiler_not_available | status_t.compiler_not_available | |
| CL_MEM_OBJECT_ALLOCATION_FAILURE | ✓ | ✓ | ✓ | status_t::mem_object_allocation_failure | status_t.mem_object_allocation_failure | |
| CL_OUT_OF_RESOURCES | ✓ | ✓ | ✓ | status_t::out_of_resources | status_t.out_of_resources | |
| CL_OUT_OF_HOST_MEMORY | ✓ | ✓ | ✓ | status_t::out_of_host_memory | status_t.out_of_host_memory | |
| CL_PROFILING_INFO_NOT_AVAILABLE | ✓ | ✓ | ✓ | status_t::profiling_info_not_available | status_t.profiling_info_not_available | |
| CL_MEM_COPY_OVERLAP | ✓ | ✓ | ✓ | status_t::mem_copy_overlap | status_t.mem_copy_overlap | |
| CL_IMAGE_FORMAT_MISMATCH | ✓ | ✓ | ✓ | status_t::image_format_mismatch | status_t.image_format_mismatch | |
| CL_IMAGE_FORMAT_NOT_SUPPORTED | ✓ | ✓ | ✓ | status_t::image_format_not_supported | status_t.image_format_not_supported | |
| CL_BUILD_PROGRAM_FAILURE | ✓ | ✓ | ✓ | status_t::build_program_failure | status_t.build_program_failure | |
| CL_MAP_FAILURE | ✓ | ✓ | ✓ | status_t::map_failure | status_t.map_failure | |
| CL_MISALIGNED_SUB_BUFFER_OFFSET | ✓ | ✓ | status_t::misaligned_sub_buffer_offset | status_t.misaligned_sub_buffer_offset | ||
| CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST | ✓ | ✓ | status_t::exec_status_error_for_events_in_wait_list | status_t.exec_status_error_for_events_in_wait_list | ||
| CL_COMPILE_PROGRAM_FAILURE | ✓ | status_t::compile_program_failure | status_t.compile_program_failure | |||
| CL_LINKER_NOT_AVAILABLE | ✓ | status_t::linker_not_available | status_t.linker_not_available | |||
| CL_LINK_PROGRAM_FAILURE | ✓ | status_t::link_program_failure | status_t.link_program_failure | |||
| CL_DEVICE_PARTITION_FAILED | ✓ | status_t::device_partition_failed | status_t.device_partition_failed | |||
| CL_KERNEL_ARG_INFO_NOT_AVAILABLE | ✓ | status_t::kernel_arg_info_not_available | status_t.kernel_arg_info_not_available | |||
| CL_INVALID_VALUE | ✓ | ✓ | ✓ | status_t::invalid_value | status_t.invalid_value | |
| CL_INVALID_DEVICE_TYPE | ✓ | ✓ | ✓ | status_t::invalid_device_type | status_t.invalid_device_type | |
| CL_INVALID_PLATFORM | ✓ | ✓ | ✓ | status_t::invalid_platform | status_t.invalid_platform | |
| CL_INVALID_DEVICE | ✓ | ✓ | ✓ | status_t::invalid_device | status_t.invalid_device | |
| CL_INVALID_CONTEXT | ✓ | ✓ | ✓ | status_t::invalid_context | status_t.invalid_context | |
| CL_INVALID_QUEUE_PROPERTIES | ✓ | ✓ | ✓ | status_t::invalid_queue_properties | status_t.invalid_queue_properties | |
| CL_INVALID_COMMAND_QUEUE | ✓ | ✓ | ✓ | status_t::invalid_command_queue | status_t.invalid_command_queue | |
| CL_INVALID_HOST_PTR | ✓ | ✓ | ✓ | status_t::invalid_host_ptr | status_t.invalid_host_ptr | |
| CL_INVALID_MEM_OBJECT | ✓ | ✓ | ✓ | status_t::invalid_mem_object | status_t.invalid_mem_object | |
| CL_INVALID_IMAGE_FORMAT_DESCRIPTOR | ✓ | ✓ | ✓ | status_t::invalid_image_format_descriptor | status_t.invalid_image_format_descriptor | |
| CL_INVALID_IMAGE_SIZE | ✓ | ✓ | ✓ | status_t::invalid_image_size | status_t.invalid_image_size | |
| CL_INVALID_SAMPLER | ✓ | ✓ | ✓ | status_t::invalid_sampler | status_t.invalid_sampler | |
| CL_INVALID_BINARY | ✓ | ✓ | ✓ | status_t::invalid_binary | status_t.invalid_binary | |
| CL_INVALID_BUILD_OPTIONS | ✓ | ✓ | ✓ | status_t::invalid_build_options | status_t.invalid_build_options | |
| CL_INVALID_PROGRAM | ✓ | ✓ | ✓ | status_t::invalid_program | status_t.invalid_program | |
| CL_INVALID_PROGRAM_EXECUTABLE | ✓ | ✓ | ✓ | status_t::invalid_program_executable | status_t.invalid_program_executable | |
| CL_INVALID_KERNEL_NAME | ✓ | ✓ | ✓ | status_t::invalid_kernel_name | status_t.invalid_kernel_name | |
| CL_INVALID_KERNEL_DEFINITION | ✓ | ✓ | ✓ | status_t::invalid_kernel_definition | status_t.invalid_kernel_definition | |
| CL_INVALID_KERNEL | ✓ | ✓ | ✓ | status_t::invalid_kernel | status_t.invalid_kernel | |
| CL_INVALID_ARG_INDEX | ✓ | ✓ | ✓ | status_t::invalid_arg_index | status_t.invalid_arg_index | |
| CL_INVALID_ARG_VALUE | ✓ | ✓ | ✓ | status_t::invalid_arg_value | status_t.invalid_arg_value | |
| CL_INVALID_ARG_SIZE | ✓ | ✓ | ✓ | status_t::invalid_arg_size | status_t.invalid_arg_size | |
| CL_INVALID_KERNEL_ARGS | ✓ | ✓ | ✓ | status_t::invalid_kernel_args | status_t.invalid_kernel_args | |
| CL_INVALID_WORK_DIMENSION | ✓ | ✓ | ✓ | status_t::invalid_work_dimension | status_t.invalid_work_dimension | |
| CL_INVALID_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | status_t::invalid_work_group_size | status_t.invalid_work_group_size | |
| CL_INVALID_WORK_ITEM_SIZE | ✓ | ✓ | ✓ | status_t::invalid_work_item_size | status_t.invalid_work_item_size | |
| CL_INVALID_GLOBAL_OFFSET | ✓ | ✓ | ✓ | status_t::invalid_global_offset | status_t.invalid_global_offset | |
| CL_INVALID_EVENT_WAIT_LIST | ✓ | ✓ | ✓ | status_t::invalid_event_wait_list | status_t.invalid_event_wait_list | |
| CL_INVALID_EVENT | ✓ | ✓ | ✓ | status_t::invalid_event | status_t.invalid_event | |
| CL_INVALID_OPERATION | ✓ | ✓ | ✓ | status_t::invalid_operation | status_t.invalid_operation | |
| CL_INVALID_GL_OBJECT | ✓ | ✓ | ✓ | status_t::invalid_gl_object | status_t.invalid_gl_object | |
| CL_INVALID_BUFFER_SIZE | ✓ | ✓ | ✓ | status_t::invalid_buffer_size | status_t.invalid_buffer_size | |
| CL_INVALID_MIP_LEVEL | ✓ | ✓ | ✓ | status_t::invalid_mip_level | status_t.invalid_mip_level | |
| CL_INVALID_GLOBAL_WORK_SIZE | ✓ | ✓ | ✓ | status_t::invalid_global_work_size | status_t.invalid_global_work_size | |
| CL_INVALID_PROPERTY | ✓ | ✓ | status_t::invalid_property | status_t.invalid_property | ||
| CL_INVALID_IMAGE_DESCRIPTOR | ✓ | status_t::invalid_image_descriptor | status_t.invalid_image_descriptor | |||
| CL_INVALID_COMPILER_OPTIONS | ✓ | status_t::invalid_compiler_options | status_t.invalid_compiler_options | |||
| CL_INVALID_LINKER_OPTIONS | ✓ | status_t::invalid_linker_options | status_t.invalid_linker_options | |||
| CL_INVALID_DEVICE_PARTITION_COUNT | ✓ | status_t::invalid_device_partition_count | status_t.invalid_device_partition_count | |||
| OpenCL Version | ✓ | ✓ | ✓ | |||
| CL_VERSION_1_0 | ✓ | ✓ | ✓ | |||
| CL_VERSION_1_1 | ✓ | ✓ | ||||
| CL_VERSION_1_2 | ✓ | |||||
| cl_bool | ✓ | ✓ | ✓ | |||
| CL_FALSE | ✓ | ✓ | ✓ | |||
| CL_TRUE | ✓ | ✓ | ✓ | |||
| CL_BLOCKING | ✓ | |||||
| CL_NON_BLOCKING | ✓ | |||||
| cl_platform_info | ✓ | ✓ | ✓ | platform_info_t | platform_info_t | |
| CL_PLATFORM_PROFILE | ✓ | ✓ | ✓ | platform_info_t::profile | platform_info_t.profile | |
| CL_PLATFORM_VERSION | ✓ | ✓ | ✓ | platform_info_t::version | platform_info_t.version | |
| CL_PLATFORM_NAME | ✓ | ✓ | ✓ | platform_info_t::name | platform_info_t.name | |
| CL_PLATFORM_VENDOR | ✓ | ✓ | ✓ | platform_info_t::vendor | platform_info_t.vendor | |
| CL_PLATFORM_EXTENSIONS | ✓ | ✓ | ✓ | platform_info_t::extensions | platform_info_t.extensions | |
| cl_device_type | ✓ | ✓ | ✓ | device_type_t | device_type_t | |
| 0 | ✓ | ✓ | ✓ | device_info_t::none | device_info_t.none | |
| CL_DEVICE_TYPE_DEFAULT | ✓ | ✓ | ✓ | device_info_t::default_ | device_info_t.default_ | |
| CL_DEVICE_TYPE_CPU | ✓ | ✓ | ✓ | device_info_t::cpu | device_info_t.cpu | |
| CL_DEVICE_TYPE_GPU | ✓ | ✓ | ✓ | device_info_t::gpu | device_info_t.gpu | |
| CL_DEVICE_TYPE_ACCELERATOR | ✓ | ✓ | ✓ | device_info_t::accelerator | device_info_t.accelerator | |
| CL_DEVICE_TYPE_CUSTOM | ✓ | device_info_t::custom | device_info_t.custom | |||
| CL_DEVICE_TYPE_ALL | ✓ | ✓ | ✓ | device_info_t::all | device_info_t.all | |
| cl_device_info | device_info_t | device_info_t | ||||
| CL_DEVICE_TYPE | ✓ | ✓ | ✓ | device_info_t::type | device_info_t.type | |
| CL_DEVICE_VENDOR_ID | ✓ | ✓ | ✓ | device_info_t::vendor_id | device_info_t.vendor_id | |
| CL_DEVICE_MAX_COMPUTE_UNITS | ✓ | ✓ | ✓ | device_info_t::max_compute_units | device_info_t.max_compute_units | |
| CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS | ✓ | ✓ | ✓ | device_info_t::max_work_item_dimensions | device_info_t.max_work_item_dimensions | |
| CL_DEVICE_MAX_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | device_info_t::max_work_group_size | device_info_t.max_work_group_size | |
| CL_DEVICE_MAX_WORK_ITEM_SIZES | ✓ | ✓ | ✓ | device_info_t::max_work_item_sizes | device_info_t.max_work_item_sizes | |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR | ✓ | ✓ | ✓ | device_info_t::preferred_vector_width_char | device_info_t.preferred_vector_width_char | |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT | ✓ | ✓ | ✓ | device_info_t::preferred_vector_width_short | device_info_t.preferred_vector_width_short | |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT | ✓ | ✓ | ✓ | device_info_t::preferred_vector_width_int | device_info_t.preferred_vector_width_int | |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG | ✓ | ✓ | ✓ | device_info_t::preferred_vector_width_long | device_info_t.preferred_vector_width_long | |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT | ✓ | ✓ | ✓ | device_info_t::preferred_vector_width_float | device_info_t.preferred_vector_width_float | |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE | ✓ | ✓ | ✓ | device_info_t::preferred_vector_width_double | device_info_t.preferred_vector_width_double | |
| CL_DEVICE_MAX_CLOCK_FREQUENCY | ✓ | ✓ | ✓ | device_info_t::max_clock_frequency | device_info_t.max_clock_frequency | |
| CL_DEVICE_ADDRESS_BITS | ✓ | ✓ | ✓ | device_info_t::address_bits | device_info_t.address_bits | |
| CL_DEVICE_MAX_READ_IMAGE_ARGS | ✓ | ✓ | ✓ | device_info_t::max_read_image_args | device_info_t.max_read_image_args | |
| CL_DEVICE_MAX_WRITE_IMAGE_ARGS | ✓ | ✓ | ✓ | device_info_t::max_write_image_args | device_info_t.max_write_image_args | |
| CL_DEVICE_MAX_MEM_ALLOC_SIZE | ✓ | ✓ | ✓ | device_info_t::max_mem_alloc_size | device_info_t.max_mem_alloc_size | |
| CL_DEVICE_IMAGE2D_MAX_WIDTH | ✓ | ✓ | ✓ | device_info_t::image2d_max_width | device_info_t.image2d_max_width | |
| CL_DEVICE_IMAGE2D_MAX_HEIGHT | ✓ | ✓ | ✓ | device_info_t::image2d_max_height | device_info_t.image2d_max_height | |
| CL_DEVICE_IMAGE3D_MAX_WIDTH | ✓ | ✓ | ✓ | device_info_t::image3d_max_width | device_info_t.image3d_max_width | |
| CL_DEVICE_IMAGE3D_MAX_HEIGHT | ✓ | ✓ | ✓ | device_info_t::image3d_max_height | device_info_t.image3d_max_height | |
| CL_DEVICE_IMAGE3D_MAX_DEPTH | ✓ | ✓ | ✓ | device_info_t::image3d_max_depth | device_info_t.image3d_max_depth | |
| CL_DEVICE_IMAGE_SUPPORT | ✓ | ✓ | ✓ | device_info_t::image_support | device_info_t.image_support | |
| CL_DEVICE_MAX_PARAMETER_SIZE | ✓ | ✓ | ✓ | device_info_t::max_parameter_size | device_info_t.max_parameter_size | |
| CL_DEVICE_MAX_SAMPLERS | ✓ | ✓ | ✓ | device_info_t::max_samplers | device_info_t.max_samplers | |
| CL_DEVICE_MEM_BASE_ADDR_ALIGN | ✓ | ✓ | ✓ | device_info_t::mem_base_addr_align | device_info_t.mem_base_addr_align | |
| CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE | ✓ | ✓ | ✓ | device_info_t::min_data_type_align_size | device_info_t.min_data_type_align_size | |
| CL_DEVICE_SINGLE_FP_CONFIG | ✓ | ✓ | ✓ | device_info_t::single_fp_config | device_info_t.single_fp_config | |
| CL_DEVICE_GLOBAL_MEM_CACHE_TYPE | ✓ | ✓ | ✓ | device_info_t::global_mem_cache_type | device_info_t.global_mem_cache_type | |
| CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE | ✓ | ✓ | ✓ | device_info_t::global_mem_cacheline_size | device_info_t.global_mem_cacheline_size | |
| CL_DEVICE_GLOBAL_MEM_CACHE_SIZE | ✓ | ✓ | ✓ | device_info_t::global_mem_cache_size | device_info_t.global_mem_cache_size | |
| CL_DEVICE_GLOBAL_MEM_SIZE | ✓ | ✓ | ✓ | device_info_t::global_mem_size | device_info_t.global_mem_size | |
| CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE | ✓ | ✓ | ✓ | device_info_t::max_constant_buffer_size | device_info_t.max_constant_buffer_size | |
| CL_DEVICE_MAX_CONSTANT_ARGS | ✓ | ✓ | ✓ | device_info_t::max_constant_args | device_info_t.max_constant_args | |
| CL_DEVICE_LOCAL_MEM_TYPE | ✓ | ✓ | ✓ | device_info_t::local_mem_type | device_info_t.local_mem_type | |
| CL_DEVICE_LOCAL_MEM_SIZE | ✓ | ✓ | ✓ | device_info_t::local_mem_size | device_info_t.local_mem_size | |
| CL_DEVICE_ERROR_CORRECTION_SUPPORT | ✓ | ✓ | ✓ | device_info_t::error_correction_support | device_info_t.error_correction_support | |
| CL_DEVICE_PROFILING_TIMER_RESOLUTION | ✓ | ✓ | ✓ | device_info_t::profiling_timer_resolution | device_info_t.profiling_timer_resolution | |
| CL_DEVICE_ENDIAN_LITTLE | ✓ | ✓ | ✓ | device_info_t::endian_little | device_info_t.endian_little | |
| CL_DEVICE_AVAILABLE | ✓ | ✓ | ✓ | device_info_t::available | device_info_t.available | |
| CL_DEVICE_COMPILER_AVAILABLE | ✓ | ✓ | ✓ | device_info_t::compiler_available | device_info_t.compiler_available | |
| CL_DEVICE_EXECUTION_CAPABILITIES | ✓ | ✓ | ✓ | device_info_t::execution_capabilities | device_info_t.execution_capabilities | |
| CL_DEVICE_QUEUE_PROPERTIES | ✓ | ✓ | ✓ | device_info_t::queue_properties | device_info_t.queue_properties | |
| CL_DEVICE_NAME | ✓ | ✓ | ✓ | device_info_t::name | device_info_t.name | |
| CL_DEVICE_VENDOR | ✓ | ✓ | ✓ | device_info_t::vendor | device_info_t.vendor | |
| CL_DRIVER_VERSION | ✓ | ✓ | ✓ | device_info_t::driver_version | device_info_t.driver_version | |
| CL_DEVICE_PROFILE | ✓ | ✓ | ✓ | device_info_t::profile | device_info_t.profile | |
| CL_DEVICE_VERSION | ✓ | ✓ | ✓ | device_info_t::version | device_info_t.version | |
| CL_DEVICE_EXTENSIONS | ✓ | ✓ | ✓ | device_info_t::extensions | device_info_t.extensions | |
| CL_DEVICE_PLATFORM | ✓ | ✓ | ✓ | device_info_t::platform | device_info_t.platform | |
| CL_DEVICE_DOUBLE_FP_CONFIG | ✓ | device_info_t::double_fp_config | device_info_t.double_fp_config | |||
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF | ✓ | ✓ | device_info_t::preferred_vector_width_half | device_info_t.preferred_vector_width_half | ||
| CL_DEVICE_HOST_UNIFIED_MEMORY | ✓ | ✓ | device_info_t::host_unified_memory | device_info_t.host_unified_memory | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR | ✓ | ✓ | device_info_t::native_vector_width_char | device_info_t.native_vector_width_char | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT | ✓ | ✓ | device_info_t::native_vector_width_short | device_info_t.native_vector_width_short | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_INT | ✓ | ✓ | device_info_t::native_vector_width_int | device_info_t.native_vector_width_int | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG | ✓ | ✓ | device_info_t::native_vector_width_long | device_info_t.native_vector_width_long | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT | ✓ | ✓ | device_info_t::native_vector_width_float | device_info_t.native_vector_width_float | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE | ✓ | ✓ | device_info_t::native_vector_width_double | device_info_t.native_vector_width_double | ||
| CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF | ✓ | ✓ | device_info_t::native_vector_width_half | device_info_t.native_vector_width_half | ||
| CL_DEVICE_OPENCL_C_VERSION | ✓ | ✓ | device_info_t::opencl_c_version | device_info_t.opencl_c_version | ||
| CL_DEVICE_LINKER_AVAILABLE | ✓ | device_info_t::linker_available | device_info_t.linker_available | |||
| CL_DEVICE_BUILT_IN_KERNELS | ✓ | device_info_t::built_in_kernels | device_info_t.built_in_kernels | |||
| CL_DEVICE_IMAGE_MAX_BUFFER_SIZE | ✓ | device_info_t::image_max_buffer_size | device_info_t.image_max_buffer_size | |||
| CL_DEVICE_IMAGE_MAX_ARRAY_SIZE | ✓ | device_info_t::image_max_array_size | device_info_t.image_max_array_size | |||
| CL_DEVICE_PARENT_DEVICE | ✓ | device_info_t::parent_device | device_info_t.parent_device | |||
| CL_DEVICE_PARTITION_MAX_SUB_DEVICES | ✓ | device_info_t::partition_max_sub_devices | device_info_t.partition_max_sub_devices | |||
| CL_DEVICE_PARTITION_PROPERTIES | ✓ | device_info_t::partition_properties | device_info_t.partition_properties | |||
| CL_DEVICE_PARTITION_AFFINITY_DOMAIN | ✓ | device_info_t::partition_affinity_domain | device_info_t.partition_affinity_domain | |||
| CL_DEVICE_PARTITION_TYPE | ✓ | device_info_t::partition_type | device_info_t.partition_type | |||
| CL_DEVICE_REFERENCE_COUNT | ✓ | device_info_t::reference_count | device_info_t.reference_count | |||
| CL_DEVICE_PREFERRED_INTEROP_USER_SYNC | ✓ | device_info_t::preferred_interop_user_sync | device_info_t.preferred_interop_user_sync | |||
| CL_DEVICE_PRINTF_BUFFER_SIZE | ✓ | device_info_t::printf_buffer_size | device_info_t.printf_buffer_size | |||
| CL_DEVICE_IMAGE_PITCH_ALIGNMENT | ✓ | device_info_t::image_pitch_alignment | device_info_t.image_pitch_alignment | |||
| CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT | ✓ | device_info_t::image_base_address_alignment | device_info_t.image_base_address_alignment | |||
| cl_device_fp_config | ✓ | ✓ | ✓ | device_fp_config_t | device_fp_config_t | |
| 0 | ✓ | ✓ | ✓ | device_fp_config_t::none | device_fp_config_t.none | |
| CL_FP_DENORM | ✓ | ✓ | ✓ | device_fp_config_t::denorm | device_fp_config_t.denorm | |
| CL_FP_INF_NAN | ✓ | ✓ | ✓ | device_fp_config_t::inf_nan | device_fp_config_t.inf_nan | |
| CL_FP_ROUND_TO_NEAREST | ✓ | ✓ | ✓ | device_fp_config_t::round_to_nearest | device_fp_config_t.round_to_nearest | |
| CL_FP_ROUND_TO_ZERO | ✓ | ✓ | ✓ | device_fp_config_t::round_to_zero | device_fp_config_t.round_to_zero | |
| CL_FP_ROUND_TO_INF | ✓ | ✓ | ✓ | device_fp_config_t::round_to_inf | device_fp_config_t.round_to_inf | |
| CL_FP_FMA | ✓ | ✓ | ✓ | device_fp_config_t::fma | device_fp_config_t.fma | |
| CL_FP_SOFT_FLOAT | ✓ | ✓ | device_fp_config_t::soft_float | device_fp_config_t.soft_float | ||
| CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT | ✓ | device_fp_config_t::correctly_rounded_divide_sqrt | device_fp_config_t.correctly_rounded_divide_sqrt | |||
| cl_device_mem_cache_type | ✓ | ✓ | ✓ | device_mem_cache_type_t | device_mem_cache_type_t | |
| CL_NONE | ✓ | ✓ | ✓ | device_mem_cache_type_t::none | device_mem_cache_type_t.none | |
| CL_READ_ONLY_CACHE | ✓ | ✓ | ✓ | device_mem_cache_type_t::read_only_cache | device_mem_cache_type_t.read_only_cache | |
| CL_READ_WRITE_CACHE | ✓ | ✓ | ✓ | device_mem_cache_type_t::read_write_cache | device_mem_cache_type_t.read_write_cache | |
| cl_device_local_mem_type | ✓ | ✓ | ✓ | device_local_mem_type_t | device_local_mem_type_t | |
| CL_LOCAL | ✓ | ✓ | ✓ | device_local_mem_type_t::local | device_local_mem_type_t.local | |
| CL_GLOBAL | ✓ | ✓ | ✓ | device_local_mem_type_t::global | device_local_mem_type_t._global | |
| cl_device_exec_capabilities | ✓ | ✓ | ✓ | device_exec_capabilities_t | device_exec_capabilities_t | |
| 0 | ✓ | ✓ | ✓ | device_exec_capabilities_t::none | device_exec_capabilities_t.none | |
| CL_EXEC_KERNEL | ✓ | ✓ | ✓ | device_exec_capabilities_t::kernel | device_exec_capabilities_t.kernel | |
| CL_EXEC_NATIVE_KERNEL | ✓ | ✓ | ✓ | device_exec_capabilities_t::native_kernel | device_exec_capabilities_t.native_kernel | |
| cl_device_command_queue_properties | ✓ | ✓ | ✓ | command_queue_properties_t | command_queue_properties_t | |
| 0 | ✓ | ✓ | ✓ | command_queue_properties_t::none | command_queue_properties_t.none | |
| CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | ✓ | ✓ | ✓ | command_queue_properties_t::out_of_order_exec_mode_enable | command_queue_properties_t.out_of_order_exec_mode_enable | |
| CL_QUEUE_PROFILING_ENABLE | ✓ | ✓ | ✓ | command_queue_properties_t::profiling_enable | command_queue_properties_t.profiling_enable | |
| cl_context_info | ✓ | ✓ | ✓ | context_info_t | context_info_t | |
| CL_CONTEXT_REFERENCE_COUNT | ✓ | ✓ | ✓ | context_info_t::reference_count | context_info_t.reference_count | |
| CL_CONTEXT_DEVICES | ✓ | ✓ | ✓ | context_info_t::devices | context_info_t.devices | |
| CL_CONTEXT_PROPERTIES | ✓ | ✓ | ✓ | context_info_t::properties | context_info_t.properties | |
| CL_CONTEXT_NUM_DEVICES | ✓ | ✓ | context_info_t::num_devices | context_info_t.num_devices | ||
| cl_context_properties | ✓ | ✓ | ✓ | context_properties_t | context_properties_t | |
| CL_CONTEXT_PLATFORM | ✓ | ✓ | ✓ | context_properties_t::platform | context_properties_t.platform | |
| CL_CONTEXT_INTEROP_USER_SYNC | ✓ | context_properties_t::interop_user_sync | context_properties_t.interop_user_sync | |||
| cl_device_partition_property | ✓ | device_partition_property_t | device_partition_property_t | |||
| CL_DEVICE_PARTITION_EQUALLY | ✓ | device_partition_property_t::equally | device_partition_property_t.equally | |||
| CL_DEVICE_PARTITION_BY_COUNTS | ✓ | device_partition_property_t::by_counts | device_partition_property_t.by_counts | |||
| CL_DEVICE_PARTITION_BY_COUNTS_LIST_END | ✓ | device_partition_property_t::by_counts_list_end | device_partition_property_t.by_counts_list_end | |||
| CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN | ✓ | device_partition_property_t::by_affinity_domain | device_partition_property_t.by_affinity_domain | |||
| cl_device_affinity_domain | device_affinity_domain_t | device_affinity_domain_t | ||||
| 0 | ✓ | device_affinity_domain_t::none | device_affinity_domain_t.none | |||
| CL_DEVICE_AFFINITY_DOMAIN_NUMA | ✓ | device_affinity_domain_t::numa | device_affinity_domain_t.numa | |||
| CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE | ✓ | device_affinity_domain_t::l4_cache | device_affinity_domain_t.l4_cache | |||
| CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE | ✓ | device_affinity_domain_t::l3_cache | device_affinity_domain_t.l3_cache | |||
| CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE | ✓ | device_affinity_domain_t::l2_cache | device_affinity_domain_t.l2_cache | |||
| CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE | ✓ | device_affinity_domain_t::l1_cache | device_affinity_domain_t.l1_cache | |||
| CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE | ✓ | device_affinity_domain_t::next_partitionable | device_affinity_domain_t.next_partitionable | |||
| cl_command_queue_info | ✓ | ✓ | ✓ | command_queue_info_t | command_queue_info_t | |
| CL_QUEUE_CONTEXT | ✓ | ✓ | ✓ | command_queue_info_t::context | command_queue_info_t.context | |
| CL_QUEUE_DEVICE | ✓ | ✓ | ✓ | command_queue_info_t::device | command_queue_info_t.device | |
| CL_QUEUE_REFERENCE_COUNT | ✓ | ✓ | ✓ | command_queue_info_t::reference_count | command_queue_info_t.reference_count | |
| CL_QUEUE_PROPERTIES | ✓ | ✓ | ✓ | command_queue_info_t::properties | command_queue_info_t.properties | |
| cl_mem_flags | ✓ | ✓ | ✓ | mem_flags_t | mem_flags_t | |
| 0 | ✓ | ✓ | ✓ | mem_flags_t::none | mem_flags_t.none | |
| CL_MEM_READ_WRITE | ✓ | ✓ | ✓ | mem_flags_t::read_write | mem_flags_t.read_write | |
| CL_MEM_WRITE_ONLY | ✓ | ✓ | ✓ | mem_flags_t::write_only | mem_flags_t.write_only | |
| CL_MEM_READ_ONLY | ✓ | ✓ | ✓ | mem_flags_t::read_only | mem_flags_t.read_only | |
| CL_MEM_USE_HOST_PTR | ✓ | ✓ | ✓ | mem_flags_t::use_host_ptr | mem_flags_t.use_host_ptr | |
| CL_MEM_ALLOC_HOST_PTR | ✓ | ✓ | ✓ | mem_flags_t::alloc_host_ptr | mem_flags_t.alloc_host_ptr | |
| CL_MEM_COPY_HOST_PTR | ✓ | ✓ | ✓ | mem_flags_t::copy_host_ptr | mem_flags_t.copy_host_ptr | |
| CL_MEM_HOST_WRITE_ONLY | ✓ | mem_flags_t::host_write_only | mem_flags_t.host_write_only | |||
| CL_MEM_HOST_READ_ONLY | ✓ | mem_flags_t::host_read_only | mem_flags_t.host_read_only | |||
| CL_MEM_HOST_NO_ACCESS | ✓ | mem_flags_t::host_no_access | mem_flags_t.host_no_access | |||
| cl_mem_migration_flags | ✓ | mem_migration_flags_t | mem_migration_flags_t | |||
| 0 | ✓ | mem_migration_flags_t::none | mem_migration_flags_t.none | |||
| CL_MIGRATE_MEM_OBJECT_HOST | ✓ | mem_migration_flags_t::mem_object_host | mem_migration_flags_t.mem_object_host | |||
| CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED | ✓ | mem_migration_flags_t::mem_object_content_undefined | mem_migration_flags_t.mem_object_content_undefined | |||
| cl_channel_order | ✓ | ✓ | ✓ | channel_order_t | channel_order_t | |
| CL_R | ✓ | ✓ | ✓ | channel_order_t::r | channel_order_t.r | |
| CL_A | ✓ | ✓ | ✓ | channel_order_t::a | channel_order_t.a | |
| CL_RG | ✓ | ✓ | ✓ | channel_order_t::rg | channel_order_t.rg | |
| CL_RA | ✓ | ✓ | ✓ | channel_order_t::ra | channel_order_t.ra | |
| CL_RGB | ✓ | ✓ | ✓ | channel_order_t::rgb | channel_order_t.rgb | |
| CL_RGBA | ✓ | ✓ | ✓ | channel_order_t::rgba | channel_order_t.rgba | |
| CL_BGRA | ✓ | ✓ | ✓ | channel_order_t::bgra | channel_order_t.bgra | |
| CL_ARGB | ✓ | ✓ | ✓ | channel_order_t::argb | channel_order_t.argb | |
| CL_INTENSITY | ✓ | ✓ | ✓ | channel_order_t::intensity | channel_order_t.intensity | |
| CL_LUMINANCE | ✓ | ✓ | ✓ | channel_order_t::luminance | channel_order_t.luminance | |
| CL_Rx | ✓ | ✓ | channel_order_t::rx | channel_order_t.rx | ||
| CL_RGx | ✓ | ✓ | channel_order_t::rgx | channel_order_t.rgx | ||
| CL_RGBx | ✓ | ✓ | channel_order_t::rgbx | channel_order_t.rgbx | ||
| CL_DEPTH | ✓ | channel_order_t::depth | channel_order_t.depth | |||
| CL_DEPTH_STENCIL | ✓ | channel_order_t::depth_stencil | channel_order_t.depth_stencil | |||
| cl_channel_type | ✓ | ✓ | channel_type_t | channel_type_t | ||
| CL_SNORM_INT8 | ✓ | ✓ | ✓ | channel_type_t::snorm_int8 | channel_type_t.snorm_int8 | |
| CL_SNORM_INT16 | ✓ | ✓ | ✓ | channel_type_t::snorm_int16 | channel_type_t.snorm_int16 | |
| CL_UNORM_INT8 | ✓ | ✓ | ✓ | channel_type_t::unorm_int8 | channel_type_t.unorm_int8 | |
| CL_UNORM_INT16 | ✓ | ✓ | ✓ | channel_type_t::unorm_int16 | channel_type_t.unorm_int16 | |
| CL_UNORM_SHORT_565 | ✓ | ✓ | ✓ | channel_type_t::unorm_short_565 | channel_type_t.unorm_short_565 | |
| CL_UNORM_SHORT_555 | ✓ | ✓ | ✓ | channel_type_t::unorm_short_555 | channel_type_t.unorm_short_555 | |
| CL_UNORM_INT_101010 | ✓ | ✓ | ✓ | channel_type_t::unorm_int_101010 | channel_type_t.unorm_int_101010 | |
| CL_SIGNED_INT8 | ✓ | ✓ | ✓ | channel_type_t::signed_int8 | channel_type_t.signed_int8 | |
| CL_SIGNED_INT16 | ✓ | ✓ | ✓ | channel_type_t::signed_int16 | channel_type_t.signed_int16 | |
| CL_SIGNED_INT32 | ✓ | ✓ | ✓ | channel_type_t::signed_int32 | channel_type_t.signed_int32 | |
| CL_UNSIGNED_INT8 | ✓ | ✓ | ✓ | channel_type_t::unsigned_int8 | channel_type_t.unsigned_int8 | |
| CL_UNSIGNED_INT16 | ✓ | ✓ | ✓ | channel_type_t::unsigned_int16 | channel_type_t.unsigned_int16 | |
| CL_UNSIGNED_INT32 | ✓ | ✓ | ✓ | channel_type_t::unsigned_int32 | channel_type_t.unsigned_int32 | |
| CL_HALF_FLOAT | ✓ | ✓ | ✓ | channel_type_t::half_float | channel_type_t.half_float | |
| CL_FLOAT | ✓ | ✓ | ✓ | channel_type_t::float_ | channel_type_t.float_ | |
| CL_UNORM_INT24 | ✓ | channel_type_t::unorm_int24 | channel_type_t.unorm_int24 | |||
| cl_mem_object_type | ✓ | ✓ | ✓ | mem_object_type_t | mem_object_type_t | |
| CL_MEM_OBJECT_BUFFER | ✓ | ✓ | ✓ | mem_object_type_t::buffer | mem_object_type_t.buffer | |
| CL_MEM_OBJECT_IMAGE2D | ✓ | ✓ | ✓ | mem_object_type_t::image2d | mem_object_type_t.image2d | |
| CL_MEM_OBJECT_IMAGE3D | ✓ | ✓ | ✓ | mem_object_type_t::image3d | mem_object_type_t.image3d | |
| CL_MEM_OBJECT_IMAGE2D_ARRAY | ✓ | mem_object_type_t::image2d_array | mem_object_type_t.image2d_array | |||
| CL_MEM_OBJECT_IMAGE1D | ✓ | mem_object_type_t::image1d | mem_object_type_t.image1d | |||
| CL_MEM_OBJECT_IMAGE1D_ARRAY | ✓ | mem_object_type_t::image1d_array | mem_object_type_t.image1d_array | |||
| CL_MEM_OBJECT_IMAGE1D_BUFFER | ✓ | mem_object_type_t::image1d_buffer | mem_object_type_t.image1d_buffer | |||
| cl_mem_info | ✓ | ✓ | ✓ | mem_info_t | mem_info_t | |
| CL_MEM_TYPE | ✓ | ✓ | ✓ | mem_info_t::type | mem_info_t.type | |
| CL_MEM_FLAGS | ✓ | ✓ | ✓ | mem_info_t::flags | mem_info_t.flags | |
| CL_MEM_SIZE | ✓ | ✓ | ✓ | mem_info_t::size | mem_info_t.size | |
| CL_MEM_HOST_PTR | ✓ | ✓ | ✓ | mem_info_t::host_ptr | mem_info_t.host_ptr | |
| CL_MEM_MAP_COUNT | ✓ | ✓ | ✓ | mem_info_t::map_count | mem_info_t.map_count | |
| CL_MEM_REFERENCE_COUNT | ✓ | ✓ | ✓ | mem_info_t::reference_count | mem_info_t.reference_count | |
| CL_MEM_CONTEXT | ✓ | ✓ | ✓ | mem_info_t::context | mem_info_t.context | |
| CL_MEM_ASSOCIATED_MEMOBJECT | ✓ | ✓ | mem_info_t::associated_memobject | mem_info_t.associated_memobject | ||
| CL_MEM_OFFSET | ✓ | ✓ | mem_info_t::offset | mem_info_t.offset | ||
| cl_image_info | ✓ | ✓ | ✓ | image_info_t | image_info_t | |
| CL_IMAGE_FORMAT | ✓ | ✓ | ✓ | image_info_t::format | image_info_t.format | |
| CL_IMAGE_ELEMENT_SIZE | ✓ | ✓ | ✓ | image_info_t::element_size | image_info_t.element_size | |
| CL_IMAGE_ROW_PITCH | ✓ | ✓ | ✓ | image_info_t::row_pitch | image_info_t.row_pitch | |
| CL_IMAGE_SLICE_PITCH | ✓ | ✓ | ✓ | image_info_t::slice_pitch | image_info_t.slice_pitch | |
| CL_IMAGE_WIDTH | ✓ | ✓ | ✓ | image_info_t::width | image_info_t.width | |
| CL_IMAGE_HEIGHT | ✓ | ✓ | ✓ | image_info_t::height | image_info_t.height | |
| CL_IMAGE_DEPTH | ✓ | ✓ | ✓ | image_info_t::depth | image_info_t.depth | |
| CL_IMAGE_ARRAY_SIZE | ✓ | image_info_t::array_size | image_info_t.array_size | |||
| CL_IMAGE_BUFFER | ✓ | image_info_t::buffer | image_info_t.buffer | |||
| CL_IMAGE_NUM_MIP_LEVELS | ✓ | image_info_t::num_mip_levels | image_info_t.num_mip_levels | |||
| CL_IMAGE_NUM_SAMPLES | ✓ | image_info_t::num_samples | image_info_t.num_samples | |||
| cl_addressing_mode | ✓ | ✓ | ✓ | addressing_mode_t | addressing_mode_t | |
| CL_ADDRESS_NONE | ✓ | ✓ | ✓ | addressing_mode_t::none | addressing_mode_t.none | |
| CL_ADDRESS_CLAMP_TO_EDGE | ✓ | ✓ | ✓ | addressing_mode_t::clamp_to_edge | addressing_mode_t.clamp_to_edge | |
| CL_ADDRESS_CLAMP | ✓ | ✓ | ✓ | addressing_mode_t::clamp | addressing_mode_t.clamp | |
| CL_ADDRESS_REPEAT | ✓ | ✓ | ✓ | addressing_mode_t::repeat | addressing_mode_t.repeat | |
| CL_ADDRESS_MIRRORED_REPEAT | ✓ | ✓ | addressing_mode_t::mirrored_repeat | addressing_mode_t.mirrored_repeat | ||
| cl_filter_mode | ✓ | ✓ | ✓ | filter_mode_t | filter_mode_t | |
| CL_FILTER_NEAREST | ✓ | ✓ | ✓ | filter_mode_t::nearest | filter_mode_t.nearest | |
| CL_FILTER_LINEAR | ✓ | ✓ | ✓ | filter_mode_t::linear | filter_mode_t.linear | |
| cl_sampler_info | ✓ | ✓ | ✓ | sampler_info_t | sampler_info_t | |
| CL_SAMPLER_REFERENCE_COUNT | ✓ | ✓ | ✓ | sampler_info_t::reference_count | sampler_info_t.reference_count | |
| CL_SAMPLER_CONTEXT | ✓ | ✓ | ✓ | sampler_info_t::context | sampler_info_t.context | |
| CL_SAMPLER_NORMALIZED_COORDS | ✓ | ✓ | ✓ | sampler_info_t::normalized_coords | sampler_info_t.normalized_coords | |
| CL_SAMPLER_ADDRESSING_MODE | ✓ | ✓ | ✓ | sampler_info_t::addressing_mode | sampler_info_t.addressing_mode | |
| CL_SAMPLER_FILTER_MODE | ✓ | ✓ | ✓ | sampler_info_t::filter_mode | sampler_info_t.filter_mode | |
| cl_map_flags | ✓ | ✓ | ✓ | map_flags_t | map_flags_t | |
| 0 | ✓ | ✓ | ✓ | map_flags_t::none | map_flags_t.none | |
| CL_MAP_READ | ✓ | ✓ | ✓ | map_flags_t::read | map_flags_t.read | |
| CL_MAP_WRITE | ✓ | ✓ | ✓ | map_flags_t::write | map_flags_t.write | |
| CL_MAP_WRITE_INVALIDATE_REGION | ✓ | map_flags_t::write_invalidate_region | map_flags_t.write_invalidate_region | |||
| cl_program_info | ✓ | ✓ | ✓ | program_info_t | program_info_t | |
| CL_PROGRAM_REFERENCE_COUNT | ✓ | ✓ | ✓ | program_info_t::reference_count | program_info_t.reference_count | |
| CL_PROGRAM_CONTEXT | ✓ | ✓ | ✓ | program_info_t::context | program_info_t.context | |
| CL_PROGRAM_NUM_DEVICES | ✓ | ✓ | ✓ | program_info_t::num_devices | program_info_t.num_devices | |
| CL_PROGRAM_DEVICES | ✓ | ✓ | ✓ | program_info_t::devices | program_info_t.devices | |
| CL_PROGRAM_SOURCE | ✓ | ✓ | ✓ | program_info_t::source | program_info_t.source | |
| CL_PROGRAM_BINARY_SIZES | ✓ | ✓ | ✓ | program_info_t::binary_sizes | program_info_t.binary_sizes | |
| CL_PROGRAM_BINARIES | ✓ | ✓ | ✓ | program_info_t::binaries | program_info_t.binaries | |
| CL_PROGRAM_NUM_KERNELS | ✓ | program_info_t::num_kernels | program_info_t.num_kernels | |||
| CL_PROGRAM_KERNEL_NAMES | ✓ | program_info_t::kernel_names | program_info_t.kernel_names | |||
| cl_program_build_info | ✓ | ✓ | ✓ | program_build_info_t | program_build_info_t | |
| CL_PROGRAM_BUILD_STATUS | ✓ | ✓ | ✓ | program_build_info_t::status | program_build_info_t.status | |
| CL_PROGRAM_BUILD_OPTIONS | ✓ | ✓ | ✓ | program_build_info_t::options | program_build_info_t.options | |
| CL_PROGRAM_BUILD_LOG | ✓ | ✓ | ✓ | program_build_info_t::log | program_build_info_t.log | |
| CL_PROGRAM_BINARY_TYPE | ✓ | program_build_info_t::binary_type | program_build_info_t.binary_type | |||
| cl_program_binary_type | ✓ | program_binary_type_t | program_binary_type_t | |||
| CL_PROGRAM_BINARY_TYPE_NONE | ✓ | program_binary_type_t::none | program_binary_type_t.none | |||
| CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT | ✓ | program_binary_type_t::compiled_object | program_binary_type_t.compiled_object | |||
| CL_PROGRAM_BINARY_TYPE_LIBRARY | ✓ | program_binary_type_t::library | program_binary_type_t.library | |||
| CL_PROGRAM_BINARY_TYPE_EXECUTABLE | ✓ | program_binary_type_t::executable | program_binary_type_t.executable | |||
| cl_build_status | ✓ | ✓ | ✓ | build_status_t | build_status_t | |
| CL_BUILD_SUCCESS | ✓ | ✓ | ✓ | build_status_t::success | build_status_t.success | |
| CL_BUILD_NONE | ✓ | ✓ | ✓ | build_status_t::none | build_status_t.none | |
| CL_BUILD_ERROR | ✓ | ✓ | ✓ | build_status_t::error | build_status_t.error | |
| CL_BUILD_IN_PROGRESS | ✓ | ✓ | ✓ | build_status_t::in_progress | build_status_t.in_progress | |
| cl_kernel_info | ✓ | ✓ | ✓ | kernel_info_t | kernel_info_t | |
| CL_KERNEL_FUNCTION_NAME | ✓ | ✓ | ✓ | kernel_info_t::function_name | kernel_info_t.function_name | |
| CL_KERNEL_NUM_ARGS | ✓ | ✓ | ✓ | kernel_info_t::num_args | kernel_info_t.num_args | |
| CL_KERNEL_REFERENCE_COUNT | ✓ | ✓ | ✓ | kernel_info_t::reference_count | kernel_info_t.reference_count | |
| CL_KERNEL_CONTEXT | ✓ | ✓ | ✓ | kernel_info_t::context | kernel_info_t.context | |
| CL_KERNEL_PROGRAM | ✓ | ✓ | ✓ | kernel_info_t::program | kernel_info_t.program | |
| CL_KERNEL_ATTRIBUTES | ✓ | kernel_info_t::attributes | kernel_info_t.attributes | |||
| cl_kernel_arg_info | ✓ | kernel_arg_info_t | kernel_arg_info_t | |||
| CL_KERNEL_ARG_ADDRESS_QUALIFIER | ✓ | kernel_arg_info_t::address_qualifier | kernel_arg_info_t.address_qualifier | |||
| CL_KERNEL_ARG_ACCESS_QUALIFIER | ✓ | kernel_arg_info_t::access_qualifier | kernel_arg_info_t.access_qualifier | |||
| CL_KERNEL_ARG_TYPE_NAME | ✓ | kernel_arg_info_t::type_name | kernel_arg_info_t.type_name | |||
| CL_KERNEL_ARG_TYPE_QUALIFIER | ✓ | kernel_arg_info_t::type_qualifier | kernel_arg_info_t.type_qualifier | |||
| CL_KERNEL_ARG_NAME | ✓ | kernel_arg_info_t::name | kernel_arg_info_t.name | |||
| cl_kernel_arg_address_qualifier | ✓ | kernel_arg_address_qualifier_t | kernel_arg_address_qualifier_t | |||
| CL_KERNEL_ARG_ADDRESS_GLOBAL | ✓ | kernel_arg_address_qualifier_t::global | kernel_arg_address_qualifier_t._global | |||
| CL_KERNEL_ARG_ADDRESS_LOCAL | ✓ | kernel_arg_address_qualifier_t::local | kernel_arg_address_qualifier_t.local | |||
| CL_KERNEL_ARG_ADDRESS_CONSTANT | ✓ | kernel_arg_address_qualifier_t::constant | kernel_arg_address_qualifier_t.constant | |||
| CL_KERNEL_ARG_ADDRESS_PRIVATE | ✓ | kernel_arg_address_qualifier_t::private_ | kernel_arg_address_qualifier_t.private_ | |||
| cl_kernel_arg_access_qualifier | ✓ | kernel_arg_access_qualifier_t | kernel_arg_access_qualifier_t | |||
| CL_KERNEL_ARG_ACCESS_READ_ONLY | ✓ | kernel_arg_access_qualifier_t::read_only | kernel_arg_access_qualifier_t.read_only | |||
| CL_KERNEL_ARG_ACCESS_WRITE_ONLY | ✓ | kernel_arg_access_qualifier_t::write_only | kernel_arg_access_qualifier_t.write_only | |||
| CL_KERNEL_ARG_ACCESS_READ_WRITE | ✓ | kernel_arg_access_qualifier_t::read_write | kernel_arg_access_qualifier_t.read_write | |||
| CL_KERNEL_ARG_ACCESS_NONE | ✓ | kernel_arg_access_qualifier_t::none | kernel_arg_access_qualifier_t.none | |||
| cl_kernel_arg_type_qualifier | ✓ | kernel_arg_type_qualifier_t | kernel_arg_type_qualifier_t | |||
| CL_KERNEL_ARG_TYPE_NONE | ✓ | kernel_arg_type_qualifier_t::none | kernel_arg_type_qualifier_t.none | |||
| CL_KERNEL_ARG_TYPE_CONST | ✓ | kernel_arg_type_qualifier_t::const_ | kernel_arg_type_qualifier_t.const_ | |||
| CL_KERNEL_ARG_TYPE_RESTRICT | ✓ | kernel_arg_type_qualifier_t::restrict_ | kernel_arg_type_qualifier_t.restrict_ | |||
| CL_KERNEL_ARG_TYPE_VOLATILE | ✓ | kernel_arg_type_qualifier_t::volatile_ | kernel_arg_type_qualifier_t.volatile_ | |||
| cl_kernel_work_group_info | ✓ | ✓ | ✓ | kernel_work_group_info_t | kernel_work_group_info_t | |
| CL_KERNEL_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | kernel_work_group_info_t::work_group_size | kernel_work_group_info_t.work_group_size | |
| CL_KERNEL_COMPILE_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | kernel_work_group_info_t::compile_work_group_size | kernel_work_group_info_t.compile_work_group_size | |
| CL_KERNEL_LOCAL_MEM_SIZE | ✓ | ✓ | ✓ | kernel_work_group_info_t::local_mem_size | kernel_work_group_info_t.local_mem_size | |
| CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE | ✓ | ✓ | kernel_work_group_info_t::preferred_work_group_size_multiple | kernel_work_group_info_t.preferred_work_group_size_multiple | ||
| CL_KERNEL_PRIVATE_MEM_SIZE | ✓ | ✓ | kernel_work_group_info_t::private_mem_size | kernel_work_group_info_t.private_mem_size | ||
| CL_KERNEL_GLOBAL_WORK_SIZE | ✓ | kernel_work_group_info_t::global_work_size | kernel_work_group_info_t.global_work_size | |||
| cl_event_info | ✓ | ✓ | ✓ | event_info_t | event_info_t | |
| CL_EVENT_COMMAND_QUEUE | ✓ | ✓ | ✓ | event_info_t::command_queue | event_info_t.command_queue | |
| CL_EVENT_COMMAND_TYPE | ✓ | ✓ | ✓ | event_info_t::command_type | event_info_t.command_type | |
| CL_EVENT_REFERENCE_COUNT | ✓ | ✓ | ✓ | event_info_t::reference_count | event_info_t.reference_count | |
| CL_EVENT_COMMAND_EXECUTION_STATUS | ✓ | ✓ | ✓ | event_info_t::command_execution_status | event_info_t.command_execution_status | |
| CL_EVENT_CONTEXT | ✓ | ✓ | event_info_t::context | event_info_t.context | ||
| cl_command_type | ✓ | ✓ | ✓ | command_type_t | command_type_t | |
| CL_COMMAND_NDRANGE_KERNEL | ✓ | ✓ | ✓ | command_type_t::ndrange_kernel | command_type_t.ndrange_kernel | |
| CL_COMMAND_TASK | ✓ | ✓ | ✓ | command_type_t::task | command_type_t.task | |
| CL_COMMAND_NATIVE_KERNEL | ✓ | ✓ | ✓ | command_type_t::native_kernel | command_type_t.native_kernel | |
| CL_COMMAND_READ_BUFFER | ✓ | ✓ | ✓ | command_type_t::read_buffer | command_type_t.read_buffer | |
| CL_COMMAND_WRITE_BUFFER | ✓ | ✓ | ✓ | command_type_t::write_buffer | command_type_t.write_buffer | |
| CL_COMMAND_COPY_BUFFER | ✓ | ✓ | ✓ | command_type_t::copy_buffer | command_type_t.copy_buffer | |
| CL_COMMAND_READ_IMAGE | ✓ | ✓ | ✓ | command_type_t::read_image | command_type_t.read_image | |
| CL_COMMAND_WRITE_IMAGE | ✓ | ✓ | ✓ | command_type_t::write_image | command_type_t.write_image | |
| CL_COMMAND_COPY_IMAGE | ✓ | ✓ | ✓ | command_type_t::copy_image | command_type_t.copy_image | |
| CL_COMMAND_COPY_IMAGE_TO_BUFFER | ✓ | ✓ | ✓ | command_type_t::copy_image_to_buffer | command_type_t.copy_image_to_buffer | |
| CL_COMMAND_COPY_BUFFER_TO_IMAGE | ✓ | ✓ | ✓ | command_type_t::copy_buffer_to_image | command_type_t.copy_buffer_to_image | |
| CL_COMMAND_MAP_BUFFER | ✓ | ✓ | ✓ | command_type_t::map_buffer | command_type_t.map_buffer | |
| CL_COMMAND_MAP_IMAGE | ✓ | ✓ | ✓ | command_type_t::map_image | command_type_t.map_image | |
| CL_COMMAND_UNMAP_MEM_OBJECT | ✓ | ✓ | ✓ | command_type_t::unmap_mem_object | command_type_t.unmap_mem_object | |
| CL_COMMAND_MARKER | ✓ | ✓ | ✓ | command_type_t::marker | command_type_t.marker | |
| CL_COMMAND_ACQUIRE_GL_OBJECTS | ✓ | ✓ | ✓ | command_type_t::acquire_gl_objects | command_type_t.acquire_gl_objects | |
| CL_COMMAND_RELEASE_GL_OBJECTS | ✓ | ✓ | ✓ | command_type_t::release_gl_objects | command_type_t.release_gl_objects | |
| CL_COMMAND_READ_BUFFER_RECT | ✓ | ✓ | command_type_t::read_buffer_rect | command_type_t.read_buffer_rect | ||
| CL_COMMAND_WRITE_BUFFER_RECT | ✓ | ✓ | command_type_t::write_buffer_rect | command_type_t.write_buffer_rect | ||
| CL_COMMAND_COPY_BUFFER_RECT | ✓ | ✓ | command_type_t::copy_buffer_rect | command_type_t.copy_buffer_rect | ||
| CL_COMMAND_USER | ✓ | ✓ | command_type_t::user | command_type_t.user | ||
| CL_COMMAND_BARRIER | ✓ | command_type_t::barrier | command_type_t.barrier | |||
| CL_COMMAND_MIGRATE_MEM_OBJECTS | ✓ | command_type_t::migrate_mem_objects | command_type_t.migrate_mem_objects | |||
| CL_COMMAND_FILL_BUFFER | ✓ | command_type_t::fill_buffer | command_type_t.fill_buffer | |||
| CL_COMMAND_FILL_IMAGE | ✓ | command_type_t::fill_image | command_type_t.fill_image | |||
| command execution status | ✓ | ✓ | ✓ | command_exec_status_t | command_exec_status_t | |
| CL_COMPLETE | ✓ | ✓ | ✓ | command_exec_status_t::complete | command_exec_status_t.complete | |
| CL_RUNNING | ✓ | ✓ | ✓ | command_exec_status_t::running | command_exec_status_t.running | |
| CL_SUBMITTED | ✓ | ✓ | ✓ | command_exec_status_t::submitted | command_exec_status_t.submitted | |
| CL_QUEUED | ✓ | ✓ | ✓ | command_exec_status_t::queued | command_exec_status_t.queued | |
| cl_buffer_create_type | ✓ | ✓ | buffer_create_type_t | buffer_create_type_t | ||
| CL_BUFFER_CREATE_TYPE_REGION | ✓ | ✓ | buffer_create_type_t::region | buffer_create_type_t.region | ||
| cl_profiling_info | ✓ | ✓ | ✓ | profiling_info_t | profiling_info_t | |
| CL_PROFILING_COMMAND_QUEUED | ✓ | ✓ | ✓ | profiling_info_t::queued | profiling_info_t.queued | |
| CL_PROFILING_COMMAND_SUBMIT | ✓ | ✓ | ✓ | profiling_info_t::submit | profiling_info_t.submit | |
| CL_PROFILING_COMMAND_START | ✓ | ✓ | ✓ | profiling_info_t::start | profiling_info_t.start | |
| CL_PROFILING_COMMAND_END | ✓ | ✓ | ✓ | profiling_info_t::end | profiling_info_t.end |
| No | TYPE | CONSTANT | C++ | PYTHON | TEST | DOC | DONE | ||
| 1 | Error Codes (cl_int) | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 2 | CL_SUCCESS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 3 | CL_DEVICE_NOT_FOUND | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 4 | CL_DEVICE_NOT_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 5 | CL_COMPILER_NOT_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 6 | CL_MEM_OBJECT_ALLOCATION_FAILURE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 7 | CL_OUT_OF_RESOURCES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 8 | CL_OUT_OF_HOST_MEMORY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 9 | CL_PROFILING_INFO_NOT_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 10 | CL_MEM_COPY_OVERLAP | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 11 | CL_IMAGE_FORMAT_MISMATCH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 12 | CL_IMAGE_FORMAT_NOT_SUPPORTED | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 13 | CL_BUILD_PROGRAM_FAILURE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 14 | CL_MAP_FAILURE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 15 | CL_MISALIGNED_SUB_BUFFER_OFFSET | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 16 | CL_EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 17 | CL_COMPILE_PROGRAM_FAILURE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 18 | CL_LINKER_NOT_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 19 | CL_LINK_PROGRAM_FAILURE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 20 | CL_DEVICE_PARTITION_FAILED | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 21 | CL_KERNEL_ARG_INFO_NOT_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 22 | CL_INVALID_VALUE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 23 | CL_INVALID_DEVICE_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 24 | CL_INVALID_PLATFORM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 25 | CL_INVALID_DEVICE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 26 | CL_INVALID_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 27 | CL_INVALID_QUEUE_PROPERTIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 28 | CL_INVALID_COMMAND_QUEUE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 29 | CL_INVALID_HOST_PTR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 30 | CL_INVALID_MEM_OBJECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 31 | CL_INVALID_IMAGE_FORMAT_DESCRIPTOR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 32 | CL_INVALID_IMAGE_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 33 | CL_INVALID_SAMPLER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 34 | CL_INVALID_BINARY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 35 | CL_INVALID_BUILD_OPTIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 36 | CL_INVALID_PROGRAM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 37 | CL_INVALID_PROGRAM_EXECUTABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 38 | CL_INVALID_KERNEL_NAME | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 39 | CL_INVALID_KERNEL_DEFINITION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 40 | CL_INVALID_KERNEL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 41 | CL_INVALID_ARG_INDEX | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 42 | CL_INVALID_ARG_VALUE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 43 | CL_INVALID_ARG_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 44 | CL_INVALID_KERNEL_ARGS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 45 | CL_INVALID_WORK_DIMENSION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 46 | CL_INVALID_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 47 | CL_INVALID_WORK_ITEM_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 48 | CL_INVALID_GLOBAL_OFFSET | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 49 | CL_INVALID_EVENT_WAIT_LIST | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 50 | CL_INVALID_EVENT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 51 | CL_INVALID_OPERATION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 52 | CL_INVALID_GL_OBJECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 53 | CL_INVALID_BUFFER_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 54 | CL_INVALID_MIP_LEVEL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 55 | CL_INVALID_GLOBAL_WORK_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 56 | CL_INVALID_PROPERTY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 57 | CL_INVALID_IMAGE_DESCRIPTOR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 58 | CL_INVALID_COMPILER_OPTIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 59 | CL_INVALID_LINKER_OPTIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 60 | CL_INVALID_DEVICE_PARTITION_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| OpenCL Version | |||||||||
| CL_VERSION_1_0 | |||||||||
| CL_VERSION_1_1 | |||||||||
| CL_VERSION_1_2 | |||||||||
| cl_bool | |||||||||
| CL_FALSE | |||||||||
| CL_TRUE | |||||||||
| CL_BLOCKING | |||||||||
| CL_NON_BLOCKING | |||||||||
| 61 | cl_platform_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 62 | CL_PLATFORM_PROFILE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 63 | CL_PLATFORM_VERSION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 64 | CL_PLATFORM_NAME | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 65 | CL_PLATFORM_VENDOR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 66 | CL_PLATFORM_EXTENSIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 67 | cl_device_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 68 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 69 | CL_DEVICE_TYPE_DEFAULT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 70 | CL_DEVICE_TYPE_CPU | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 71 | CL_DEVICE_TYPE_GPU | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 72 | CL_DEVICE_TYPE_ACCELERATOR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 73 | CL_DEVICE_TYPE_CUSTOM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 74 | CL_DEVICE_TYPE_ALL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 75 | cl_device_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 76 | CL_DEVICE_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 77 | CL_DEVICE_VENDOR_ID | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 78 | CL_DEVICE_MAX_COMPUTE_UNITS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 79 | CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 80 | CL_DEVICE_MAX_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 81 | CL_DEVICE_MAX_WORK_ITEM_SIZES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 82 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 83 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 84 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 85 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 86 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 87 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 88 | CL_DEVICE_MAX_CLOCK_FREQUENCY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 89 | CL_DEVICE_ADDRESS_BITS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 90 | CL_DEVICE_MAX_READ_IMAGE_ARGS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 91 | CL_DEVICE_MAX_WRITE_IMAGE_ARGS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 92 | CL_DEVICE_MAX_MEM_ALLOC_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 93 | CL_DEVICE_IMAGE2D_MAX_WIDTH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 94 | CL_DEVICE_IMAGE2D_MAX_HEIGHT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 95 | CL_DEVICE_IMAGE3D_MAX_WIDTH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 96 | CL_DEVICE_IMAGE3D_MAX_HEIGHT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 97 | CL_DEVICE_IMAGE3D_MAX_DEPTH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 98 | CL_DEVICE_IMAGE_SUPPORT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 99 | CL_DEVICE_MAX_PARAMETER_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 100 | CL_DEVICE_MAX_SAMPLERS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 101 | CL_DEVICE_MEM_BASE_ADDR_ALIGN | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 102 | CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 103 | CL_DEVICE_SINGLE_FP_CONFIG | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 104 | CL_DEVICE_GLOBAL_MEM_CACHE_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 105 | CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 106 | CL_DEVICE_GLOBAL_MEM_CACHE_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 107 | CL_DEVICE_GLOBAL_MEM_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 108 | CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 109 | CL_DEVICE_MAX_CONSTANT_ARGS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 110 | CL_DEVICE_LOCAL_MEM_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 111 | CL_DEVICE_LOCAL_MEM_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 112 | CL_DEVICE_ERROR_CORRECTION_SUPPORT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 113 | CL_DEVICE_PROFILING_TIMER_RESOLUTION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 114 | CL_DEVICE_ENDIAN_LITTLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 115 | CL_DEVICE_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 116 | CL_DEVICE_COMPILER_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 117 | CL_DEVICE_EXECUTION_CAPABILITIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 118 | CL_DEVICE_QUEUE_PROPERTIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 119 | CL_DEVICE_NAME | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 120 | CL_DEVICE_VENDOR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 121 | CL_DRIVER_VERSION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 122 | CL_DEVICE_PROFILE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 123 | CL_DEVICE_VERSION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 124 | CL_DEVICE_EXTENSIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 125 | CL_DEVICE_PLATFORM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 126 | CL_DEVICE_DOUBLE_FP_CONFIG | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 127 | CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 128 | CL_DEVICE_HOST_UNIFIED_MEMORY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 129 | CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 130 | CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 131 | CL_DEVICE_NATIVE_VECTOR_WIDTH_INT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 132 | CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 133 | CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 134 | CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 135 | CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 136 | CL_DEVICE_OPENCL_C_VERSION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 137 | CL_DEVICE_LINKER_AVAILABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 138 | CL_DEVICE_BUILT_IN_KERNELS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 139 | CL_DEVICE_IMAGE_MAX_BUFFER_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 140 | CL_DEVICE_IMAGE_MAX_ARRAY_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 141 | CL_DEVICE_PARENT_DEVICE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 142 | CL_DEVICE_PARTITION_MAX_SUB_DEVICES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 143 | CL_DEVICE_PARTITION_PROPERTIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 144 | CL_DEVICE_PARTITION_AFFINITY_DOMAIN | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 145 | CL_DEVICE_PARTITION_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 146 | CL_DEVICE_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 147 | CL_DEVICE_PREFERRED_INTEROP_USER_SYNC | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 148 | CL_DEVICE_PRINTF_BUFFER_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 149 | CL_DEVICE_IMAGE_PITCH_ALIGNMENT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 150 | CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 151 | cl_device_fp_config | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 152 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 153 | CL_FP_DENORM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 154 | CL_FP_INF_NAN | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 155 | CL_FP_ROUND_TO_NEAREST | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 156 | CL_FP_ROUND_TO_ZERO | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 157 | CL_FP_ROUND_TO_INF | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 158 | CL_FP_FMA | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 159 | CL_FP_SOFT_FLOAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 160 | CL_FP_CORRECTLY_ROUNDED_DIVIDE_SQRT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 161 | cl_device_mem_cache_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 162 | CL_NONE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 163 | CL_READ_ONLY_CACHE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 164 | CL_READ_WRITE_CACHE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 165 | cl_device_local_mem_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 166 | CL_LOCAL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 167 | CL_GLOBAL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 168 | cl_device_exec_capabilities | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 169 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 170 | CL_EXEC_KERNEL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 171 | CL_EXEC_NATIVE_KERNEL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 172 | cl_device_command_queue_properties | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 173 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 174 | CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 175 | CL_QUEUE_PROFILING_ENABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 176 | cl_context_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 177 | CL_CONTEXT_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 178 | CL_CONTEXT_DEVICES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 179 | CL_CONTEXT_PROPERTIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 180 | CL_CONTEXT_NUM_DEVICES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 181 | cl_context_properties | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 182 | CL_CONTEXT_PLATFORM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 183 | CL_CONTEXT_INTEROP_USER_SYNC | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 184 | cl_device_partition_property | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 185 | CL_DEVICE_PARTITION_EQUALLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 186 | CL_DEVICE_PARTITION_BY_COUNTS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 187 | CL_DEVICE_PARTITION_BY_COUNTS_LIST_END | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 188 | CL_DEVICE_PARTITION_BY_AFFINITY_DOMAIN | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 189 | cl_device_affinity_domain | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 190 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 191 | CL_DEVICE_AFFINITY_DOMAIN_NUMA | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 192 | CL_DEVICE_AFFINITY_DOMAIN_L4_CACHE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 193 | CL_DEVICE_AFFINITY_DOMAIN_L3_CACHE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 194 | CL_DEVICE_AFFINITY_DOMAIN_L2_CACHE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 195 | CL_DEVICE_AFFINITY_DOMAIN_L1_CACHE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 196 | CL_DEVICE_AFFINITY_DOMAIN_NEXT_PARTITIONABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 197 | cl_command_queue_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 198 | CL_QUEUE_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 199 | CL_QUEUE_DEVICE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 200 | CL_QUEUE_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 201 | CL_QUEUE_PROPERTIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 202 | cl_mem_flags | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 203 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 204 | CL_MEM_READ_WRITE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 205 | CL_MEM_WRITE_ONLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 206 | CL_MEM_READ_ONLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 207 | CL_MEM_USE_HOST_PTR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 208 | CL_MEM_ALLOC_HOST_PTR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 209 | CL_MEM_COPY_HOST_PTR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 210 | CL_MEM_HOST_WRITE_ONLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 211 | CL_MEM_HOST_READ_ONLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 212 | CL_MEM_HOST_NO_ACCESS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 213 | cl_mem_migration_flags | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 214 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 215 | CL_MIGRATE_MEM_OBJECT_HOST | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 216 | CL_MIGRATE_MEM_OBJECT_CONTENT_UNDEFINED | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 217 | cl_channel_order | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 218 | CL_R | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 219 | CL_A | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 220 | CL_RG | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 221 | CL_RA | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 222 | CL_RGB | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 223 | CL_RGBA | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 224 | CL_BGRA | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 225 | CL_ARGB | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 226 | CL_INTENSITY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 227 | CL_LUMINANCE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 228 | CL_Rx | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 229 | CL_RGx | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 230 | CL_RGBx | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 231 | CL_DEPTH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 232 | CL_DEPTH_STENCIL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 233 | cl_channel_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 234 | CL_SNORM_INT8 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 235 | CL_SNORM_INT16 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 236 | CL_UNORM_INT8 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 237 | CL_UNORM_INT16 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 238 | CL_UNORM_SHORT_565 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 239 | CL_UNORM_SHORT_555 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 240 | CL_UNORM_INT_101010 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 241 | CL_SIGNED_INT8 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 242 | CL_SIGNED_INT16 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 243 | CL_SIGNED_INT32 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 244 | CL_UNSIGNED_INT8 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 245 | CL_UNSIGNED_INT16 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 246 | CL_UNSIGNED_INT32 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 247 | CL_HALF_FLOAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 248 | CL_FLOAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 249 | CL_UNORM_INT24 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 250 | cl_mem_object_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 251 | CL_MEM_OBJECT_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 252 | CL_MEM_OBJECT_IMAGE2D | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 253 | CL_MEM_OBJECT_IMAGE3D | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 254 | CL_MEM_OBJECT_IMAGE2D_ARRAY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 255 | CL_MEM_OBJECT_IMAGE1D | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 256 | CL_MEM_OBJECT_IMAGE1D_ARRAY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 257 | CL_MEM_OBJECT_IMAGE1D_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 258 | cl_mem_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 259 | CL_MEM_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 260 | CL_MEM_FLAGS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 261 | CL_MEM_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 262 | CL_MEM_HOST_PTR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 263 | CL_MEM_MAP_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 264 | CL_MEM_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 265 | CL_MEM_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 266 | CL_MEM_ASSOCIATED_MEMOBJECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 267 | CL_MEM_OFFSET | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 268 | cl_image_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 269 | CL_IMAGE_FORMAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 270 | CL_IMAGE_ELEMENT_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 271 | CL_IMAGE_ROW_PITCH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 272 | CL_IMAGE_SLICE_PITCH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 273 | CL_IMAGE_WIDTH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 274 | CL_IMAGE_HEIGHT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 275 | CL_IMAGE_DEPTH | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 276 | CL_IMAGE_ARRAY_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 277 | CL_IMAGE_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 278 | CL_IMAGE_NUM_MIP_LEVELS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 279 | CL_IMAGE_NUM_SAMPLES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 280 | cl_addressing_mode | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 281 | CL_ADDRESS_NONE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 282 | CL_ADDRESS_CLAMP_TO_EDGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 283 | CL_ADDRESS_CLAMP | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 284 | CL_ADDRESS_REPEAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 285 | CL_ADDRESS_MIRRORED_REPEAT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 286 | cl_filter_mode | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 287 | CL_FILTER_NEAREST | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 288 | CL_FILTER_LINEAR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 289 | cl_sampler_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 290 | CL_SAMPLER_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 291 | CL_SAMPLER_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 292 | CL_SAMPLER_NORMALIZED_COORDS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 293 | CL_SAMPLER_ADDRESSING_MODE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 294 | CL_SAMPLER_FILTER_MODE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 295 | cl_map_flags | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 296 | 0 | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 297 | CL_MAP_READ | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 298 | CL_MAP_WRITE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 299 | CL_MAP_WRITE_INVALIDATE_REGION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 300 | cl_program_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 301 | CL_PROGRAM_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 302 | CL_PROGRAM_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 303 | CL_PROGRAM_NUM_DEVICES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 304 | CL_PROGRAM_DEVICES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 305 | CL_PROGRAM_SOURCE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 306 | CL_PROGRAM_BINARY_SIZES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 307 | CL_PROGRAM_BINARIES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 308 | CL_PROGRAM_NUM_KERNELS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 309 | CL_PROGRAM_KERNEL_NAMES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 310 | cl_program_build_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 311 | CL_PROGRAM_BUILD_STATUS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 312 | CL_PROGRAM_BUILD_OPTIONS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 313 | CL_PROGRAM_BUILD_LOG | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 314 | CL_PROGRAM_BINARY_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 315 | cl_program_binary_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 316 | CL_PROGRAM_BINARY_TYPE_NONE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 317 | CL_PROGRAM_BINARY_TYPE_COMPILED_OBJECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 318 | CL_PROGRAM_BINARY_TYPE_LIBRARY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 319 | CL_PROGRAM_BINARY_TYPE_EXECUTABLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 320 | cl_build_status | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 321 | CL_BUILD_SUCCESS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 322 | CL_BUILD_NONE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 323 | CL_BUILD_ERROR | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 324 | CL_BUILD_IN_PROGRESS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 325 | cl_kernel_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 326 | CL_KERNEL_FUNCTION_NAME | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 327 | CL_KERNEL_NUM_ARGS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 328 | CL_KERNEL_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 329 | CL_KERNEL_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 330 | CL_KERNEL_PROGRAM | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 331 | CL_KERNEL_ATTRIBUTES | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 332 | cl_kernel_arg_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 333 | CL_KERNEL_ARG_ADDRESS_QUALIFIER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 334 | CL_KERNEL_ARG_ACCESS_QUALIFIER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 335 | CL_KERNEL_ARG_TYPE_NAME | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 336 | CL_KERNEL_ARG_TYPE_QUALIFIER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 337 | CL_KERNEL_ARG_NAME | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 338 | cl_kernel_arg_address_qualifier | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 339 | CL_KERNEL_ARG_ADDRESS_GLOBAL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 340 | CL_KERNEL_ARG_ADDRESS_LOCAL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 341 | CL_KERNEL_ARG_ADDRESS_CONSTANT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 342 | CL_KERNEL_ARG_ADDRESS_PRIVATE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 343 | cl_kernel_arg_access_qualifier | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 344 | CL_KERNEL_ARG_ACCESS_READ_ONLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 345 | CL_KERNEL_ARG_ACCESS_WRITE_ONLY | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 346 | CL_KERNEL_ARG_ACCESS_READ_WRITE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 347 | CL_KERNEL_ARG_ACCESS_NONE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 348 | cl_kernel_arg_type_qualifier | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 349 | CL_KERNEL_ARG_TYPE_NONE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 350 | CL_KERNEL_ARG_TYPE_CONST | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 351 | CL_KERNEL_ARG_TYPE_RESTRICT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 352 | CL_KERNEL_ARG_TYPE_VOLATILE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 353 | cl_kernel_work_group_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 354 | CL_KERNEL_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 355 | CL_KERNEL_COMPILE_WORK_GROUP_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 356 | CL_KERNEL_LOCAL_MEM_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 357 | CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 358 | CL_KERNEL_PRIVATE_MEM_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 359 | CL_KERNEL_GLOBAL_WORK_SIZE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 360 | cl_event_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 361 | CL_EVENT_COMMAND_QUEUE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 362 | CL_EVENT_COMMAND_TYPE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 363 | CL_EVENT_REFERENCE_COUNT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 364 | CL_EVENT_COMMAND_EXECUTION_STATUS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 365 | CL_EVENT_CONTEXT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 366 | cl_command_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 367 | CL_COMMAND_NDRANGE_KERNEL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 368 | CL_COMMAND_TASK | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 369 | CL_COMMAND_NATIVE_KERNEL | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 370 | CL_COMMAND_READ_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 371 | CL_COMMAND_WRITE_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 372 | CL_COMMAND_COPY_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 373 | CL_COMMAND_READ_IMAGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 374 | CL_COMMAND_WRITE_IMAGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 375 | CL_COMMAND_COPY_IMAGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 376 | CL_COMMAND_COPY_IMAGE_TO_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 377 | CL_COMMAND_COPY_BUFFER_TO_IMAGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 378 | CL_COMMAND_MAP_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 379 | CL_COMMAND_MAP_IMAGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 380 | CL_COMMAND_UNMAP_MEM_OBJECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 381 | CL_COMMAND_MARKER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 382 | CL_COMMAND_ACQUIRE_GL_OBJECTS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 383 | CL_COMMAND_RELEASE_GL_OBJECTS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 384 | CL_COMMAND_READ_BUFFER_RECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 385 | CL_COMMAND_WRITE_BUFFER_RECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 386 | CL_COMMAND_COPY_BUFFER_RECT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 387 | CL_COMMAND_USER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 388 | CL_COMMAND_BARRIER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 389 | CL_COMMAND_MIGRATE_MEM_OBJECTS | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 390 | CL_COMMAND_FILL_BUFFER | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 391 | CL_COMMAND_FILL_IMAGE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 392 | command execution status | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 393 | CL_COMPLETE | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 394 | CL_RUNNING | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 395 | CL_SUBMITTED | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 396 | CL_QUEUED | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 397 | cl_buffer_create_type | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 398 | CL_BUFFER_CREATE_TYPE_REGION | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 399 | cl_profiling_info | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 400 | CL_PROFILING_COMMAND_QUEUED | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 401 | CL_PROFILING_COMMAND_SUBMIT | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 402 | CL_PROFILING_COMMAND_START | ✓ | ✓ | ✓ | ✓ | 4 | |||
| 403 | CL_PROFILING_COMMAND_END | ✓ | ✓ | ✓ | ✓ | 4 | |||
| Summary | |||||||||
| N | Done | Planned | % | ||||||
| 403 | 1612 | 1612 | 100.00% |


Where in the World?
Add a Destination:
Location
Landmarks
Time of Year
Tavel Companion
Additional Notes
Add Destination!
Destinations:
Location:
Landmarks:
Time of Year:
Travel Companion:
Notes:


Question
link
Given an array, generate a random permutation of array elements.
Solution
O(n) time complexity.
To shuffle an array a of n elements (indices 0..n-1):
for i from n − 1 downto 1 do
j ← random integer with 0 ≤ j ≤ i
exchange a[j] and a[i]
Note the RNG is having limit from 0 to i, and number i keeps decreasing.
Proof
This is called Fisher–Yates shuffle. Proof can be seen at question post:
The probability that ith element goes to second last position can be proved to be 1/n by dividing it in two cases.
Case 1: i = n-1 (index of last element):
The probability of last element going to second last position is = (probability that last element doesn’t stay at its original position) x (probability that the index picked in previous step is picked again so that the last element is swapped)
So the probability = ((n-1)/n) x (1/(n-1)) = 1/n
Case 2: 0 < i < n-1 (index of non-last):
The probability of ith element going to second position = (probability that ith element is not picked in previous iteration) x (probability that ith element is picked in this iteration)
So the probability = ((n-1)/n) x (1/(n-1)) = 1/n
We can easily generalize above proof for any other position.
Updated on Sep 10th, 2014: analysis of the approach. This question is on CC150v4 Q20.2.
Note that when we generate a new number between 0 and i, we swap it (with the last ‘alive’ number (ith number). After this, ith number is ‘dead’.
By doing it this way, we get a perfect shuffle! Idea is from cc150.
Updated again on Oct 2nd, 2014: I re-wrote the code for CC150v5 Q18.2. It’s very important to note that:
if (a == b) {
return;
}
When a == b, do not swap, otherwise the XOR swap method will product an zero!
Code
code form G4G, link
def sattoloCycle(items):
i = len(items)
while i > 1:
i = i - 1
j = randrange(i) # 0 <= j <= i-1
items[j], items[i] = items[i], items[j]
return
written by me
public static void shuffleArrayInteratively(int[] cards) {
for (int i = 0; i < cards.length; i++) {
// all nums to the left of (i) is 'dead', don't consider them
int choose = rand(i, cards.length - 1);
swap(cards, i, choose);
// now (i) is also 'dead'
}
}
private static int rand(int from, int to) {
int count = to - from + 1;
return from + (int) (Math.random() * count);
}
private static void swap(int[] nums, int a, int b) {
if (a == b) {
return;
}
nums[a] ^= nums[b];
nums[b] ^= nums[a];
nums[a] ^= nums[b];
}


We're the Eating Simulator Writing Club, the ESWC. Write your stories with a snap.
Our writning club editors:
Beginging:
Middle:
End


Upload a file
This page lets you upload a csv file containing the transactions.
Upload file
File
Field separator
File contains header
Submit


Perrin strode impatiently up and down the flowered carpets that floored the tent, shrugging with discomfort in the dark green silk coat he had seldom worn since Faile had had it made. She said the elaborate silver embroidery suited his shoulders, but the wide leather belt supporting his axe at his side, the one as plain as the other, only pointed up that he was a fool pretending to be more than he was.  Twice, he pulled a sheet of paper from his sleeve and unfolded it to study the sketched map of Maiden while he paced. That was the town where Faile was being held.
Jondyn and Get and Hu had caught up to the fleeing inhabitants of Maiden, but the only useful thing they had gotten was this map, and making anyone pause long enough to provide that had been a chore.  According to Jondyn, the thought that someone might force them to return and fight the Shaido had quickened their steps north toward Andor and safety. The map was a puzzle, with its maze of streets and the lady’s fortress and the great cistern in the northeast corner. It tantalized him with possibilities. But they were possibilities only if he found a solution to the greater puzzle that was not shown on the map, the huge mass of Shaido surrounding the walled town, not to mention four or five hundred Shaido Wise Ones who could channel. So the map went back into his sleeve, and he continued to pace.
The red-striped tent itself made him chafe as much as the map, and so did the furnishings, the gilt-edged chairs that folded for storage and the mosaic-topped table that did not, the stand-mirror and the mirrored washstand and even the brass-bound chests standing in a row along an outer wall. It was barely light outside, and all twelve of the lamps were lit, mirrors sparkling. The braziers that had held off the night’s freezing cold still contained a few embers. He had even had Faile’s two silk hangings, worked with lines of birds and flowers, brought out and hung from the roof poles. He had let Lamgwin trim his beard and shave his cheeks and neck; he had washed and donned clean clothes. He had had the tent set up as if Faile were going to return any moment from a ride. All so everyone would look at him and see a bloody lord, look at him and feel confident. And every bit of it reminded him that Faile was not out riding. Tugging off one of his gauntlets, he felt in his coat pocket and ran his fingers along the rawhide cord tucked in there. Thirty-two knots, now. He did not need reminding of that, but sometimes he lay awake a whole night in the bedding that did not have Faile in it, counting those knots. Somehow, they had become a connection to her. Anyway, wakefulness was better than nightmares.
 “Just watching you is exhausting me.”
He managed not to glare at her. In a dark blue silk riding dress, a wide golden necklace studded with firedrops tight around her neck and the narrow crown of Mayene holding a golden hawk in flight above her brows, the First of Mayene was seated atop her crimson cloak on one of the folding chairs with her hands folded around red gloves in her lap. She looked as composed as an Aes Sedai, and she smelled . . . patient. He did not understand why she had stopped smelling as if he were a fat lamb caught in brambles for her meal, but he almost felt grateful to her. It was good to have someone he could talk to about missing Faile. She listened, and smelled of sympathy.
“I want to be here if . . . when Gaul and the Maidens bring in some prisoners.” The slip made him grimace as much as the delay. It was as if he doubted. Sooner or later they would capture some of the Shaido, yet apparently that was no easy matter. Taking prisoners did no good unless they could be brought away, and the Shaido were only careless compared to other Aiel. Sulin had been patient, too, explaining it to him. It was getting so hard for him to be patient, though. “What’s keeping Arganda?” he growled.
 He looked as though he slept as little as Perrin. The short man wore his silvery breastplate, but no helmet. He had not shaved yet this morning, and graying stubble grizzled his chin. Dangling from one gauntleted hand, a fat leather purse clinked as he set it on the table alongside two already there. “From the Queen’s strongbox,” he said sourly. He had said little the last ten days that was not sour. “Enough to cover our share and more. I had to break open the lock and put three men to guard the chest. It’s a temptation to the best of them, with the lock broken.”
“Good, good,” Perrin said, trying not to sound too impatient. He did not care whether Arganda had to set a hundred men guarding his queen’s strongbox. His own purse was the smallest of the three, and he had gleaned every bit of gold or silver he could find to make it up. Slinging his cloak around his shoulders, he picked up the purses and brushed past the man out into the gray morning.
To his disgust, the camp had taken a more permanent air, though it was not by design, and there was nothing he could do about it. Many of the Two Rivers men slept under tents now, pale brown patched canvas rather than striped red like his, but big enough for eight or ten men each, with their ill-assorted polearms stacked at the front, and the others had turned their temporary brush shelters into sturdy little huts of woven evergreen branches. The tents and huts made at best meandering rows, not at all like the rigid lines seen among the Ghealdanin and Mayeners, yet it still looked a little like a village, with paths and lanes through the snow trampled down to bare, frozen earth. A neat stone fire-ring surrounded each of the cookfires, where clusters of men stood cloaked and hooded against the cold, waiting for their breakfast.
It was what was in those black iron cookpots that had Perrin moving this morning. With so many men hunting, game was growing thin on the ground, and everything else was running out. They were down to searching for squirrels’ hoards of acorns to grind for stretching the oatmeal, and this late in the winter, what they found were old and dried out at best. The sour mixture filled the belly after a fashion, but you had to be hungry to get it down. Most of the faces Perrin could see were watching the cookpots eagerly. The last of the carts were rattling though a gap made in the ring of sharpened stakes around the camp, the Cairhienin drivers swathed to their ears and hunched on their seats like dark sacks of wool. Everything the carts had held was stacked in the center of the camp. Empty, they lurched in the ruts left by the carts ahead, a single file disappearing into the surrounding forest.
Perrin’s appearance with Berelain and Arganda at his heels caused a stir, although not among the hungry Two Rivers men. Oh, a few made cautious nods in his direction—one or two fools gave rough bows!—but most still tried not to look at him when Berelain was in the vicinity. Idiots.  There were plenty of other people, though, gathered a little way from the red-striped tent, crowding into the lanes between the other tents. An unarmored Mayener soldier in a gray coat came running with Berelain’s white mare, bowing and bending to hold her stirrup. Annoura was already up on a sleek mare almost as dark as Berelain’s mount was pale. Thin beaded braids hanging down her chest from the cowl of her cloak, the Aes Sedai barely seemed to notice the woman she was supposed to advise. Back stiff, she peered fixedly toward the low Aiel tents, where nothing moved but the thin wavering lines of smoke rising from the smoke holes. One-eyed Gallenne, in his red helmet and breastplate and eyepatch, made up for the Taraboner sister’s inattention, though. As soon as Berelain appeared, he barked an order that stiffened fifty of the Winged Guards to statues, long, red-streamered steel-tipped lances upright at their sides, and when she mounted, Gallenne snapped another command that put them on their horses so smoothly they seemed to move as one.
Arganda directed a frown toward the Aiel tents, frowned at the Mayeners, then stalked over to where as many Ghealdanin lancers waited, in shining armor and conical green helmets, and spoke softly to the fellow who would be commanding them, a lean man named Kireyin who Perrin suspected was nobly born from the haughty gaze visible behind the face-bars of his silvered helmet. Arganda was short enough that Kireyin had to bend to listen to what he had to say, and the necessity frosted the taller man’s face even more. One of the men behind Kireyin was carrying a staff with a red banner bearing the three six-pointed Silver Stars of Ghealdan instead of a green-streamered lance, and one of the Winged Guards carried Mayene’s Golden Hawk on blue.
Aram was there, too, though off to one side and not ready to ride. Wrapped in his putrid green cloak, sword hilt rising behind his shoulder, he shared his jealous scowls between the Mayeners and the Ghealdanin. When he saw Perrin, the man’s scowl turned sullen, and he hurried off, blundering through the Two Rivers men waiting for their breakfast. He did not pause to offer apologies when he bumped someone. Aram had grown increasingly touchy, snapping and sneering at everyone but Perrin as the days passed and they sat and waited. Yesterday, he had almost come to blows with a pair of Ghealdanin over something none of them could quite recall once they were separated, except that Aram said the Ghealdanin had no respect and they said he had a bad mouth. That was why the former Tinker was staying behind this morning. Things were likely to be touchy enough in So Habor without Aram starting a fight when Perrin was not looking.
“Keep an eye on Aram,” he said quietly when Dannil brought up his bay. “And keep a close eye on Arganda,” he added, stuffing the purses into his saddlebags and buckling the flaps down tight. The weight of Berelain’s contribution balanced his and Arganda’s together very nicely. Well, she had cause to be generous. Her men were as hungry as anyone else.  Stayer frisked a little and tossed his head as Perrin took the reins, but the stallion settled quickly under a firm, gentle hand.
Dannil rubbed his tusk-like mustaches with a cold-reddened knuckle and eyed Arganda sideways, then exhaled heavily in a mist. “I’ll watch him, Lord Perrin,” he muttered, giving his cloak a hitch, “but no matter what you said about me being in charge, as soon as you’re out of sight, he won’t listen to a thing I say.”
Unfortunately, that was true. Perrin would rather have taken Arganda with him and left Gallenne here, but neither had been willing to accept that. The Ghealdanin did accept that men and horses would begin starving soon unless food and fodder were found somewhere, but he could not make himself spend a day farther from his queen than he already was. In some ways, he seemed even more frantic than Perrin, or maybe just more ready to give in to it. Left to himself, Arganda would have been edging a little nearer the Shaido every day until he was right under their noses.
“Do what you can to keep him from doing anything stupid, Dannil.” After a moment, he added, “As long as it doesn’t come to blows.” There was only so far he could expect Dannil to restrain the fellow, after all. There were three Ghealdanin for every Two Rivers man, and Faile would never be freed if it came to them killing each other. Perrin very nearly rested his head on Stayer’s flank. Light, but he was tired, and he could not see any peace ahead of him anywhere.
A slow clop of hooves announced the arrival of Masuri and Seonid, with their three Warders riding close behind wrapped in cloaks that made most of each man vanish, along with part of his horse. Both Aes Sedai wore shimmering silk, and a heavy gold necklace, layers of thick strands, showed under the edge of Masuri’s dark cloak.  Annoura relaxed, settling more easily in her saddle. Back among the Aiel tents, the Wise Ones stood in a line watching, six tall women with their heads wrapped in dark shawls. The people of So Habor might be about as welcoming to Aiel as the people of Maiden would have been, but Perrin had not been sure the Wise Ones would let either sister come alone. They had been the last reason for waiting. The sun was a red-gold rim on the treetops.
“The sooner there, the sooner back,” he said, climbing into the bay’s saddle. As he rode through the gap that had been made to let the carts out, Two Rivers men were already beginning to replace the missing stakes. No one lacked for wariness with Masema’s people nearby.
It was a hundred paces to the treeline, but his eye caught movement, someone on a horse slipping away into the deeper shadows beneath the towering trees. One of Masema’s watchers, no doubt, racing to tell the Prophet that Perrin and Berelain had left the camp. No matter how fast he rode, though, he could not be in time. If Masema wanted Berelain or Perrin dead, as seemed likely, he would have to wait on another opportunity.
Gallenne was not about to take any chances, though. No one had seen hide nor toenails of Santes or Gendar, Berelain’s two thief-catchers, since the day they failed to return from Masema’s camp, and to Gallenne that was as sure a message as their heads in a sack. He had his lancers spread in a sharp-eyed ring around Berelain before they reached the trees. And around Perrin, too, but that was only incidental. Given his wishes, Gallenne would have brought all nine hundred or so of his Winged Guards, or better yet, in his view, talked Berelain out of going. Perrin had tried that, as well, with no better luck. The woman had a way of listening, then doing exactly as she wished. Faile was like that, too. Sometimes a man just had to live with it. Most of the time, since there was nothing else to do.
The huge trees and stone outcrops sticking out of the snow broke up the formation, of course, but it was still a colorful sight even in the dim light of the forest, red streamers floating on light airs in slanted beams of sunlight, red-armored riders vanishing momentarily behind massive oaks and leatherleafs. The three Aes Sedai rode behind Perrin and Berelain, followed by their Warders, all watching the woods around them, and then the man with Berelain’s banner. Kireyin and the banner of Ghealdan came a little behind, his men dressed in neat, shining lines, or as near as they could manage. The forest’s openness was a deception, and ill suited to neat lines and bright banners, but add in embroidered silks and gems and a crown and Warders in those color-shifting cloaks, and it was a most impressive sight. Perrin could have laughed, though without much mirth.
Berelain seemed to sense his thoughts. “When you go to buy a sack of flour,” she said, “wear plain wool so the seller thinks you can’t afford to pay any more than you must. When you’re after flour by the wagonload, wear jewels so she thinks you can afford to come back for all she can lay hands on.”
Perrin snorted a laugh in spite of himself. It sounded very much like something Master Luhhan had told him, once, with a nudge in the ribs to say it was a joke and a look in his eye that said it was a little more.  He was very glad Berelain no longer smelled like a hunting wolf. At least that took one worry off his mind.
They soon caught up to the tail end of the carts, a line that was no longer moving by the time they reached the Traveling ground. Axework and sweat had removed the trees sheared off by gateways and made a little clearing, but it was crowded even before Gallenne spread his ring of lancers around it facing outward. Fager Neald was there already, a foppish Murandian with his mustache waxed to points, on a dapple gelding. His coat would do for anyone who had not seen an Asha’man before; the only other one he had was black as well, and at least he had no collar pins to mark him out. The snow was not deep, but the twenty Two Rivers men led by Wil al’Seen were on their horses, too, rather than standing and waiting for their feet to freeze in their boots. They looked a harder lot than the fellows who had left the Two Rivers with him, longbows slung across their backs, bristling quivers and swords of various descriptions at their belts. Perrin hoped he could send them home soon, or better, take them home.
Most were balancing a polearm over their saddles, but Tod al’Caar and Flann Barstere carried banners, Perrin’s own Red Wolfhead and the Red Eagle of Manetheren. Tod’s heavy jaw was set stubbornly, and Flann, a tall skinny fellow from up to Watch Hill, looked sullen. Likely he had not wanted the job. Maybe Tod had not, either. Wil gave Perrin one of those open, innocent looks that fooled so many girls back home—Wil liked too much embroidery on his coat at feastdays, and he purely loved riding ahead of those banners, probably in the hope some woman would think they were his—but Perrin let it pass. He had not expected the other three people in the clearing any more than he had the banners.
Holding his cloak around him as if the mild breeze were a gale, Balwer clumsily heeled his blunt-nosed roan forward to meet Perrin. Two of Faile’s hangers-on trailed after him with defiant expressions. Medore’s blue eyes looked odd in her dark Tairen face, but then, her coat, with its puffy green-striped sleeves, looked odd on her bosomy frame. The daughter of a High Lord, she was every inch a noblewoman, and men’s clothing just did not suit her. Latian, Cairhienin and pale in a coat almost as dark as Neald’s, though marked with four slashes of red and blue across the chest, was not much taller than she, and the way he sniffled with a cold and rubbed at his sharp nose made him look much less competent. Neither wore a sword, another surprise.
“My Lord; my Lady First,” Balwer said in that dry voice, ducking a bow in his saddle, a sparrow bobbing on a branch. His eyes flickered toward the Aes Sedai behind them, but that was the only sign he gave that he was aware of the sisters. “My Lord, I recalled that I have an acquaintance in this So Habor. A cutler who travels with his wares, but he may be at home, and I’ve not seen him in several years.” This was the first time he had ever mentioned having a friend anywhere, and a town buried in the north of Altara seemed a peculiar place for it, but Perrin nodded. He suspected there was more to this friend than Balwer was letting on. He was beginning to suspect there was more to Balwer than the man let on.
“And your companions, Master Balwer?” Berelain’s face stayed smooth inside her fur-lined cowl, but she smelled amused. She knew very well that Faile had used her young followers as spies and was sure that Perrin made the same use of them.
“They wanted an outing, my Lady First,” the bony little man replied blandly. “I will vouch for them, my Lord. They’ve promised to cause no trouble, and they may learn something.” He smelled amused, too—a musty smell, of course, coming from him—though with a touch of irritation. Balwer knew she knew, which did not please him, but she never made open reference to the fact, which did. There definitely was more to Balwer than he let on. The man must have his reasons for taking them along. He had managed to take up all of Faile’s young followers one way and another, and had them eavesdropping and watching among the Ghealdanin and the Mayeners and even the Aiel. According to him, what your friends said and did could be as interesting as what your enemies planned, and that was when you were sure they were your friends. Of course, Berelain knew that her people were being spied on. And Balwer knew she knew that, too. And she knew that he . . . It was all too sophisticated for a country blacksmith.
“We’re wasting time,” Perrin said. “Open the gateway, Neald.”
The Asha’man grinned at him and stroked his waxed mustaches—Neald grinned too much since the Shaido were found; maybe he was eager to come to grips with them—he grinned and gestured grandly with one hand. “As you command,” he said in a cheerful voice, and the familiar silvery slash of light appeared, widening into a hole in the air.
Without waiting for anyone else, Perrin rode through into a snow-covered field, surrounded by a low stone wall, in rolling country that seemed almost treeless compared with the forest he had left behind, just a few miles from So Habor unless Neald had made a substantial error. If he had, Perrin thought he might pull those fool mustaches right off the man’s face. How could the fellow be cheerful?
Soon, though, he was riding west beneath a gray cloudy sky, along a snowy road with the high-wheeled carts trundling along in a line after him and early-morning shadows stretching ahead. Stayer tugged at the reins, wanting to run, but Perrin held him to a steady walk, no faster than the carthorses could manage. Gallenne’s Mayeners had to cross fields beside the road to maintain their ring around him and Berelain, and that meant getting past the low walls of rough stone that divided field from field. Some had gates from one farmer’s property to the next, probably to allow sharing plow-teams, and others they jumped flamboyantly with the streamers on their lances flying, risking their animal’s legs and their necks. Perrin cared the less about their necks, in truth.
Wil and the two fools carrying the Wolfhead and the Red Eagle joined the Mayener bannerman behind the Aes Sedai and Warders, but the other Two Rivers men strung themselves out flanking the line of carts. There were far too many carts for fewer than twenty men to guard, yet the cart drivers would feel easier seeing them. Not that anyone expected brigands, or Shaido for that matter, but no one felt comfortable outside the protection of the camp. In any case, here they would be able to see any threat well before it reached them.
The low rolling hills did not really allow a very long view, but it was farm country, with sturdy thatch-roofed stone houses and barns scattered among the fields, and nothing of wildness about it anywhere. Even most of the small thickets clinging to the slopes were coppiced for firewood. But it struck Perrin suddenly that the snow on the road ahead of him was not fresh; yet the only tracks were those made by Gallenne’s foreriders. No one moved around any of those dark houses and barns; no smoke rose from any of the thick chimneys. The countryside seemed absolutely still and absolutely empty. The hair on the back of his neck stirred, trying to stand.
An exclamation from one of the Aes Sedai made him look over his shoulder, and he followed Masuri’s pointing finger north to a shape flying through the air. It might have been taken for a large bat at first glance, sweeping eastward on long ribbed wings, a strange bat with a long neck and a long thin tail trailing behind. Gallenne barked an oath and pressed his looking glass to his eye. Perrin could see it well enough unaided, and even make out the figure of a human being clinging to the creature’s back, riding it like a horse.
“Seanchan,” Berelain breathed, both her voice and the smell of her worried.
Perrin twisted in his saddle to watch the thing’s flight until the glare of the sunrise made him turn away. “Nothing to do with us,” he said. If Neald had made a mistake, he would strangle the man.


Core Plugins
An introduction to Tailwind's modular design and the related terminology.
Coming soon.
To Document:
Explain what we mean when we say "core plugin" everywhere else in the documentation


ibm
Businessmodel of IBM
Customer Segments
IBM serves two customer segments: large enterprises looking to invest in virtualization, cloud or other software or hardware solutions and services to streamline corporate operations and end-users interested in personal computers and mobile applications.
Value Propositions
IBM has always been characterized by a powerful drive for innovation and development and these continue to make the larger part of its value propositions. The company actively engages in research in the fields of nanotechnology and mainframe and personal computers with recent years seeing it slowly expand into digital data management, cloud services and virtualization.
It offers corporate clients high-value solutions based on its working model of integrating technology and business model innovation to deliver scalable solutions. IBM also provides IT consulting and implementation services for the design, setup, management and maintenance of cross-industry and industry-specific processes.
Channels
After consolidating its channel sales and marketing groups for all business units IBM has announced a single channel team to better support its business partner network.
The One Channel Team improves communication with clients who are now given a single point of contact within the global giant. A single interface platform with increased functionality is also available through the company’s web portal.
Customer Relationship
IBM customer relationships are primarily self-service, although as a hardware and software developer there is a midmarket channel as well as one for larger enterprises.
They have a designated Marketplace on their official web page, which is easy to navigate and can be used by both individuals and businesses to select the products and services that meet their needs and requirements.
Key Activities
IBM focuses on the development and distribution of hardware, software, business consulting and IT services at enterprise-level.
In recent years it has shifted its focus towards capitalizing on business intelligence, data analytics, business continuity, security, cloud computing, virtualization and green solutions as well as semiconductor manufacturing.
Key Partners
In recent years IBM has struck a number of high-profile partnerships with other global companies, such as Apple Inc. in mobile enterprise and Twitter for the integration of social media data and cloud-based analytics.
The company has been involved in a lot of mergers and acquisitions, actively reshaping and changing the structure of its divisions through the formation of new units to position itself better within a global context.
Key Resources
IBM operates numerous research laboratories worldwide that are all bundled under IBM Research.
Major campus installations, science centres and a Linux Technology Centre make the spine of the company’s development core with a collective working force of 435,000 employees worldwide, making it the second largest US firm in terms of workforce.
Cost Structure
IBM continuously directs investments into its growth initiatives in order to improve cost structure. Its main goal is to focus on more profitable services and phase out products and services that are no longer generating public interest. This has allowed the company to continue to operate profitably despite seeing a decline in revenues in recent years. It currently combines an increase in investments in cloud and analytics with leveraging lower-cost talent.
IBM’s cost structure is very much driven by investing into its people and customer acquisition.
Additionally, the shift towards service and app development has resulted in increasingly lower qualified service employees that are cheaper to retain than skilled resources.
Revenue Streams
Despite a thirteenth straight decline in sales, IBM continues to invest in cloud technology and data analytics as strategic imperatives. The company’s software business is responsible for a big part of the drop in sales while the aforementioned categories contributed $25 billion and represented 27% of IBM’s total revenue in 2014 alone. IBM investors are reassured with focus on new growth areas will offset consulting business losses.
Under Rometty’s leadership IBM has shifted focus towards its membership-based cloud and data services, which it markets through its web platform. With over 1,500 clients that consist of small and medium-sized businesses worldwide – a significant portion of the company’s earnings are contributed to service and maintenance fees. IBM’s service packages are currently sold in an annual subscription format.


Paste the following code into the <head>
section of your site's HTML.
using the font icon (to Font Awesome use) to icon and closeIcon, you can add an icon.
Font Awesome gives you scalable vector icons that can instantly be customized — size, color, drop shadow, and anything that can be done with the power of CSS.