/*******************************************************************************
* Copyright (c) 2008-2023 The Khronos Group Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
#ifndef OPENCL_CL_EXT_H_
#define OPENCL_CL_EXT_H_
/*
** This header is generated from the Khronos OpenCL XML API Registry.
*/
#include <CL/cl.h>
/* CL_NO_PROTOTYPES implies CL_NO_EXTENSION_PROTOTYPES: */
#if defined(CL_NO_PROTOTYPES) && !defined(CL_NO_EXTENSION_PROTOTYPES)
#define CL_NO_EXTENSION_PROTOTYPES
#endif
/* CL_NO_EXTENSION_PROTOTYPES implies
CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES and
CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES: */
#if defined(CL_NO_EXTENSION_PROTOTYPES) && \
!defined(CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES)
#define CL_NO_ICD_DISPATCH_EXTENSION_PROTOTYPES
#endif
#if defined(CL_NO_EXTENSION_PROTOTYPES) && \
!defined(CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES)
#define CL_NO_NON_ICD_DISPATCH_EXTENSION_PROTOTYPES
#endif
#ifdef __cplusplus
extern "C" {
#endif
/***************************************************************
* cl_khr_command_buffer
***************************************************************/
#define cl_khr_command_buffer 1
#define CL_KHR_COMMAND_BUFFER_EXTENSION_NAME \
"cl_khr_command_buffer"
typedef cl_bitfield cl_device_command_buffer_capabilities_khr;
typedef struct _cl_command_buffer_khr* cl_command_buffer_khr;
typedef cl_uint cl_sync_point_khr;
typedef cl_uint cl_command_buffer_info_khr;
typedef cl_uint cl_command_buffer_state_khr;
typedef cl_properties cl_command_buffer_properties_khr;
typedef cl_bitfield cl_command_buffer_flags_khr;
typedef cl_properties cl_ndrange_kernel_command_properties_khr;
typedef struct _cl_mutable_command_khr* cl_mutable_command_khr;
/* cl_device_info */
#define CL_DEVICE_COMMAND_BUFFER_CAPABILITIES_KHR 0x12A9
#define CL_DEVICE_COMMAND_BUFFER_REQUIRED_QUEUE_PROPERTIES_KHR 0x12AA
/* cl_device_command_buffer_capabilities_khr - bitfield */
#define CL_COMMAND_BUFFER_CAPABILITY_KERNEL_PRINTF_KHR (1 << 0)
#define CL_COMMAND_BUFFER_CAPABILITY_DEVICE_SIDE_ENQUEUE_KHR (1 << 1)
#define CL_COMMAND_BUFFER_CAPABILITY_SIMULTANEOUS_USE_KHR (1 << 2)
#define CL_COMMAND_BUFFER_CAPABILITY_OUT_OF_ORDER_KHR (1 << 3)
/* cl_command_buffer_properties_khr */
#define CL_COMMAND_BUFFER_FLAGS_KHR 0x1293
/* cl_command_buffer_flags_khr - bitfield */
#define CL_COMMAND_BUFFER_SIMULTANEOUS_USE_KHR (1 << 0)
/* Error codes */
#define CL_INVALID_COMMAND_BUFFER_KHR -1138
#define CL_INVALID_SYNC_POINT_WAIT_LIST_KHR -1139
#define CL_INCOMPATIBLE_COMMAND_QUEUE_KHR -1140
/* cl_command_buffer_info_khr */
#define CL_COMMAND_BUFFER_QUEUES_KHR 0x1294
#define CL_COMMAND_BUFFER_NUM_QUEUES_KHR 0x1295
#define CL_COMMAND_BUFFER_REFERENCE_COUNT_KHR 0x1296
#define CL_COMMAND_BUFFER_STATE_KHR 0x1297
#define CL_COMMAND_BUFFER_PROPERTIES_ARRAY_KHR 0x1298
#define CL_COMMAND_BUFFER_CONTEXT_KHR 0x1299
/* cl_command_buffer_state_khr */
#define CL_COMMAND_BUFFER_STATE_RECORDING_KHR 0
#define CL_COMMAND_BUFFER_STATE_EXECUTABLE_KHR 1
#define CL_COMMAND_BUFFER_STATE_PENDING_KHR 2
#define CL_COMMAND_BUFFER_STATE_INVALID_KHR 3
/* cl_command_type */
#define CL_COMMAND_COMMAND_BUFFER_KHR 0x12A8
typedef cl_command_buffer_khr (CL_API_CALL *
clCreateCommandBufferKHR_fn)(
cl_uint num_queues,
const cl_command_queue* queues,
const cl_command_buffer_properties_khr* properties,
cl_int* errcode_ret) ;
typedef cl_int (CL_API_CALL *
clFinalizeCommandBufferKHR_fn)(
cl_command_buffer_khr command_buffer) ;
typedef cl_int (CL_API_CALL *
clRetainCommandBufferKHR_fn)(
cl_command_buffer_khr command_buffer) ;
typedef cl_int (CL_API_CALL *
clReleaseCommandBufferKHR_fn)(
cl_command_buffer_khr command_buffer) ;
typedef cl_int (CL_API_CALL *
clEnqueueCommandBufferKHR_fn)(
cl_uint num_queues,
cl_command_queue* queues,
cl_command_buffer_khr command_buffer,
cl_uint num_events_in_wait_list,
const cl_event* event_wait_list,
cl_event* event) ;
typedef cl_int (CL_API_CALL *
clCommandBarrierWithWaitListKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_uint num_sync_points_in_wait_list,
const cl_sync_point_khr* sync_point_wait_list,
cl_sync_point_khr* sync_point,
cl_mutable_command_khr* mutable_handle) ;
typedef cl_int (CL_API_CALL *
clCommandCopyBufferKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_mem src_buffer,
cl_mem dst_buffer,
size_t src_offset,
size_t dst_offset,
size_t size,
cl_uint num_sync_points_in_wait_list,
const cl_sync_point_khr* sync_point_wait_list,
cl_sync_point_khr* sync_point,
cl_mutable_command_khr* mutable_handle) ;
typedef cl_int (CL_API_CALL *
clCommandCopyBufferRectKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_mem src_buffer,
cl_mem dst_buffer,
const size_t* src_origin,
const size_t* dst_origin,
const size_t* region,
size_t src_row_pitch,
size_t src_slice_pitch,
size_t dst_row_pitch,
size_t dst_slice_pitch,
cl_uint num_sync_points_in_wait_list,
const cl_sync_point_khr* sync_point_wait_list,
cl_sync_point_khr* sync_point,
cl_mutable_command_khr* mutable_handle) ;
typedef cl_int (CL_API_CALL *
clCommandCopyBufferToImageKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_mem src_buffer,
cl_mem dst_image,
size_t src_offset,
const size_t* dst_origin,
const size_t* region,
cl_uint num_sync_points_in_wait_list,
const cl_sync_point_khr* sync_point_wait_list,
cl_sync_point_khr* sync_point,
cl_mutable_command_khr* mutable_handle) ;
typedef cl_int (CL_API_CALL *
clCommandCopyImageKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_mem src_image,
cl_mem dst_image,
const size_t* src_origin,
const size_t* dst_origin,
const size_t* region,
cl_uint num_sync_points_in_wait_list,
const cl_sync_point_khr* sync_point_wait_list,
cl_sync_point_khr* sync_point,
cl_mutable_command_khr* mutable_handle) ;
typedef cl_int (CL_API_CALL *
clCommandCopyImageToBufferKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_mem src_image,
cl_mem dst_buffer,
const size_t* src_origin,
const size_t* region,
size_t dst_offset,
cl_uint num_sync_points_in_wait_list,
const cl_sync_point_khr* sync_point_wait_list,
cl_sync_point_khr* sync_point,
cl_mutable_command_khr* mutable_handle) ;
typedef cl_int (CL_API_CALL *
clCommandFillBufferKHR_fn)(
cl_command_buffer_khr command_buffer,
cl_command_queue command_queue,
cl_mem buffer,
const void* pattern,
size_t pattern_size,
size_t offset,
size
OpenCL学习笔记(三)手动编译开发库(win10+mingw64)


OpenCL,全称为Open Computing Language,是AMD公司推出的一种开放标准,用于实现跨平台的并行计算。这个标准被广泛应用于GPU(图形处理器)、CPU和其他类型的硬件,如FPGA和ASIC,以加速科学计算、图像处理、机器学习等多个领域。在本篇OpenCL学习笔记中,我们将关注如何在Windows 10环境下,使用MinGW64编译OpenCL开发库。 我们需要了解MinGW64。MinGW64是一个针对Windows平台的开源GCC(GNU Compiler Collection)移植项目,它提供了与Microsoft Visual Studio类似的开发环境,但使用的是GCC编译器。对于那些习惯于Linux或Unix开发环境的开发者来说,MinGW64提供了一种在Windows上使用命令行编译工具的途径。 手动编译OpenCL开发库的过程通常包括以下步骤: 1. **下载依赖**: 你需要下载OpenCL的源代码,这通常可以从官方或者第三方镜像站点获取。同时,确保安装了MinGW64及其相关工具链,比如mingw-w64-x86_64-gcc等编译工具。 2. **配置环境**: 设置好环境变量,确保编译器可以找到必要的头文件和库文件。这通常通过修改系统环境变量PATH来实现。 3. **编译源码**: 打开命令行终端,进入OpenCL源代码目录。然后,使用`configure`脚本来配置构建过程,这一步可能会因源代码的打包方式而异。如果没有`configure`脚本,可能需要手动设置Makefile或使用CMake等构建工具。 4. **执行make命令**: 在配置完成后,运行`make`命令开始编译。编译过程中可能会遇到一些依赖问题,需要根据错误信息安装相应的库。 5. **解决依赖**: 如果在编译过程中遇到找不到特定库的问题,可能需要手动下载并编译这些依赖库。例如,OpenCL可能依赖于如OpenCL-Headers、ocl-icd等开源项目。 6. **安装库文件**: 编译成功后,将生成的库文件(通常是`.dll`动态链接库和`.lib`静态链接库)复制到系统目录或应用程序的相应位置,以便在运行时能够找到。 7. **测试编译结果**: 编写一个简单的OpenCL程序,例如“Hello World”级别的示例,以验证编译的OpenCL库是否正常工作。 在"install"这个文件中,很可能包含了编译完成后生成的库文件以及安装指南。通常,`install`目录下会有`bin`、`lib`和`include`等子目录,分别存放可执行文件、库文件和头文件。确保将这些文件正确地安装到系统或项目环境中,以便后续的OpenCL编程。 在Windows 10环境下手动编译OpenCL库,虽然相比预编译的二进制库来说过程较为繁琐,但它能让你更好地理解OpenCL的工作原理,同时也为定制化和优化提供了可能。对于开发者来说,这是一次宝贵的学习和实践机会。通过这个过程,你可以了解编译系统的运作,以及如何解决依赖和配置问题,这对于提升你的软件工程技能大有裨益。









































































































- 1

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 915
- 资源: 204
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 好用的shell工具,FinalShell
- [Windows Server 2016系统管理与网络管理]唐华[电子课件PPT]
- 《Flash CS6动画制作(第3版)》PPT课件
- 《Java 程序设计基础》PPT
- 无人驾驶领域中基于视觉与深度学习的开源项目汇总及应用
- 《Java 程序设计基础》代码
- 一个完全用 c# 开发,小巧可用的 PS1 模拟器
- 《虚拟现实应用开发教程(高级)》-电子教案-教学指南
- (Intel芯片)苹果电脑Mac下最好用的反编译三件套,包括apktool、dex2jar、jd-gui
- 适用于华为笔记本MateBook D(2017款)的电脑管家
- 无感电机控制中高频注入与DQ轴位置估算的全开源代码及其实现
- 《虚拟现实应用开发教程(中级)》-电子教案-教学指南
- mobaxterm 下载、安装、使用
- 3D打印制造PPT课件
- 3D打印制造-电子教案-教学指南
- Altium Designer 14原理图与PCB设计教程PPT


