OpenCL™规范 附录E:OpenCL的更改

Appendix E: Changes to OpenCL

附录E:OpenCL的更改

Changes to the OpenCL API and OpenCL C specifications between successive versions are summarized below.

以下总结了连续版本之间对OpenCL API和OpenCL C规范的更改。

Summary of Changes from OpenCL 1.0 to OpenCL 1.1

从OpenCL 1.0到OpenCL 1.1的更改摘要

The following features are added to the OpenCL 1.1 platform layer and runtime (sections 4 and 5):

OpenCL 1.1平台层和运行时中添加了以下功能(第4节和第5节):

The following modifications are made to the OpenCL 1.1 platform layer and runtime (sections 4 and 5):

对OpenCL 1.1平台层和运行时进行了以下修改(第4节和第5节):

  • Following queries in table 4.3

    表4.3中的以下查询

    • The minimum FULL_PROFILE value for CL_DEVICE_MAX_PARAMETER_SIZE increased from 256 to 1024 bytes

    • ​CLD_MAX_MAMETER_SIZE的最小FULL_PROFILE值从256字节增加到1024字节

    • The minimum FULL_PROFILE value for CL_DEVICE_LOCAL_MEM_SIZE increased from 16 KB to 32 KB.

    • ​CL_DEVICE_LOCAL_MEM_SIZE的最小FULL_PROFILE值从16KB增加到32KB。

  • The global_work_offset argument in clEnqueueNDRangeKernel can be a non-NULL value.

  • ​clEnqueueNDRangeKernel中的global_work_offset参数可以是非NULL值。

  • All API calls except clSetKernelArg are thread-safe.

  • ​除了clSetKernelArg之外,所有API调用都是线程安全的。

The following features are added to the OpenCL C programming language (section 6) in OpenCL 1.1:

OpenCL 1.1中的OpenCL C编程语言(第6节)添加了以下功能:

  • 3-component vector data types.

  • 3分量向量数据类型。

  • New built-in functions

    新的内置功能

    • get_global_offset work-item function defined in section 6.15.1.

    • 第6.15.1节中定义的get_global_offset工作项函数。

    • minmagmaxmag math functions defined in section 6.15.2.

    • 第6.15.2节中定义的minmag、maxmag数学函数。

    • clamp integer function defined in section 6.15.3.

    • 第6.15.3节中定义的箝位整数函数。

    • (vector, scalar) variant of integer functions min and max in section 6.12.3.

    • 第6.12.3节中整数函数min和max的(向量、标量)变体。

    • async_work_group_strided_copy defined in section 6.15.11.

    • 第6.15.11节中定义的async_work_group_strided_copy

    • vec_stepshuffle and shuffle2 defined in section 6.15.13.

    • 第6.15.13节中定义的vec_stepshuffleshuffle2 。

  • cl_khr_byte_addressable_store extension is a core feature.

  • cl_khr_byte_addressable_store扩展是一个核心功能。

  • cl_khr_global_int32_base_atomicscl_khr_global_int32_extended_atomicscl_khr_local_int32_base_atomics and cl_khr_local_int32_extended_atomics extensions are core features. The built-in atomic function names are changed to use the atomic_ prefix instead of atom_.

  • cl_khr_global_int32_base_atomics、cl_khr_global_int32_extended_atomics,cl_khr_local_int32_base_atomics和cl_khr_local_int32_extended_atomics扩展是核心功能。内置的原子函数名称已更改为使用atomic_前缀而不是atom_。

  • Macros CL_VERSION_1_0 and CL_VERSION_1_1.

  • 宏CL_VERSION_1_0和CL_VERSION_1_1。

The following features in OpenCL 1.0 are deprecated (see glossary) in OpenCL 1.1:

OpenCL 1.0中的以下功能在OpenCL 1.1中已弃用(请参阅术语表):

  • The clSetCommandQueueProperty API is deprecated, which simplifies implementations and possibly improves performance by enforcing that command-queue properties are invariant. Applications are encouraged to create multiple command-queues with different properties versus modifying the properties of a single command-queue.

  • ​不赞成使用clSetCommandQueueProperty API,它通过强制命令队列属性不变来简化实现并可能提高性能。鼓励应用程序创建具有不同属性的多个命令队列,而不是修改单个命令队列的属性。

  • The -cl-strict-aliasing build option has been deprecated. It is no longer required after defining type-based aliasing rules.

  • -cl-strict-aliasing构建选项已被弃用。定义基于类型的别名规则后,不再需要它。

  • The cl_khr_select_fprounding_mode extension is deprecated and its use is no longer recommended.

  • ​cl_khr_select_fprounding_mode扩展已弃用,不再建议使用。

The following new extensions are added to section 9 in OpenCL 1.1:

OpenCL 1.1的第9节新增了以下扩展:

  • cl_khr_gl_event for creating a CL event object from a GL sync object.

  • cl_khr_gl_event用于从GL同步对象创建CL 事件对象。

  • cl_khr_d3d10_sharing for sharing memory objects with Direct3D 10.

  • cl_khr_d3d10_sharing用于与Direct3D 10共享内存对象。

The following modifications are made to the OpenCL ES Profile described in section 10 in OpenCL 1.1:

对OpenCL 1.1第10节中描述的OpenCL ES配置文件进行了以下修改:

  • 64-bit integer support is optional.

  • 64位整数支持是可选的。

Summary of Changes from OpenCL 1.1 to OpenCL 1.2

