# OpenCL Runtime

## Version Queries

`pyopencl.``VERSION`

  Gives the numeric version of PyOpenCL as a variable-length tuple of integers. Enables easy version checks such as VERSION >= (0, 93).

`pyopencl.``VERSION_STATUS`

  A text string such as “rc4” or “beta” qualifying the status of the release.

`pyopencl.``VERSION_TEXT`

  The full release name (such as “0.93rc4”) in string form.

`pyopencl.``get_cl_header_version`()

  Return a variable-length tuple of integers representing the version of the OpenCL header against which PyOpenCL was compiled.

  New in version 0.92.

## Error Reporting

class `pyopencl.``Error`

  Base class for all PyOpenCL exceptions.

class `pyopencl.``MemoryError`

class `pyopencl.``LogicError`

class `pyopencl.``RuntimeError`

## Constants

class `pyopencl.``addressing_mode`
  `CLAMP`
  `CLAMP_TO_EDGE`
  `MIRRORED_REPEAT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NONE`
  `REPEAT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``affinity_domain_ext`
  `L1_CACHE`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `L2_CACHE`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `L3_CACHE`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `L4_CACHE`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `NEXT_FISSIONABLE`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `NUMA`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``channel_order`
  `A`
  `BGRA`
  `INTENSITY`
  `LUMINANCE`
  `R`
  `RA`
  `RG`
  `RGB`
  `RGBA`
  `RGBx`

    Available with OpenCL 1.1.

    New in version 0.92.

  `RGx`

    Available with OpenCL 1.1.

    New in version 0.92.

  `Rx`

    Available with OpenCL 1.1.

    New in version 0.92.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``channel_type`
  `FLOAT`
  `HALF_FLOAT`
  `SIGNED_INT16`
  `SIGNED_INT32`
  `SIGNED_INT8`
  `SNORM_INT16`
  `SNORM_INT8`
  `UNORM_INT16`
  `UNORM_INT8`
  `UNORM_INT_101010`
  `UNORM_SHORT_555`
  `UNORM_SHORT_565`
  `UNSIGNED_INT16`
  `UNSIGNED_INT32`
  `UNSIGNED_INT8`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``command_execution_status`
  `COMPLETE`
  `QUEUED`
  `RUNNING`
  `SUBMITTED`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``command_queue_info`
  `CONTEXT`
  `DEVICE`
  `PROPERTIES`
  `REFERENCE_COUNT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``command_queue_properties`
  `OUT_OF_ORDER_EXEC_MODE_ENABLE`
  `PROFILING_ENABLE`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``command_type`
  `ACQUIRE_GL_OBJECTS`
  `BARRIER`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `COPY_BUFFER`
  `COPY_BUFFER_RECT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `COPY_BUFFER_TO_IMAGE`
  `COPY_IMAGE`
  `COPY_IMAGE_TO_BUFFER`
  `FILL_BUFFER`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `FILL_IMAGE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `MAP_BUFFER`
  `MAP_IMAGE`
  `MARKER`
  `MIGRATE_MEM_OBJECTS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NATIVE_KERNEL`
  `NDRANGE_KERNEL`
  `READ_BUFFER`
  `READ_BUFFER_RECT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `READ_IMAGE`
  `RELEASE_GL_OBJECTS`
  `TASK`
  `UNMAP_MEM_OBJECT`
  `USER`

    Available with OpenCL 1.1.

    New in version 0.92.

  `WRITE_BUFFER`
  `WRITE_BUFFER_RECT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `WRITE_IMAGE`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``context_info`
  `DEVICES`
  `INTEROP_USER_SYNC`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NUM_DEVICES`

    Available with OpenCL 1.1.

    New in version 0.92.

  `PROPERTIES`
  `REFERENCE_COUNT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``context_properties`
  `CGL_SHAREGROUP_KHR`

    Available with the `cl_khr_gl_sharing` extension.

    New in version 0.92.

  `EGL_DISPLAY_KHR`

    Available with the `cl_khr_gl_sharing` extension.

    New in version 0.92.

  `GLX_DISPLAY_KHR`

    Available with the `cl_khr_gl_sharing` extension.

    New in version 0.92.

  `GL_CONTEXT_KHR`

    Available with the `cl_khr_gl_sharing` extension.

    New in version 0.92.

  `OFFLINE_DEVICES_AMD`

    Available with the `cl_amd_offline_devices` extension.

    New in version 2011.1.

  `PLATFORM`
  `WGL_HDC_KHR`

    Available with the `cl_khr_gl_sharing` extension.

    New in version 0.92.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_affinity_domain`
  `L1_CACHE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `L2_CACHE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `L3_CACHE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `L4_CACHE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NEXT_PARTITIONABLE`
  `NUMA`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_exec_capabilities`
  `KERNEL`
  `NATIVE_KERNEL`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_fp_config`
  `CORRECTLY_ROUNDED_DIVIDE_SQRT`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `DENORM`
  `FMA`
  `INF_NAN`
  `ROUND_TO_INF`
  `ROUND_TO_NEAREST`
  `ROUND_TO_ZERO`
  `SOFT_FLOAT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_info`
  `ADDRESS_BITS`
  `AFFINITY_DOMAINS_EXT`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `AVAILABLE`
  `BOARD_NAME_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `BUILT_IN_KERNELS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `COMPILER_AVAILABLE`
  `COMPUTE_CAPABILITY_MAJOR_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `COMPUTE_CAPABILITY_MINOR_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `DOUBLE_FP_CONFIG`

    Available with the `cl_khr_fp64` extension.

    New in version 2011.1.

  `DRIVER_VERSION`
  `ENDIAN_LITTLE`
  `ERROR_CORRECTION_SUPPORT`
  `EXECUTION_CAPABILITIES`
  `EXTENSIONS`
  `GLOBAL_FREE_MEMORY_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `GLOBAL_MEM_CACHELINE_SIZE`
  `GLOBAL_MEM_CACHE_SIZE`
  `GLOBAL_MEM_CACHE_TYPE`
  `GLOBAL_MEM_CHANNELS_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `GLOBAL_MEM_CHANNEL_BANKS_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `GLOBAL_MEM_CHANNEL_BANK_WIDTH_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `GLOBAL_MEM_SIZE`
  `GPU_OVERLAP_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `HALF_FP_CONFIG`

    Available with the `cl_khr_fp16` extension.

    New in version 2011.1.

  `HOST_UNIFIED_MEMORY`

    Available with OpenCL 1.1.

    New in version 0.92.

  `IMAGE2D_MAX_HEIGHT`
  `IMAGE2D_MAX_WIDTH`
  `IMAGE3D_MAX_DEPTH`
  `IMAGE3D_MAX_HEIGHT`
  `IMAGE3D_MAX_WIDTH`
  `IMAGE_MAX_ARRAY_SIZE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `IMAGE_MAX_BUFFER_SIZE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `IMAGE_SUPPORT`
  `INTEGRATED_MEMORY_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `KERNEL_EXEC_TIMEOUT_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `LINKER_AVAILABLE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LOCAL_MEM_BANKS_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `LOCAL_MEM_SIZE`
  `LOCAL_MEM_SIZE_PER_COMPUTE_UNIT_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `LOCAL_MEM_TYPE`
  `MAX_ATOMIC_COUNTERS_EXT`

    Available with the `cl_ext_atomic_counters_64` extension.

    New in version 2013.2.

  `MAX_CLOCK_FREQUENCY`
  `MAX_COMPUTE_UNITS`
  `MAX_CONSTANT_ARGS`
  `MAX_CONSTANT_BUFFER_SIZE`
  `MAX_MEM_ALLOC_SIZE`
  `MAX_PARAMETER_SIZE`
  `MAX_READ_IMAGE_ARGS`
  `MAX_SAMPLERS`
  `MAX_WORK_GROUP_SIZE`
  `MAX_WORK_ITEM_DIMENSIONS`
  `MAX_WORK_ITEM_SIZES`
  `MAX_WRITE_IMAGE_ARGS`
  `MEM_BASE_ADDR_ALIGN`
  `MIN_DATA_TYPE_ALIGN_SIZE`
  `NAME`
  `NATIVE_VECTOR_WIDTH_CHAR`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NATIVE_VECTOR_WIDTH_DOUBLE`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NATIVE_VECTOR_WIDTH_FLOAT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NATIVE_VECTOR_WIDTH_HALF`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NATIVE_VECTOR_WIDTH_INT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NATIVE_VECTOR_WIDTH_LONG`

    Available with OpenCL 1.1.

    New in version 0.92.

  `NATIVE_VECTOR_WIDTH_SHORT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `OPENCL_C_VERSION`

    Available with OpenCL 1.1.

    New in version 0.92.

  `PARENT_DEVICE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PARENT_DEVICE_EXT`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `PARTITION_AFFINITY_DOMAIN`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PARTITION_MAX_SUB_DEVICES`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PARTITION_PROPERTIES`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PARTITION_STYLE_EXT`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `PARTITION_TYPE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PARTITION_TYPES_EXT`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `PLATFORM`
  `PREFERRED_INTEROP_USER_SYNC`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PREFERRED_VECTOR_WIDTH_CHAR`
  `PREFERRED_VECTOR_WIDTH_DOUBLE`
  `PREFERRED_VECTOR_WIDTH_FLOAT`
  `PREFERRED_VECTOR_WIDTH_HALF`

    Available with OpenCL 1.1.

    New in version 0.92.

  `PREFERRED_VECTOR_WIDTH_INT`
  `PREFERRED_VECTOR_WIDTH_LONG`
  `PREFERRED_VECTOR_WIDTH_SHORT`
  `PRINTF_BUFFER_SIZE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PROFILE`
  `PROFILING_TIMER_OFFSET_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `PROFILING_TIMER_RESOLUTION`
  `QUEUE_PROPERTIES`
  `REFERENCE_COUNT`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `REFERENCE_COUNT_EXT`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `REGISTERS_PER_BLOCK_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `SIMD_INSTRUCTION_WIDTH_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `SIMD_PER_COMPUTE_UNIT_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `SIMD_WIDTH_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `SINGLE_FP_CONFIG`
  `TOPOLOGY_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `TYPE`
  `VENDOR`
  `VENDOR_ID`
  `VERSION`
  `WARP_SIZE_NV`

    Available with the `cl_nv_device_attribute_query` extension.

    New in version 0.92.

  `WAVEFRONT_WIDTH_AMD`

    Available with the `cl_amd_device_attribute_query` extension.

    New in version 2013.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_local_mem_type`
  `GLOBAL`
  `LOCAL`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_mem_cache_type`
  `NONE`
  `READ_ONLY_CACHE`
  `READ_WRITE_CACHE`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_partition_property`
  `BY_AFFINITY_DOMAIN`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `BY_COUNTS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `BY_COUNTS_LIST_END`
  `EQUALLY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_partition_property_ext`
  `BY_AFFINITY_DOMAIN`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `BY_COUNTS`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `BY_NAMES`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `EQUALLY`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `PARTITION_BY_COUNTS_LIST_END`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `PARTITION_BY_NAMES_LIST_END`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `PROPERTIES_LIST_END`

    Available with the `cl_ext_device_fission` extension.

    New in version 2011.1.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``device_type`
  `ACCELERATOR`
  `ALL`
  `CPU`
  `CUSTOM`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `DEFAULT`
  `GPU`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``event_info`
  `COMMAND_EXECUTION_STATUS`
  `COMMAND_QUEUE`
  `COMMAND_TYPE`
  `CONTEXT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `REFERENCE_COUNT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``filter_mode`
  `LINEAR`
  `NEAREST`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``gl_context_info`

  Only available when PyOpenCL is compiled with GL support. See `have_gl()`.

  `CURRENT_DEVICE_FOR_GL_CONTEXT_KHR`
  `DEVICES_FOR_GL_CONTEXT_KHR`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``gl_object_type`

  Only available when PyOpenCL is compiled with GL support. See `have_gl()`.

  `BUFFER`
  `RENDERBUFFER`
  `TEXTURE2D`
  `TEXTURE3D`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``gl_texture_info`

  Only available when PyOpenCL is compiled with GL support. See `have_gl()`.

  `MIPMAP_LEVEL`
  `TEXTURE_TARGET`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``image_info`
  `ARRAY_SIZE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `BUFFER`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `DEPTH`
  `ELEMENT_SIZE`
  `FORMAT`
  `HEIGHT`
  `NUM_MIP_LEVELS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NUM_SAMPLES`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `ROW_PITCH`
  `SLICE_PITCH`
  `WIDTH`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``kernel_arg_access_qualifier`
  `NONE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `READ_ONLY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `READ_WRITE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `WRITE_ONLY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``kernel_arg_address_qualifier`
  `CONSTANT`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `GLOBAL`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LOCAL`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `PRIVATE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``kernel_arg_info`
  `ACCESS_QUALIFIER`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `ADDRESS_QUALIFIER`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NAME`
  `TYPE_NAME`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``kernel_info`
  `ATTRIBUTES`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `CONTEXT`
  `FUNCTION_NAME`
  `NUM_ARGS`
  `PROGRAM`
  `REFERENCE_COUNT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``kernel_work_group_info`
  `COMPILE_WORK_GROUP_SIZE`
  `GLOBAL_WORK_SIZE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LOCAL_MEM_SIZE`
  `PREFERRED_WORK_GROUP_SIZE_MULTIPLE`

    Available with OpenCL 1.1.

    New in version 0.92.

  `PRIVATE_MEM_SIZE`

    Available with OpenCL 1.1.

    New in version 0.92.

  `WORK_GROUP_SIZE`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``map_flags`
  `READ`
  `WRITE`
  `WRITE_INVALIDATE_REGION`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``mem_flags`
  `ALLOC_HOST_PTR`
  `COPY_HOST_PTR`
  `HOST_NO_ACCESS`
  `HOST_READ_ONLY`
  `HOST_WRITE_ONLY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `READ_ONLY`
  `READ_WRITE`
  `USE_HOST_PTR`
  `USE_PERSISTENT_MEM_AMD`

    Available with the `cl_amd_device_memory_flags` extension.

    New in version 2011.1.

  `WRITE_ONLY`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``mem_info`
  `ASSOCIATED_MEMOBJECT`

    Available with OpenCL 1.1.

    New in version 0.92.

  `CONTEXT`
  `FLAGS`
  `HOST_PTR`
  `MAP_COUNT`
  `OFFSET`

    Available with OpenCL 1.1.

    New in version 0.92.

  `REFERENCE_COUNT`
  `SIZE`
  `TYPE`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``mem_migration_flags`
  `CONTENT_UNDEFINED`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `HOST`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``mem_object_type`
  `BUFFER`
  `IMAGE1D`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `IMAGE1D_ARRAY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `IMAGE1D_BUFFER`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `IMAGE2D`
  `IMAGE2D_ARRAY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `IMAGE3D`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``migrate_mem_object_flags_ext`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``platform_info`
  `EXTENSIONS`
  `NAME`
  `PROFILE`
  `VENDOR`
  `VERSION`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``profiling_info`
  `END`
  `QUEUED`
  `START`
  `SUBMIT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``program_binary_type`
  `COMPILED_OBJECT`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `EXECUTABLE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LIBRARY`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NONE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``program_build_info`
  `BINARY_TYPE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LOG`
  `OPTIONS`
  `STATUS`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``program_info`
  `BINARIES`
  `BINARY_SIZES`
  `CONTEXT`
  `DEVICES`
  `KERNEL_NAMES`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `NUM_DEVICES`
  `NUM_KERNELS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `REFERENCE_COUNT`
  `SOURCE`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``program_kind`
  `BINARY`
  `SOURCE`
  `UNKNOWN`
  `bit_length`
  `conjugate`
  `denominator`
  `imag`
  `name`
  `numerator`
  `real`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``sampler_info`
  `ADDRESSING_MODE`
  `CONTEXT`
  `FILTER_MODE`
  `NORMALIZED_COORDS`
  `REFERENCE_COUNT`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

class `pyopencl.``status_code`
  `BUILD_PROGRAM_FAILURE`
  `COMPILER_NOT_AVAILABLE`
  `COMPILE_PROGRAM_FAILURE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `DEVICE_NOT_AVAILABLE`
  `DEVICE_NOT_FOUND`
  `DEVICE_PARTITION_FAILED`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `DEVICE_PARTITION_FAILED_EXT`
  `EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST`

    Available with OpenCL 1.1.

    New in version 0.92.

  `IMAGE_FORMAT_MISMATCH`
  `IMAGE_FORMAT_NOT_SUPPORTED`
  `INVALID_ARG_INDEX`
  `INVALID_ARG_SIZE`
  `INVALID_ARG_VALUE`
  `INVALID_BINARY`
  `INVALID_BUFFER_SIZE`
  `INVALID_BUILD_OPTIONS`
  `INVALID_COMMAND_QUEUE`
  `INVALID_COMPILER_OPTIONS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `INVALID_CONTEXT`
  `INVALID_DEVICE`
  `INVALID_DEVICE_PARTITION_COUNT`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `INVALID_DEVICE_TYPE`
  `INVALID_EVENT`
  `INVALID_EVENT_WAIT_LIST`
  `INVALID_GLOBAL_OFFSET`
  `INVALID_GLOBAL_WORK_SIZE`

    Available with OpenCL 1.1.

    New in version 0.92.

  `INVALID_GL_OBJECT`
  `INVALID_GL_SHAREGROUP_REFERENCE_KHR`

    Available with the `cl_khr_gl_sharing` extension.

    New in version 0.92.

  `INVALID_HOST_PTR`
  `INVALID_IMAGE_DESCRIPTOR`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `INVALID_IMAGE_FORMAT_DESCRIPTOR`
  `INVALID_IMAGE_SIZE`
  `INVALID_KERNEL`
  `INVALID_KERNEL_ARGS`
  `INVALID_KERNEL_DEFINITION`
  `INVALID_KERNEL_NAME`
  `INVALID_LINKER_OPTIONS`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `INVALID_MEM_OBJECT`
  `INVALID_MIP_LEVEL`
  `INVALID_OPERATION`
  `INVALID_PARTITION_COUNT_EXT`
  `INVALID_PARTITION_NAME_EXT`
  `INVALID_PLATFORM`
  `INVALID_PROGRAM`
  `INVALID_PROGRAM_EXECUTABLE`
  `INVALID_QUEUE_PROPERTIES`
  `INVALID_SAMPLER`
  `INVALID_VALUE`
  `INVALID_WORK_DIMENSION`
  `INVALID_WORK_GROUP_SIZE`
  `INVALID_WORK_ITEM_SIZE`
  `KERNEL_ARG_INFO_NOT_AVAILABLE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LINKER_NOT_AVAILABLE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `LINK_PROGRAM_FAILURE`

    Available with OpenCL 1.2.

    New in version 2011.2.

  `MAP_FAILURE`
  `MEM_COPY_OVERLAP`
  `MEM_OBJECT_ALLOCATION_FAILURE`
  `MISALIGNED_SUB_BUFFER_OFFSET`

    Available with OpenCL 1.1.

    New in version 0.92.

  `OUT_OF_HOST_MEMORY`
  `OUT_OF_RESOURCES`
  `PLATFORM_NOT_FOUND_KHR`

    Available with the `cl_khr_icd` extension.

    New in version 2011.1.

  `PROFILING_INFO_NOT_AVAILABLE`
  `SUCCESS`
  `to_string`(value)

    Returns a `str` representing value.

    New in version 0.91.

