驱动开发系列73 - clEnqueueNDRangeKernel实现

目录

一:API介绍

        1. 参数解释:

        2. 举例:

二:API实现步骤

        1. 获取执行上下文:

        2. 检查设备内存使用量:

        3. 检查命令队列的有效性:

        4. 检查kernel是否有效:

        5. 检查命令队列是否允许kernel入队:

        6. 检查kernel的所有参数是否已正确设置:

        7. 检查工作组和工作项大小:

        8. 计算kernel中所需的系数寄存器:

        9. 检查kernel提交是否需要阻塞:

        10: 对图像进行解压和de-twiddle:

        11. 为kernel创建执行命令

        12: 为kernel分配内存:

        13: kernel执行:

一:API介绍

        clEnqueueNDRangeKernel 是OpenCL 的核心API,用于在设备(GPU/CPU/FPGA等)上提交一个 kernel 来执行。它会将 kernel 放入命令队列,等待设备调度执行,并设置kernel被调用多少次(由 global_work_size决定),以及设置如何划线程块(local_work_size决定),支持1D/2D/3D数据。

cl_int clEnqueueNDRangeKernel(
    cl_command_queue command_queue,  // 命令队列
    cl_kernel kernel,                // 要执行的kernel对象
    cl_uint work_dim,                // 维度:1D / 2D / 3D
    const size_t *global_work_offset,// 全局偏移(一般为NULL)
    const size_t *global_work_size,  // 全局工作项数量
    const size_t *local_work_size,   // 局部工作组大小
    cl_uint num_events_in_wait_list,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑不溜秋的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值