从OpenCL 1.1到OpenCL 1.2的更改摘要

The following features are added to the OpenCL 1.2 platform layer and runtime (sections 4 and 5):

OpenCL 1.2平台层和运行时中添加了以下功能(第4节和第5节):

  • Custom devices and built-in kernels are supported. clCreateProgramWithBuiltInKernels has been added to allow creation of a cl_program using built-in kernels.

  • ​支持自定义设备和内置内核。clCreateProgramWithBuiltInKernels已添加,允许使用内置内核创建cl_program。

  • Device partitioning that allows a device to be partitioned based on a number of partitioning schemes supported by the device. This is done by using clCreateSubDevices to create a new cl_device_id based on a partitioning.

  • ​设备分区,允许根据设备支持的多种分区方案对设备进行分区。这是通过使用clCreateSubDevices基于分区创建新的cl_device_id来实现的。

  • clCompileProgram and clLinkProgram to allow handling these aspects clBuildProgram separately.

  • clCompileProgram和clLinkProgram允许分别处理clBuildProgram的这些方面。

  • Extend cl_mem_flags to describe how the host accesses the data in a cl_mem object.

  • 扩展cl_mem_flags以描述主机如何访问cl_mem对象中的数据。

  • clEnqueueFillBuffer and clEnqueueFillImage to support filling a buffer with a pattern or an image with a color.

  • clEnqueueFillBuffer和clEnqueueFillImage支持用图案填充缓冲区或用颜色填充图像。

  • Add CL_MAP_WRITE_INVALIDATE_REGION to cl_map_flags. Appropriate clarification to the behavior of CL_MAP_WRITE has been added to the spec.

  • ​将CL_MAP_WRITE_INVALIDATE_REGION添加到cl_map_flags。对CL_MAP_WRITE行为的适当澄清已添加到规范中。

  • New image types: 1D image, 1D image from a buffer object, 1D image array and 2D image arrays.

  • 新的图像类型:1D图像、来自缓冲对象的1D图像、1D图像阵列和2D图像阵列。

  • clCreateImage to create an image object.

  • clCreateImage用于创建图像对象。

  • clEnqueueMigrateMemObjects API that allows a developer to have explicit control over the location of memory objects or to migrate a memory object from one device to another.

  • clEnqueueMigrateMemoObjects API,允许开发人员显式控制内存对象的位置,或将内存对象从一个设备迁移到另一个设备。

  • Support separate compilation and linking of programs.

  • 支持程序的单独编译和链接。

  • Additional queries to get the number of kernels and kernel names in a program have been added to clGetProgramInfo.

  • ​clGetProgramInfo中添加了获取程序中内核数量和内核名称的其他查询。

  • Additional queries to get the compile and link status and options have been added to clGetProgramBuildInfo.

  • ​clGetProgramBuildInfo中添加了获取编译和链接状态和选项的其他查询。

  • clGetKernelArgInfo API that returns information about the arguments of a kernel.

  • clGetKernelArgInfo API,返回有关内核参数的信息。

  • clEnqueueMarkerWithWaitList and clEnqueueBarrierWithWaitList APIs.

  • clEnqueueMarkerWithWaitList和clEnqueueBarrierWithWaitList API。

  • clUnloadPlatformCompiler to request that a single platform’s compiler is unloaded. This is compatible with the cl_khr_icd extension if that is supported, unlike clUnloadCompiler.

  • clUnloadPlatformCompiler请求卸载单个平台的编译器。这与cl_khr_icd扩展兼容(如果支持的话),这与clUnloadCompiler不同。

The following features are added to the OpenCL C programming language (section 6) in OpenCL 1.2:

OpenCL 1.2中的OpenCL C编程语言(第6节)添加了以下功能:

  • Double-precision is now an optional core feature instead of an extension.

  • 双精度现在是可选的核心功能,而不是扩展功能。

  • New built in image types: image1d_timage1d_buffer_timage1d_array_t, and image2d_array_t.

  • 新的内置图像类型:image1d_t、image1d_buffer_t、image1d_array_t和image2d_array_t。

  • New built-in functions

    新的内置功能

    • Functions to read from and write to a 1D image, 1D and 2D image arrays described in sections 6.15.15.26.15.15.3 and 6.15.15.4.

    • 读取和写入第6.15.15.2、6.15.15.3和6.15.15.4节中描述的1D图像、1D和2D图像阵列的功能。

    • Sampler-less image read functions described in section 6.15.15.3.

    • 第6.15.15.3节中描述的无采样器图像读取功能。

    • popcount integer function described in section 6.15.3.

    • 第6.15.3节中描述的popcount整数函数。

    • printf function described in section 6.15.14.

    • 第6.15.14节中描述的printf函数。

  • Storage class specifiers extern and static as described in section 6.10.

  • 存储类说明符extern和static,如第6.10节所述。

  • Macros CL_VERSION_1_2 and __OPENCL_C_VERSION__.

  • 宏CL_VERSION_1_2和__OPENCL_C_VERSION__。

The following APIs in OpenCL 1.1 are deprecated (see glossary) in OpenCL 1.2:

OpenCL 1.1中的以下API在OpenCL 1.2中已弃用(请参阅术语表):

The following queries are deprecated (see glossary) in OpenCL 1.2:

在OpenCL 1.2中,以下查询已被弃用(请参阅术语表):