## Platforms, Devices and Contexts

`pyopencl.``get_platforms`()

  Return a list of `Platform` instances.

class `pyopencl.``Platform`
  `info`

    Lower case versions of the `platform_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `platform_info` for values of param.

  `get_devices`(device_type=device_type.ALL)

    Return a list of devices matching device_type. See `device_type` for values of device_type.

    Changed in version 2013.2: This used to raise an exception if no matching devices were found. Now, it will simply return an empty list.

  static `from_int_ptr`((int)int_ptr_value) → Platform :

    (static method) Return a new Python object referencing the C-level `cl_platform_id` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_platform_id`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

class `pyopencl.``Device`
  `info`

    Lower case versions of the `device_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `device_info` for values of param.

  static `from_int_ptr`((int)int_ptr_value) → Device :

    (static method) Return a new Python object referencing the C-level `cl_device_id` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_device_id`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Two instances of this class may be compared using ==” and ”!=”.

class `pyopencl.``Context`(devices=None, properties=None, dev_type=None)

  Create a new context. properties is a list of key-value tuples, where each key must be one of `context_properties`. At most one of devices and dev_type may be not None, where devices is a list of `Device` instances, and dev_type is one of the `device_type` constants. If neither is specified, a context with a dev_type of `device_type.DEFAULT` is created.

  Note

  Calling the constructor with no arguments will fail for recent CL drivers that support the OpenCL ICD. If you want similar, just-give-me-a-context-already behavior, we recommend `create_some_context()`. See, e.g. this explanation by AMD.

  Note

  For `context_properties.CL_GL_CONTEXT_KHR`, `context_properties.CL_EGL_DISPLAY_KHR`, `context_properties.CL_GLX_DISPLAY_KHR`, `context_properties.CL_WGL_HDC_KHR`, and `context_properties.CL_CGL_SHAREGROUP_KHR` `context_properties.CL_CGL_SHAREGROUP_APPLE` the value in the key-value pair is a PyOpenGL context or display instance.

  Changed in version 0.91.2: Constructor arguments dev_type added.

  `info`

    Lower case versions of the `context_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `context_info` for values of param.

  `create_sub_devices`(properties)

    properties is an array of one (or more) of the forms:

        [ dpp.EQUALLY, 8]
        [ dpp.BY_COUNTS, 5, 7, 9, dpp.PARTITION_BY_COUNTS_LIST_END]
        [ dpp.BY_NAMES, 5, 7, 9, dpp.PARTITION_BY_NAMES_LIST_END]
        [ dpp.BY_AFFINITY_DOMAIN, dad.L1_CACHE]

    where dpp represents `device_partition_property` and dad represent `device_affinity_domain`.

    PROPERTIES_LIST_END_EXT is added automatically.

    Only available with CL 1.2.

    New in version 2011.2.

  `create_sub_devices_ext`(properties)

    properties is an array of one (or more) of the forms:

        [ dppe.EQUALLY, 8]
        [ dppe.BY_COUNTS, 5, 7, 9, dppe.PARTITION_BY_COUNTS_LIST_END]
        [ dppe.BY_NAMES, 5, 7, 9, dppe.PARTITION_BY_NAMES_LIST_END]
        [ dppe.BY_AFFINITY_DOMAIN, ad.L1_CACHE]

    where dppe represents `device_partition_property_ext` and ad represent `affinity_domain_ext`.

    PROPERTIES_LIST_END_EXT is added automatically.

    Only available with the cl_ext_device_fission extension.

    New in version 2011.1.

  static `from_int_ptr`((int)int_ptr_value) → Context :

    (static method) Return a new Python object referencing the C-level `cl_context` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_context`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

`pyopencl.``create_some_context`(interactive=True)

  Create a `Context` ‘somehow’.

  If multiple choices for platform and/or device exist, interactive is True, and sys.stdin.isatty() is also True, then the user is queried about which device should be chosen. Otherwise, a device is chosen in an implementation-defined manner.

## Command Queues and Events

class `pyopencl.``CommandQueue`(context, device=None, properties=None)

  Create a new command queue. properties is a bit field consisting of `command_queue_properties` values.

  if device is None, one of the devices in context is chosen in an implementation-defined manner.

  A `CommandQueue` may be used as a context manager, like this:

      with cl.CommandQueue(self.cl_context) as queue:
          enqueue_stuff(queue, ...)

  `finish()` is automatically called at the end of the context.

  New in version 2013.1: Context manager capability.

  `info`

    Lower case versions of the `command_queue_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `command_queue_info` for values of param.

  `set_property`(prop, enable)

    See `command_queue_properties` for possible values of prop. enable is a `bool`.

    Unavailable in OpenCL 1.1 and newer.

  `flush`()
  `finish`()
  static `from_int_ptr`((int)int_ptr_value) → CommandQueue :

    (static method) Return a new Python object referencing the C-level `cl_command_queue` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_command_queue`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

class `pyopencl.``Event`
  `info`

    Lower case versions of the `event_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `profile.``info`

    Lower case versions of the `profiling_info` constants may be used as attributes on the attribute profile of this class to directly query profiling info.

    For example, you may use evt.profile.end instead of evt.get_profiling_info(pyopencl.profiling_info.END).

  `get_info`(param)

    See `event_info` for values of param.

  `get_profiling_info`(param)

    See `profiling_info` for values of param. See `profile` for an easier way of obtaining the same information.

  `wait`()
  static `from_int_ptr`((int)int_ptr_value) → Event :

    (static method) Return a new Python object referencing the C-level `cl_event` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_event`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