Summary of Changes from OpenCL 1.2 to OpenCL 2.0

从OpenCL 1.2到OpenCL 2.0的更改摘要

The following features are added to the OpenCL 2.0 platform layer and runtime (sections 4 and 5):

以下功能被添加到OpenCL 2.0平台层和运行时(第4节和第5节):

  • Shared virtual memory. The associated API additions are:
    共享虚拟内存。相关的API添加包括:

    • clSetKernelArgSVMPointer to control which shared virtual memory (SVM) pointer to associate with a kernel instance.

    • clSetKernelArgSVMPointer,用于控制与内核实例关联的共享虚拟内存(SVM)指针。

    • clSVMAllocclSVMFree and clEnqueueSVMFree to allocate and free memory for use with SVM.

    • clSVMAlloc、clSVMFree和clEnqueueSVMFree用于分配和释放内存以供SVM使用。

    • clEnqueueSVMMap and clEnqueueSVMUnmap to map and unmap to update regions of an SVM buffer from host.

    • clEnqueueSVMMap和clEnqueueSVMUnmap用于映射和取消映射,以从主机更新SVM缓冲区的区域。

    • clEnqueueSVMMemcpy and clEnqueueSVMMemFill to copy or fill SVM memory regions.

    • clEnqueueSVMMemcopy和clEnqueueSVMMemFill用于复制或填充SVM内存区域。

  • Device queues used to enqueue kernels on the device.
    用于在设备上排队内核的设备队列。

    • clCreateCommandQueueWithProperties is added to allow creation of a command-queue with properties that affect both host command-queues and device queues.

    • 添加了clCreateCommandQueueWithProperties,以允许创建具有影响主机命令队列和设备队列的属性的命令队列。

  • Pipes.
    管道

    • clCreatePipe and clGetPipeInfo have been added to the API for host side creation and querying of pipes.

    • clCreatePipe和clGetPipeInfo已添加到API中,用于主机端创建和查询管道。

  • Images support for 2D image from buffer, depth images and sRGB images.

  • 图像支持来自缓冲区的2D图像、深度图像和sRGB图像。

  • clCreateSamplerWithProperties.

The following modifications are made to the OpenCL 2.0 platform layer and runtime (sections 4 and 5):

对OpenCL 2.0平台层和运行时进行了以下修改(第4节和第5节):

  • All API calls except clSetKernelArgclSetKernelArgSVMPointer and clSetKernelExecInfo are thread-safe. Note that this statement does not imply that other API calls were not thread-safe in earlier versions of the specification.

  • ​除了clSetKernelArg、clSetKernelArgSVMPointer和clSetKernellExecInfo之外,所有API调用都是线程安全的。请注意,此语句并不意味着其他API调用在早期版本的规范中不是线程安全的。

The following features are added to the OpenCL C programming language (section 6) in OpenCL 2.0:

OpenCL 2.0中的OpenCL C编程语言(第6节)添加了以下功能:

  • Clang Blocks.

  • Clang块

  • Kernels enqueuing kernels to a device queue.

  • 内核将内核查询到设备队列。

  • Program scope variables in global address space.

  • 全局地址空间中的程序作用域变量。

  • Generic address space.

  • 通用地址空间。

  • C1x atomics.

  • C1x原子。

  • New built-in functions (sections 6.15.10, 6.15.12, and 6.15.16).

  • 新的内置功能(第6.15.10、6.15.12和6.15.16节)。

  • Support images with the read_write qualifier.

  • 支持带有read_write限定符的图像。

  • 3D image writes are a core feature.

  • 3D图像写入是一个核心功能。

  • The CL_VERSION_2_0 and NULL macros.

  • CL_VERSION_2_0和NULL宏。

  • The opencl_unroll_hint attribute.

  • opencl_unroll_hint属性。

The following APIs are deprecated (see glossary) in OpenCL 2.0:

在OpenCL 2.0中,以下API已被弃用(请参阅术语表):

  • The clCreateCommandQueue API has been deprecated to simplify the API. The clCreateCommandQueueWithProperties API provides equivalent functionality and supports specifying additional command-queue properties.

  • ​不赞成使用clCreateCommandQueue API来简化API。clCreateCommandQueueWithProperties API提供了等效的功能,并支持指定其他命令队列属性。

  • The clCreateSampler API has been deprecated to simplify the API. The clCreateSamplerWithProperties API provides equivalent functionality and supports specifying additional sampler properties.

  • ​为了简化API,clCreateSampler API已被弃用。clCreateSamplerWithProperties API提供了等效的功能,并支持指定其他采样器属性。

  • The clEnqueueTask API has been deprecated to simplify the API. The clEnqueueNDRangeKernel API provides equivalent functionality.

  • ​为了简化API,已弃用clEnqueueTask API。clEnqueueNDRangeKernel API提供了等效的功能。

The following queries are deprecated (see glossary) in OpenCL 2.0:

在OpenCL 2.0中,以下查询已被弃用(请参阅术语表):

  • The CL_DEVICE_HOST_UNIFIED_MEMORY query is deprecated. This query was purely informational and had different meanings for different implementations. Its use is no longer recommended.

  • ​CL_DEVICE_HOST_UNIFIED_MEMORY查询已弃用。此查询纯粹是信息性的,对不同的实现有不同的含义。不再推荐使用。

  • The CL_IMAGE_BUFFER query has been deprecated to simplify the API. The CL_MEM_ASSOCIATED_MEMOBJECT query provides equivalent functionality.

  • ​不赞成使用CL_IMAGE_BUFFER查询来简化API。CL_MEM_ASSOCIATED_MEMOBJECT查询提供了等效的功能。

  • The CL_DEVICE_QUEUE_PROPERTIES query has been deprecated and replaced by CL_DEVICE_QUEUE_ON_HOST_PROPERTIES.

  • ​CL_DEVICE_QUEUE_PROPERTIES查询已被弃用,取而代之的是CL_DEVICE_QUEUE_ON_HOST_PROPERTIES。

  • Atomics and Fences
    原子操作和栅栏

    • The Explicit Memory Fence Functions defined in section 6.12.9 of the OpenCL 1.2 specification have been deprecated to simplify the programming language. The atomic_work_item_fence function provides equivalent functionality. The deprecated functions are still described in section 6.15.9 of this specification.

    • OpenCL 1.2规范第6.12.9节中定义的显式内存围栏函数已被弃用,以简化编程语言。atomic_work_item_fence函数提供了等效的功能。本规范第6.15.9节仍对弃用的功能进行了描述。

    • The Atomic Functions defined in section 6.12.11 of the OpenCL 1.2 specification have been deprecated to simplify the programming language. The atomic_fetch and modify functions provide equivalent functionality. The deprecated functions are still described in section 6.15.12.8 of this specification.

    • OpenCL 1.2规范第6.12.11节中定义的原子函数已被弃用,以简化编程语言。atomic_rech和modify函数提供了等效的功能。本规范第6.15.12.8节仍对弃用的功能进行了描述。

Summary of Changes from OpenCL 2.0 to OpenCL 2.1

从OpenCL 2.0到OpenCL 2.1的更改摘要

The following features are added to the OpenCL 2.1 platform layer and runtime (sections 4 and 5):

OpenCL 2.1平台层和运行时中添加了以下功能(第4节和第5节):

The following modifications are made to the OpenCL 2.1 platform layer and runtime (sections 4 and 5):

对OpenCL 2.1平台层和运行时进行了以下修改(第4节和第5节):

  • All API calls except clSetKernelArgclSetKernelArgSVMPointerclSetKernelExecInfo and clCloneKernel are thread-safe. Note that this statement does not imply that other API calls were not thread-safe in earlier versions of the specification.

  • ​除了clSetKernelArg、clSetKernel ArgSVMPointer、clSetKernelExecInfo和clCloneKernel之外,所有API调用都是线程安全的。请注意,此语句并不意味着其他API调用在早期版本的规范中不是线程安全的。

Note that the OpenCL C kernel language is not updated for OpenCL 2.1. The OpenCL 2.0 kernel language will still be consumed by OpenCL 2.1 runtimes.

请注意,OpenCL C内核语言没有针对OpenCL 2.1进行更新。OpenCL 2.0内核语言仍将被OpenCL 2.1运行时使用。

The SPIR-V and OpenCL SPIR-V Environment specifications have been added.

添加了SPIR-V和OpenCL SPIR-V环境规范。

Summary of Changes from OpenCL 2.1 to OpenCL 2.2

从OpenCL 2.1到OpenCL 2.2的更改摘要

The following changes have been made to the OpenCL 2.2 execution model (section 3)

对OpenCL 2.2执行模型进行了以下更改(第3节)

  • Added the third prerequisite (executing non-trivial constructors for program scope global variables).

  • 添加了第三个先决条件(为程序作用域全局变量执行非平凡构造函数)。

The following features are added to the OpenCL 2.2 platform layer and runtime (sections 4 and 5):

OpenCL 2.2平台层和运行时中添加了以下功能(第4节和第5节):

The following modifications are made to the OpenCL 2.2 platform layer and runtime (section 4 and 5):

对OpenCL 2.2平台层和运行时进行了以下修改(第4节和第5节):

Added definition of Deprecation and Specialization constants to the glossary.

在术语表中添加了弃用和专业化常量的定义。

Summary of Changes from OpenCL 2.2 to OpenCL 3.0

从OpenCL 2.2到OpenCL 3.0的更改摘要

OpenCL 3.0 is a major revision that breaks backwards compatibility with previous versions of OpenCL, see OpenCL 3.0 Backwards Compatibility for details.

​OpenCL 3.0是一个重大修订,它打破了与以前版本的OpenCL的向后兼容性,有关详细信息,请参阅OpenCL 3.0向后兼容性。

OpenCL 3.0 adds new queries to determine optional capabilities for a device:

OpenCL 3.0添加了新的查询来确定设备的可选功能:

  • CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES and CL_DEVICE_ATOMIC_FENCE_CAPABILITIES to determine the atomic memory and atomic fence capabilities of a device.

  • CL_DEVICE_ATOMIC_MEMORY_CAPABILITIES和CL_DEVICE_ATOMIC_FENCE_CAPABILITIES,用于确定设备的原子内存和原子围栏功能。

  • CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT to determine if a device supports non-uniform work-group sizes.

  • CL_DEVICE_NON_UNIFORM_WORK_GROUP_SUPPORT支持,用于确定设备是否支持非统一工作组大小。

  • CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT to determine whether a device supports optional work-group collective functions, such as broadcasts, scans, and reductions.

  • CL_DEVICE_WORK_GROUP_COLLECTIVE_FUNCTIONS_SUPPORT用于确定设备是否支持可选的工作组集合功能,如广播、扫描和缩减。

  • CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT to determine whether a device supports the generic address space.

  • CL_DEVICE_GENERIC_ADDRESS_SPACE_SUPPORT,用于确定设备是否支持通用地址空间。

  • CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES to determine the device-side enqueue capabilities of a device.

  • CL_DEVICE_DEVICE_ENQUEUE_CAPABILITIES,用于确定设备的设备侧排队能力。

  • CL_DEVICE_PIPE_SUPPORT to determine whether a device supports pipe memory objects.

  • CL_DEVICE_PIPE_SUPPORT用于确定设备是否支持管道内存对象。

  • CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE to determine the preferred work-group size multiple for a device.

  • CL_DEVICE_PREFERRED_WORK_GROUP_SIZE_MULTIPLE用于确定设备的首选工作组大小倍数。