`pyopencl.``wait_for_events`(events)

`pyopencl.``enqueue_barrier`(queue, wait_for=None)

  Enqueues a barrier operation. which ensures that all queued commands in command_queue have finished execution. This command is a synchronization point.

  New in version 0.91.5.

  Changed in version 2011.2: Takes wait_for and returns an `Event`

`pyopencl.``enqueue_marker`(queue, wait_for=None)

  Returns an `Event`.

  Changed in version 2011.2: Takes wait_for.

class `pyopencl.``UserEvent`(context)

  A subclass of `Event`. Only available with OpenCL 1.1 and newer.

  New in version 0.92.

  `set_status`(status)

    See `command_execution_status` for possible values of status.

class `pyopencl.``NannyEvent`

  Transfers between host and device return events of this type. They hold a reference to the host-side buffer and wait for the transfer to complete when they are freed. Therefore, they can safely release the reference to the object they’re guarding upon destruction.

  A subclass of `Event`.

  New in version 2011.2.

  `get_ward`()
  `wait`()

    In addition to performing the same wait as `Event.wait()`, this method also releases the reference to the guarded object.

## Memory

class `pyopencl.``MemoryObject`
  `info`

    Lower case versions of the `mem_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `hostbuf`
  `get_info`(param)

    See `mem_info` for values of param.

  `release`()
  `get_host_array`(shape, dtype, order="C")

    Return the memory object’s associated host memory area as a `numpy.ndarray` of the given shape, dtype and order.

  static `from_int_ptr`((int)arg1) → object :

    (static method) Return a new Python object referencing the C-level `cl_mem` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_mem`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

`pyopencl.``enqueue_migrate_mem_objects`(queue, mem_objects, flags=0, wait_for=None)

  Parameters: | flags – from `mem_migration_flags`

  New in version 2011.2.

  Only available with CL 1.2.

`pyopencl.``enqueue_migrate_mem_object_ext`(queue, mem_objects, flags=0, wait_for=None)

  Parameters: | flags – from `migrate_mem_object_flags_ext`

  New in version 2011.2.

  Only available with the cl_ext_migrate_memobject extension.

### Buffers

class `pyopencl.``Buffer`(context, flags, size=0, hostbuf=None)

  Create a `Buffer`. See `mem_flags` for values of flags. If hostbuf is specified, size defaults to the size of the specified buffer if it is passed as zero.

  `Buffer` inherits from `MemoryObject`.

  Note

  Python also defines a type of buffer object, and PyOpenCL interacts with those, too, as the host-side target of `enqueue_copy()`. Make sure to always be clear on whether a `Buffer` or a Python buffer object is needed.

  Note that actual memory allocation in OpenCL may be deferred. Buffers are attached to a `Context` and are only moved to a device once the buffer is used on that device. That is also the point when out-of-memory errors will occur. If you’d like to be sure that there’s enough memory for your allocation, either use `enqueue_migrate_mem_objects()` (if available) or simply perform a small transfer to the buffer. See also `pyopencl.tools.ImmediateAllocator`.

  `get_sub_region`(origin, size, flags=0)

    Only available in OpenCL 1.1 and newer.

  `__getitem__`(slc)

    slc is a `slice` object indicating from which byte index range a sub-buffer is to be created. The flags argument of `get_sub_region()` is set to the same flags with which self was created.

`pyopencl.``enqueue_fill_buffer`(queue, mem, pattern, offset, size, wait_for=None)

  Parameters: | pattern – a buffer object (likely a `numpy.ndarray`)

  Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

  Only available with CL 1.2.

  New in version 2011.2.