OpenCL 3.0 adds new queries to conveniently and precisely describe supported features and versions:

OpenCL 3.0添加了新的查询,以方便准确地描述支持的功能和版本:

  • CL_PLATFORM_NUMERIC_VERSION to describe the platform version as a numeric value.

  • CL_PLATFORM_NUMERIC_VERSION将平台版本描述为数值。

  • CL_PLATFORM_EXTENSIONS_WITH_VERSION to describe supported platform extensions and their supported version.

  • CL_PLATFORM_EXTENSIONS_WITH_VERSION描述支持的平台扩展及其支持的版本。

  • CL_DEVICE_NUMERIC_VERSION to describe the device version as a numeric value.

  • CL_DEVICE_NUMERIC_VERSION将设备版本描述为数值。

  • CL_DEVICE_EXTENSIONS_WITH_VERSION to describe supported device extensions and their supported version.

  • CL_DEVICE_EXTENSIONS_WITH_VERSION描述支持的设备扩展及其支持的版本。

  • CL_DEVICE_ILS_WITH_VERSION to describe supported intermediate languages (ILs) and their supported version.

  • CL_DEVICE_ILS_WITH_VERSION描述支持的中间语言(IL)及其支持的版本。

  • CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION to describe supported built-in kernels and their supported version.

  • CL_DEVICE_BUILT_IN_KERNELS_WITH_VERSION描述支持的内置内核及其支持的版本。

OpenCL 3.0 adds a new API to register a function that will be called when a context is destroyed, enabling an application to safely free user data associated with a context callback function.

OpenCL 3.0添加了一个新的API来注册在上下文被破坏时将被调用的函数,使应用程序能够安全地释放与上下文回调函数关联的用户数据。

OpenCL 3.0 adds two new APIs to support creating buffer and image memory objects with additional properties. Although no new properties are added in OpenCL 3.0, these APIs enable new buffer and image extensions to be added easily and consistently:

OpenCL 3.0增加了两个新的API,以支持创建具有额外属性的缓冲区和图像内存对象。尽管OpenCL 3.0中没有添加新的属性,但这些API可以轻松一致地添加新的缓冲区和图像扩展:

OpenCL 3.0 adds new queries for the properties arrays specified when creating buffers, images, pipes, samplers, and command-queues:

OpenCL 3.0为创建缓冲区、图像、管道、采样器和命令队列时指定的属性数组添加了新的查询:

Program initialization and clean-up kernels are not supported in OpenCL 3.0 due to implementation complexity and lack of demand. The following APIs and queries for program initialization and clean-up kernels are deprecated in OpenCL 3.0:

由于实现的复杂性和需求的缺乏,OpenCL 3.0不支持程序初始化和清理内核。在OpenCL 3.0中,以下用于程序初始化和清理内核的API和查询已被弃用:

OpenCL 3.0 adds the OpenCL 3.0 C kernel language, which includes feature macros to describe OpenCL C language support. Please refer to the OpenCL C specification for details.

OpenCL 3.0增加了OpenCL 3.0 C内核语言,其中包括描述OpenCL C语言支持的功能宏。有关详细信息,请参阅OpenCL C规范。

Scalar input arguments to the any and all built-in functions have been deprecated in the OpenCL 3.0 C kernel language. These functions behaved inconsistently with the C language’s use of scalar integers as logical values.

在OpenCL 3.0 C内核语言中,任何和所有内置函数的标量输入参数都已被弃用。这些函数的行为与C语言使用标量整数作为逻辑值不一致。

OpenCL 3.0 adds new queries to determine supported OpenCL C language versions and supported OpenCL C features:

OpenCL 3.0增加了新的查询,以确定支持的OpenCL C语言版本和支持的OpenCL C功能:

  • CL_DEVICE_OPENCL_C_ALL_VERSIONS to determine the set of OpenCL C language versions supported by a device.

  • CL_DEVICE_OPENCL_C_ALL_VERSIONS,用于确定设备支持的OPENCL C语言版本集。

  • CL_DEVICE_OPENCL_C_FEATURES to determine optional OpenCL C language features supported by a device.

  • CL_DEVICE_OPENCL_C_FEATURES用于确定设备支持的可选OPENCL C语言功能。

OpenCL 3.0 adds an event command type to identify events associated with the OpenCL 2.1 command clEnqueueSVMMigrateMem:

​OpenCL 3.0添加了一个事件命令类型来标识与OpenCL 2.1命令clEnqueueSVMMigrateMem相关的事件:

OpenCL 3.0 adds a new query to determine the latest version of the conformance test suite that the device has fully passed in accordance with the official conformance process:

OpenCL 3.0添加了一个新的查询,以确定设备根据官方一致性流程完全通过的一致性测试套件的最新版本:

Summary of Changes from OpenCL 3.0

OpenCL 3.0更改摘要

The first non-provisional version of the OpenCL 3.0 specifications was v3.0.5.

OpenCL 3.0规范的第一个非临时版本是v3.0.5。

Changes from v3.0.5:

与v3.0.5相比的更改:

Changes from v3.0.6:

与v3.0.6相比的更改:

Changes from v3.0.7:

与v3.0.7相比的更改:

  • Clarified optionality support for double-precision literals.

  • 明确了双精度文字的可选性支持。

  • Removed unnecessary phrase from sub-group mask function descriptions.

  • 从子组掩码函数描述中删除了不必要的短语。

  • Added input_slice_pitch error condition for read and write image APIs.

  • 为读写图像API添加了input_slice_pitch错误条件。

  • Added new extension:
    新增扩展名:

Changes from v3.0.8:

与v3.0.8相比的更改:

Changes from v3.0.9:

与v3.0.9相比的更改:

Changes from v3.0.10:

与v3.0.10相比的更改:

  • Added a requirement for implementations supporting device-side enqueue to also support program scope global variables.

  • 增加了对支持设备端排队的实现的要求,以支持程序范围全局变量。

  • Added missing device scope atomic feature guards to several atomic function overloads.

  • 为几个原子函数重载添加了缺失的设备作用域原子功能保护。

  • Added a possible error condition for clGetEventProfilingInfo for pre-OpenCL 3.0 devices.

  • ​为OpenCL 3.0之前的设备的clGetEventProfilingInfo添加了一个可能的错误条件。

  • Added several missing error conditions for clGetKernelSubGroupInfo.

  • ​为clGetKernelSubGroupInfo添加了几个缺失的错误条件。

  • Clarified the expected return value for the of CL_IMAGE_ROW_PITCH and CL_IMAGE_SLICE_PITCH queries.

  • ​阐明了CL_IMAGE_ROW_PITCH和CL_IMAGE_SLICE_PITCH查询的预期返回值。

  • Updated descriptions of the extended async copies functions to remove references to nonexistent function arguments.

  • 更新了扩展异步复制函数的描述,以删除对不存在的函数参数的引用。

  • Clarified that the extended versioning extension is a core OpenCL 3.0 feature.

  • 明确了扩展版本控制扩展是OpenCL 3.0的核心功能。

  • Clarified sub-group clustered reduction behavior when the cluster size is not an integer constant or a power of two.

  • 阐明了当簇大小不是整数常数或2的幂时的子组簇缩减行为。

  • Added new extensions:
    新增扩展:

Changes from v3.0.11:

与v3.0.11相比的更改:

  • Added a definition for a valid object and requirements for testing for valid objects.

  • 添加了有效对象的定义和测试有效对象的要求。

  • Added a maximum limit for the number of arguments supported by a kernel.

  • 为内核支持的参数数量添加了最大限制。

  • Clarified requirements for comparability and uniqueness of object handles.

  • 明确了对象句柄的可比性和唯一性要求。

  • Clarified behavior for invalid device-side enqueue clk_event_t handles.

  • 阐明了无效设备端排队clk_event_t句柄的行为。

  • Clarified cl_khr_command_buffer interactions with other extensions.

  • ​澄清了cl_khr_command_buffer与其他扩展的交互。

  • Specified error behavior when a command buffer is finalized multiple times.

  • 多次完成命令缓冲区时指定的错误行为。

  • Added new extension:
    新增扩展名:

Changes from v3.0.12:

与v3.0.12相比的更改:

  • Fixed the accuracy requirements description for half-precision math functions (those prefixed by half_).

  • 修复了半精度数学函数(前缀为half_)的精度要求描述。

  • Clarified that the semaphore type must always be provided when creating a semaphore.

  • 阐明了在创建信号量时必须始终提供信号量类型。

  • Removed an unnecessary and contradictory error condition when creating a semaphore.

  • 在创建信号量时,删除了一个不必要且相互矛盾的错误条件。

  • Added an issue regarding non-linear image import to the cl_khr_external_memory extension.

  • ​在cl_khr_external_memory扩展中添加了一个关于非线性图像导入的问题。

  • Added missing calls to clBuildProgram to the cl_khr_command_buffer and cl_khr_command_buffer_mutable_dispatch sample code.

  • ​在cl_khr_command_buffer和cl_khr_command_buffer_mutable_dispatch示例代码中添加了对clBuildProgram的缺失调用。

  • Fixed a copy-paste error in the extensions quick reference appendix.

  • 修复了扩展快速参考附录中的复制粘贴错误。

  • Fixed typos and improved formatting consistency in the extensions spec.

  • 修复了扩展规范中的拼写错误,提高了格式一致性。

Changes from v3.0.13:

与v3.0.13相比的更改:

  • Corrected the precision for cross and dot to be based on HALF_EPSILON in cl_khr_fp16, see #893.

  • ​更正了cl_khr_fp16中基于HALF_EPSILON的交叉和点的精度,见#893。

  • Added a context query for command-buffers to cl_khr_command_buffer, see #899.

  • ​在cl_khr_command_buffer中添加了命令缓冲区的上下文查询,请参阅#899。

  • Updated the semaphore wait and signal rules for binary semaphores in cl_khr_semaphore, see #882.

  • ​更新了cl_khr_maphore中二进制信号量的信号量等待和信号规则,请参阅#882。

  • Removed redundant error conditions from cl_khr_external_semaphore and cl_khr_external_memory, see #903 and #904.

  • ​从cl_khr_external_maphore和cl_khr_external_memory中删除了冗余错误条件,请参阅#903和#904。

  • Added new extension:
    新增扩展名:

Changes from v3.0.14:

与v3.0.14相比的更改:

  • Clarified which error code should be returned when calling clCreateBuffer with a pointer to an SVM allocation that is too small, see #879.

  • ​澄清了当使用指向太小SVM分配的指针调用clCreateBuffer时应返回的错误代码,请参阅#879。

  • Improved capitalization and hyphenation consistency throughout the specs, see #902.

  • ​在整个规范中提高了大写和连字符的一致性,请参阅#902。

  • Clarified that SVM is optional for all OpenCL 3.0 devices, see #913.

  • ​已明确SVM对所有OpenCL 3.0设备都是可选的,请参阅#913。

  • Clarified that clSetCommandQueueProperty is only required for OpenCL 1.0 devices and may return an error otherwise, see #980.

  • ​澄清了clSetCommandQueueProperty仅对OpenCL 1.0设备是必需的,否则可能会返回错误,请参阅#980。

  • Clarified that the application must ensure the free function passed to clEnqueueSVMFree is thread safe, see #1016.

  • ​澄清了应用程序必须确保传递给clEnqueueSVMFree的free函数是线程安全的,请参阅#1016。

  • Clarified that the application must ensure the user function passed to clEnqueueNativeKernel is thread safe, see #1026.

  • ​澄清了应用程序必须确保传递给clEnqueueNativeKernel的用户函数是线程安全的,请参阅#1026。

  • cl_khr_command_buffer (provisional):

    • Removed the "invalid" command buffer state, see #885.

    • ​删除了“无效”命令缓冲区状态,请参阅#885。

    • Added support for recording SVM memory copies and memory fills in a command buffer, see #915.

    • ​添加了对记录SVM内存副本和命令缓冲区内存填充的支持,请参阅#915。

  • cl_khr_command_buffer_multi_device (provisional):

    • Clarified that the sync devices query should only return root devices, see #925.

    • ​已明确同步设备查询应仅返回根设备,请参阅#925。

  • cl_khr_external_memory (provisional):

    • Disallowed specifying a device handle list without also specifying an external memory handle, see #922.

    • ​不允许在不指定外部内存句柄的情况下指定设备句柄列表,请参阅#922。

    • Added a query to determine the handle types an implementation will assume have a linear memory layout, see #940.

    • ​添加了一个查询,以确定实现将假设具有线性内存布局的句柄类型,请参阅#940。

    • Added an external memory-specific device handle list enum, see #956.

    • ​添加了一个特定于外部内存的设备句柄列表枚举,请参阅#956。

    • Clarified that implementations may acquire information about an image from an external memory handle when the image is created, see #970.

    • ​澄清了当创建图像时,实现可以从外部存储器句柄获取有关图像的信息,请参阅#970。

  • cl_khr_external_semaphore (provisional):

    • Added the ability to re-import "sync fd" handles into an existing semaphore, see #939.

    • ​添加了将“sync fd”句柄重新导入现有信号量的能力,请参阅#939。

    • Clarified that a semaphore may only export one handle type, and that a semaphore created from an external handle cannot also export a handle, see #975.

    • ​澄清了信号量只能导出一个句柄类型,并且从外部句柄创建的信号量也不能导出句柄,请参阅#975。

    • Clarified that cl_khr_external_semaphore requires support for cl_khr_semaphore, see #976.

    • ​澄清了cl_khr_external_maphore需要对cl_khr_maphore的支持,请参阅#976。

    • Added a query to determine if a semaphore may export an external handle, see #997.

    • ​添加了一个查询来确定信号量是否可以导出外部句柄,请参阅#997。

  • cl_khr_semaphore (provisional):

    • Added an semaphore-specific device handle list enum, see #956.

    • ​添加了一个特定于信号量的设备句柄列表枚举,请参阅#956。

    • Restricted semaphores to a single associated device, see #996.

    • ​将信号量限制在单个相关设备上,请参阅#996。

  • cl_khr_subgroup_rotate:

    • Clarified that only rotating within a subgroup is supported, see #967.

    • ​澄清了只支持在子组内旋转,请参阅#967。

Changes from v3.0.15:

与v3.0.15相比的更改:

Changes from v3.0.16:

与v3.0.16相比的更改:

  • Clarified the definition of command prerequisites, see #923.

  • ​澄清了命令先决条件的定义,请参阅#923。

  • Clarified the behavior of CL_DEVICE_TYPE_DEFAULT and CL_DEVICE_TYPE_ALL for custom devices, see #1117.

  • ​澄清了自定义设备的CL_DEVICE_TYPE_DEFAULT和CL_DEVICE_TYPE_ALL的行为,请参阅#1117。

  • Clarified how CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES behaves for devices that do not support CL_DEVICE_SVM_ATOMICS, see #1171.

  • ​阐明了CL_DEVICE_ATOMIC_SCOPE_ALL_DEVICES对不支持CL_DEVICE_SVM_ATOMICS的设备的行为,请参阅#1171。

  • Fixed links to extension API functions, see #1179.

  • ​修复了扩展API函数的链接,请参见#1179。

  • Further clarified an error condition for clCreateBuffer with CL_MEM_COPY_HOST_PTR and an SVM pointer that is too small, see #1189.

  • ​使用CL_MEM_COPY_HOST_PTR和太小的SVM指针进一步澄清了clCreateBuffer的错误条件,请参阅#1189。

  • Fixed a minor typo in the clCreateProgramWithSource introduction, see #1204.

  • ​修复了clCreateProgramWithSource介绍中的一个小拼写错误,请参阅#1204。

  • Clarified how to properly use and modify OpenCL objects across multiple command-queues, see #1243.

  • ​阐明了如何在多个命令队列中正确使用和修改OpenCL对象,请参阅#1243。

  • Clarified and corrected many parts of clSetKernelExecInfo, see #1245.

  • ​澄清并更正了clSetKernelExecInfo的许多部分,请参阅#1245。

  • Improved wording consistency for param_value_size parameters, see #1254.

  • ​改进了param_value_size参数的措辞一致性,请参阅#1254。

  • Clarified the meaning of num_mip_levels in cl_image_desc, see #1255 and #1272.

  • ​澄清了cl_image_desc中num_mip_levels的含义,见#1255和#1272。

  • Clarified that functionality will never be removed in minor OpenCL specification revisions, see #1265.

  • ​澄清了在OpenCL规范的次要修订中永远不会删除功能,请参阅#1265。

  • Clarified that the minimum value for CL_DEVICE_HALF_FP_CONFIG applies to all OpenCL versions, see #1273.

  • ​澄清了CL_DEVICE_HALF_FP_CONFIG的最小值适用于所有OpenCL版本,请参阅#1273。

  • cl_khr_command_buffer (provisional):

    • Added multi-device wording to clCommandBarrierWithWaitListKHR, see #1146.

    • ​在clCommandBarrierWithWaitListKHR中添加了多设备措辞,请参阅#1146。

    • Fixed CL_INVALID_CONTEXT command-buffer error definitions, see #1149.

    • ​修复了CL_INVALID_CONTEXT命令缓冲区错误定义,请参阅#1149。

    • Added a properties parameter to all command-buffer commands to improve extensibility, see #1215.

    • ​为所有命令缓冲区命令添加了属性参数以提高可扩展性,请参阅#1215。

  • cl_khr_command_buffer_mutable_dispatch (provisional):

    • Modified the extension to pass update configs as arrays, rather than linked lists, see #1045.

    • ​修改了扩展名,将更新配置作为数组而不是链表传递,请参阅#1045。

  • cl_khr_external_memory:

    • Clarified acquire and release behavior, see #1176.

    • ​澄清了获取和释放行为,见#1176。

    • Added a mechanism to import NT handles by name, see #1177.

    • ​添加了一种按名称导入NT句柄的机制,请参阅#1177。

    • Documented which error condition should be returned when attempting to create a memory object with more than one external handle, see #1249.

    • ​记录了尝试创建具有多个外部句柄的内存对象时应返回的错误条件,请参阅#1249。

  • cl_khr_external_semaphore:

    • Added a mechanism to import NT handles by name, see #1177.

    • ​添加了一种按名称导入NT句柄的机制,请参阅#1177。

    • Fixed a typo in the description of clGetSemaphoreHandleForTypeKHR, see #1220.

    • ​修复了clGetSemaphoreHandleForTypeKHR描述中的拼写错误,请参阅#1220。

    • Clarified that there are no implicit dependencies when waiting on or signaling semaphores using out-of-order queues, see #1231.

    • ​澄清了使用乱序队列等待或发送信号量时没有隐式依赖关系,请参阅#1231。

    • Documented which error condition should be returned when attempting to create a semaphore with more than one external handle, see #1249.

    • ​记录了在尝试创建具有多个外部句柄的信号量时应返回的错误条件,请参阅#1249。

    • Unified the CL_INVALID_COMMAND_QUEUE behavior for semaphore signals and waits, see #1256.

    • ​统一信号量信号和等待的CL_INVALID_COMMAND_QUEUE行为,请参阅#1256。

    • Clarified that clGetSemaphoreHandleForTypeKHR is part of cl_khr_external_semaphore and not cl_khr_external_semaphore_sync_fd, see #1257.

    • ​澄清了clGetSemaphoreHandleForTypeKHR是cl_khr_external_semaphore的一部分,而不是cl_khr_external_semaphore_sync_fd,见#1257。

  • cl_khr_external_semaphore_sync_fd:

    • Fixed typos in the description of clReImportSemaphoreSyncFdKHR, see #1208.

    • ​修复了clReImportSemaphoreSyncFdKHR描述中的拼写错误,请参阅#1208。

    • Clarified which re-import properties are accepted by clReImportSemaphoreSyncFdKHR, see #1219.

    • ​澄清了clReImportSemaphoreSyncFdKHR接受哪些重新导入属性,请参阅#1219。

  • cl_khr_semaphore:

    • Clarified external semaphore behavior, removing references to permanence, see #938.

    • ​澄清了外部信号量行为,删除了对永久性的引用,见#938。

  • Removed provisional extensions due to lack of implementations and tests, see #1160.

    由于缺乏实现和测试,删除了临时扩展,请参阅#1160。

    • cl_khr_external_semaphore_dx_fence (provisional)

    • cl_khr_external_memory_dx (provisional)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值