### Image Formats

class `pyopencl.``ImageFormat`([channel_order, channel_type])
  `channel_order`

    See `channel_order` for possible values.

  `channel_data_type`

    See `channel_type` for possible values.

  `channel_count`

    New in version 0.91.5.

  `dtype_size`

    New in version 0.91.5.

  `itemsize`

    New in version 0.91.5.

  `__repr__`()

    Returns a `str` representation of the image format.

    New in version 0.91.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

  Changed in version 0.91: Constructor arguments added.

  Changed in version 2013.2: `ImageFormat` was made comparable and hashable

`pyopencl.``get_supported_image_formats`(context, flags, image_type)

  See `mem_flags` for possible values of flags and `mem_object_type` for possible values of image_type.

### Images

`Image(context, flags, format, shape=None, pitches=None, hostbuf=None, is_array=False, buffer=None):`

  See `mem_flags` for values of flags. shape is a 2- or 3-tuple. format is an instance of `ImageFormat`. pitches is a 1-tuple for 2D images and a 2-tuple for 3D images, indicating the distance in bytes from one scan line to the next, and from one 2D image slice to the next.

  If hostbuf is given and shape is None, then hostbuf.shape is used as the shape parameter.

  `Image` inherits from `MemoryObject`.

  Note

  If you want to load images from `numpy.ndarray` instances or read images back into them, be aware that OpenCL images expect the x dimension to vary fastest, whereas in the default (C) order of `numpy` arrays, the last index varies fastest. If your array is arranged in the wrong order in memory, there are two possible fixes for this:

  - Convert the array to Fortran (column-major) order using `numpy.asarray()`.
  - Pass ary.T.copy() to the image creation function.

  New in version 0.91.

  Changed in version 2011.2: Added is_array and buffer, which are only available on CL 1.2 and newer.

  `pyopencl.``info`

    Lower case versions of the `mem_info` and `image_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `pyopencl.``shape`

    Return the value of the shape constructor argument as a `tuple`.

  `pyopencl.``get_image_info`(param)

    See `image_info` for values of param.

  `pyopencl.``release`()

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

`pyopencl.``image_from_array`(ctx, ary, num_channels=None, mode="r", norm_int=False)

  Build a 2D or 3D `Image` from the `numpy.ndarray` ary. If num_channels is greater than one, the last dimension of ary must be identical to num_channels. ary must be in C order. If num_channels is not given, it defaults to 1 for scalar types and the number of entries for Vector Types.

  The `ImageFormat` is chosen as the first num_channels components of “RGBA”.

  Parameters: | mode – “r” or “w” for read/write

  Note

  When reading from the image object, the indices passed to read_imagef are in the reverse order from what they would be when accessing ary from Python.

  If norm_int is True, then the integer values are normalized to a floating point scale of 0..1 when read.

  New in version 2011.2.

`pyopencl.``enqueue_fill_image`(queue, mem, color, origin, region, wait_for=None)

  Parameters: | color – a buffer object (likely a `numpy.ndarray`)

  Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

  Only available with CL 1.2.

  New in version 2011.2.

### Transfers

`pyopencl.``enqueue_copy`(queue, dest, src, **kwargs)

  Copy from `Image`, `Buffer` or the host to `Image`, `Buffer` or the host. (Note: host-to-host copies are unsupported.)

  The following keyword arguments are available:

  Parameters:

  - wait_for – (optional, default empty)
  - is_blocking – Wait for completion. Defaults to True. (Available on any copy involving host memory)

  Returns: | A `NannyEvent` if the transfer involved a host-side buffer, otherwise an `Event`.

  Note

  Two types of ‘buffer’ occur in the arguments to this function, `Buffer` and ‘host-side buffers’. The latter are defined by Python and commonly called buffer objects. Make sure to always be clear on whether a `Buffer` or a Python buffer object is needed.

  Transfer `Buffer` ↔ host

  Parameters: | device_offset – offset in bytes (optional)

  Note

  The size of the transfer is controlled by the size of the of the host-side buffer. If the host-side buffer is a `numpy.ndarray`, you can control the transfer size by transfering into a smaller ‘view’ of the target array, like this:

      cl.enqueue_copy(queue, large_dest_numpy_array[:15], src_buffer)

  Transfer `Buffer` ↔ `Buffer`

  Parameters:

  - byte_count – (optional) If not specified, defaults to the size of the source in versions 2012.x and earlier, and to the minimum of the size of the source and target from 2013.1 on.
  - src_offset – (optional)
  - dest_offset – (optional)

  Rectangular `Buffer` ↔ host transfers (CL 1.1 and newer)

  Parameters:

  - buffer_origin – `tuple` of `int` of length three or shorter. (mandatory)
  - host_origin – `tuple` of `int` of length three or shorter. (mandatory)
  - region – `tuple` of `int` of length three or shorter. (mandatory)
  - buffer_pitches – `tuple` of `int` of length two or shorter. (optional, “tightly-packed” if unspecified)
  - host_pitches – `tuple` of `int` of length two or shorter. (optional, “tightly-packed” if unspecified)

  Transfer `Image` ↔ host

  Parameters:

  - origin – `tuple` of `int` of length three or shorter. (mandatory)
  - region – `tuple` of `int` of length three or shorter. (mandatory)
  - pitches – `tuple` of `int` of length two or shorter. (optional)

  Transfer `Buffer` ↔ `Image`

  Parameters:

  - offset – offset in buffer (mandatory)
  - origin – `tuple` of `int` of length three or shorter. (mandatory)
  - region – `tuple` of `int` of length three or shorter. (mandatory)

  Transfer `Image` ↔ `Image`

  Parameters:

  - src_origin – `tuple` of `int` of length three or shorter. (mandatory)
  - dest_origin – `tuple` of `int` of length three or shorter. (mandatory)
  - region – `tuple` of `int` of length three or shorter. (mandatory)

  Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

  New in version 2011.1.

### Mapping Memory into Host Address Space

class `pyopencl.``MemoryMap`
  `release`(queue=None, wait_for=None)

`pyopencl.``enqueue_map_buffer`(queue, buf, flags, offset, shape, dtype, order="C", strides=None, wait_for=None, is_blocking=True)

  wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction. shape, dtype, and order have the same meaning as in `numpy.empty()`. See `map_flags` for possible values of flags. strides, if given, overrides order.

  Returns: | a tuple (array, event). array is a `numpy.ndarray` representing the host side of the map. Its .base member contains a `MemoryMap`.

  Changed in version 2011.1: is_blocking now defaults to True.

  Changed in version 2013.1: order now defaults to “C”.

  Changed in version 2013.2: Added strides argument.

`pyopencl.``enqueue_map_image`(queue, buf, flags, origin, region, shape, dtype, order="C", strides=None, wait_for=None, is_blocking=True)

  wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction. shape, dtype, and order have the same meaning as in `numpy.empty()`. See `map_flags` for possible values of flags. strides, if given, overrides order.

  Returns: | a tuple (array, event). array is a `numpy.ndarray` representing the host side of the map. Its .base member contains a `MemoryMap`.

  Changed in version 2011.1: is_blocking now defaults to True.

  Changed in version 2013.1: order now defaults to “C”.

  Changed in version 2013.2: Added strides argument.

### Samplers

class `pyopencl.``Sampler`(context, normalized_coords, addressing_mode, filter_mode)

  normalized_coords is a `bool` indicating whether to use coordinates between 0 and 1 (True) or the texture’s natural pixel size (False). See `addressing_mode` and `filter_mode` for possible argument values.

  `info`

    Lower case versions of the `sampler_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `sampler_info` for values of param.

  static `from_int_ptr`((int)int_ptr_value) → Sampler :

    (static method) Return a new Python object referencing the C-level `cl_sampler` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_sampler`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

## Programs and Kernels

class `pyopencl.``Program`(context, src)
class `pyopencl.``Program`(context, devices, binaries)

  binaries must contain one binary for each entry in devices.

  `info`

    Lower case versions of the `program_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `program_info` for values of param.

  `get_build_info`(device, param)

    See `program_build_info` for values of param.

  `build`(options=[], devices=None)

    options is a string of compiler flags. Returns self.

    By default, built binaries are cached in an on-disk cache called `pyopencl-compiler-cache-vN-uidNAME-pyVERSION` in the directory returned by `tempfile.gettempdir()`. By setting the environment variable `PYOPENCL_NO_CACHE` to any non-empty value, this caching is suppressed. Any options found in the environment variable `PYOPENCL_BUILD_OPTIONS` will be appended to options.

    Changed in version 2011.1: options may now also be a `list` of `str`.

    Changed in version 2013.1: Added `PYOPENCL_NO_CACHE`. Added `PYOPENCL_BUILD_OPTIONS`.

  `compile`(self, options=[], devices=None, headers=[])

    Parameters: | headers – a list of tuples (name, program).

    Only available with CL 1.2.

    New in version 2011.2.

  `kernel_name`

    `Kernel` objects can be produced from a built (see `build()`) program simply by attribute lookup.

    Note

    The `program_info` attributes live in the same name space and take precedence over `Kernel` names.

  `all_kernels`()

    Returns a list of all `Kernel` objects in the `Program`.

  static `from_int_ptr`((int)int_ptr_value) → _Program :

    (static method) Return a new Python object referencing the C-level `cl_program` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_program`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

`pyopencl.``create_program_with_built_in_kernels`(context, devices, kernel_names)

  Only available with CL 1.2.

  New in version 2011.2.

`pyopencl.``link_program`(context, programs, options=[], devices=None)

  Only available with CL 1.2.

  New in version 2011.2.

`pyopencl.``unload_platform_compiler`(platform)

  Only available with CL 1.2.

  New in version 2011.2.

class `pyopencl.``Kernel`(program, name)
  `info`

    Lower case versions of the `kernel_info` constants may be used as attributes on instances of this class to directly query info attributes.

  `get_info`(param)

    See `kernel_info` for values of param.

  `get_work_group_info`(param, device)

    See `kernel_work_group_info` for values of param.

  `get_arg_info`(arg_index, param)

    See `kernel_arg_info` for values of param.

    Only available in OpenCL 1.2 and newer.

  `set_arg`(self, index, arg)

    arg may be

    - None: This may be passed for __global memory references to pass a NULL pointer to the kernel.

    - Anything that satisfies the Python buffer interface, in particular `numpy.ndarray`, `str`, or `numpy`‘s sized scalars, such as `numpy.int32` or `numpy.float64`.

      Note

      Note that Python’s own `int` or `float` objects will not work out of the box. See `Kernel.set_scalar_arg_dtypes()` for a way to make them work. Alternatively, the standard library module `struct` can be used to convert Python’s native number types to binary data in a `str`.

    - An instance of `MemoryObject`. (e.g. `Buffer`, `Image`, etc.)

    - An instance of `LocalMemory`.

    - An instance of `Sampler`.

  `set_args`(self, *args)

    Invoke `set_arg()` on each element of args in turn.

    New in version 0.92.

  `set_scalar_arg_dtypes`(arg_dtypes)

    Inform the wrapper about the sized types of scalar `Kernel` arguments. For each argument, arg_dtypes contains an entry. For non-scalars, this must be None. For scalars, it must be an object acceptable to the `numpy.dtype` constructor, indicating that the corresponding scalar argument is of that type.

    After invoking this function with the proper information, most suitable number types will automatically be cast to the right type for kernel invocation.

    Note

    The information set by this rountine is attached to a single kernel instance. A new kernel instance is created every time you use program.kernel attribute access. The following will therefore not work:

        prg = cl.Program(...).build()
        prg.kernel.set_scalar_arg_dtypes(...)
        prg.kernel(queue, n_globals, None, args)

  `__call__`(queue, global_size, local_size, *args, global_offset=None, wait_for=None, g_times_l=False)

    Use `enqueue_nd_range_kernel()` to enqueue a kernel execution, after using `set_args()` to set each argument in turn. See the documentation for `set_arg()` to see what argument types are allowed. Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

    None may be passed for local_size.

    If g_times_l is specified, the global size will be multiplied by the local size. (which makes the behavior more like Nvidia CUDA) In this case, global_size and local_size also do not have to have the same number of dimensions.

    Note

    `__call__()` is not thread-safe. It sets the arguments using `set_args()` and then runs `enqueue_nd_range_kernel()`. Another thread could race it in doing the same things, with undefined outcome. This issue is inherited from the C-level OpenCL API. The recommended solution is to make a kernel (i.e. access prg.kernel_name, which corresponds to making a new kernel) for every thread that may enqueue calls to the kernel.

    A solution involving implicit locks was discussed and decided against on the mailing list in October 2012.

    Changed in version 0.92: local_size was promoted to third positional argument from being a keyword argument. The old keyword argument usage will continue to be accepted with a warning throughout the 0.92 release cycle. This is a backward-compatible change (just barely!) because local_size as third positional argument can only be a `tuple` or None. `tuple` instances are never valid `Kernel` arguments, and None is valid as an argument, but its treatment in the wrapper had a bug (now fixed) that prevented it from working.

    Changed in version 2011.1: Added the g_times_l keyword arg.

  `capture_call`(filename, queue, global_size, local_size, *args, global_offset=None, wait_for=None, g_times_l=False)

    This method supports the exact same interface as `__call__()`, but instead of invoking the kernel, it writes a self-contained PyOpenCL program to filename that reproduces this invocation. Data and kernel source code will be packaged up in filename‘s source code.

    This is mainly intended as a debugging aid. For example, it can be used to automate the task of creating a small, self-contained test case for an observed problem. It can also help separate a misbehaving kernel from a potentially large or time-consuming outer code.

    To use, simply change:

        evt = my_kernel(queue, gsize, lsize, arg1, arg2, ...)

    to:

        evt = my_kernel.capture_call("bug.py", queue, gsize, lsize, arg1, arg2, ...)

    New in version 2013.1.

  static `from_int_ptr`((int)int_ptr_value) → Kernel :

    (static method) Return a new Python object referencing the C-level `cl_kernel` object at the location pointed to by int_ptr_value. The relevant `clRetain*()` function will be called.

    New in version 2013.2.

  `int_ptr`

    Return an integer corresponding to the pointer value of the underlying `cl_kernel`. Use `from_int_ptr()` to turn back into a Python object.

    New in version 2013.2.

  Instances of this class are hashable, and two instances of this class may be compared using “==” and ”!=”. (Hashability was added in version 2011.2.)

class `pyopencl.``LocalMemory`(size)

  A helper class to pass __local memory arguments to kernels.

  New in version 0.91.2.

  `size`

    The size of local buffer in bytes to be provided.

`pyopencl.``enqueue_nd_range_kernel`(queue, kernel, global_work_size, local_work_size, global_work_offset=None, wait_for=None, g_times_l=False)

  Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

  If g_times_l is specified, the global size will be multiplied by the local size. (which makes the behavior more like Nvidia CUDA) In this case, global_size and local_size also do not have to have the same number of dimensions.

  Changed in version 2011.1: Added the g_times_l keyword arg.

`pyopencl.``enqueue_task`(queue, kernel, wait_for=None)

  Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

## GL Interoperability

Functionality in this section is only available when PyOpenCL is compiled with GL support. See `have_gl()`.

New in version 0.91.

`pyopencl.``have_gl`()

  Return True if PyOpenCL was compiled with OpenGL interoperability, otherwise False.

`pyopencl.``get_gl_sharing_context_properties`()

  Return a `list` of `context_properties` that will allow a newly created context to share the currently active GL context.

`pyopencl.``get_apple_cgl_share_group`()

  Get share group handle for current CGL context.

  Apple OS X only.

  New in version 2011.1.

class `pyopencl.``GLBuffer`(context, flags, bufobj)

  `GLBuffer` inherits from `MemoryObject`.

  `gl_object`

class `pyopencl.``GLRenderBuffer`(context, flags, bufobj)

  `GLRenderBuffer` inherits from `MemoryObject`.

  `gl_object`

class `pyopencl.``GLTexture`(context, flags, texture_target, miplevel, texture, dims)

  dims is either 2 or 3. `GLTexture` inherits from `Image`.

  `gl_object`
  `get_gl_texture_info`(param)

    See `gl_texture_info` for values of param. Only available when PyOpenCL is compiled with GL support. See `have_gl()`.

`pyopencl.``enqueue_acquire_gl_objects`(queue, mem_objects, wait_for=None)

  mem_objects is a list of `MemoryObject` instances. Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

`pyopencl.``enqueue_release_gl_objects`(queue, mem_objects, wait_for=None)

  mem_objects is a list of `MemoryObject` instances. Returns a new `pyopencl.Event`. wait_for may either be None or a list of `pyopencl.Event` instances for whose completion this command waits before starting exeuction.

`pyopencl.``get_gl_context_info_khr`(properties, param_name, platform=None)

  Get information on which CL device corresponds to a given GL/EGL/WGL/CGL device.

  See the `Context` constructor for the meaning of properties and `gl_context_info` for param_name.

  Changed in version 2011.2: Accepts the platform argument. Using platform equal to None is deprecated as of PyOpenCL 2011.2.