clEnqueueNDRangeKernel 参数说明

2023-12-01 10:58

本文主要是介绍clEnqueueNDRangeKernel 参数说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenCL编程中的一个核心函数是clEnqueueNDRangeKernel,对于此函数的理解,有利于对数据在host和device之间的传递进行控制。

clEnqueueNDRangeKernel(

cl_command_queue queue,

cl_kernel kernel,

cl_uint work_dims,

const size_t *global_work_offset,

const size_t *global_work_size, 

const size_t *local_work_size,

cl_uint num_events,

const cl_event *wait_list,

cl_event *event)

对于参数queue和kernel与clEnqueueTask中的一样,重点是work_dims和global_work_offset、global_work_size、local_work_size这四个新增参数的意义。

(1)work_dims:the number of dimensions in the data ( if you deal with image object, you should probably set work_dims equal 2 or 3. But for buffer objects, you can set whatever dimensionality you think best. For a buffer object containing a two-dimensional matrix, you might set work-dims equal 2.)

(2)global_work_offset:the global ID offset in each dimension 

(3)global_work_size:the number of work items in each dimension  (the global_work_size argument of clEnqueueNDRangeKernel identifies how many work-items need to be processed for each dimension. )

(4)local_work_size:the number of work_items in a work_group,in each dimension  (local_work_size less than the global_work_size)

可以通过下面的例子来说明各个参数的具体应用:

size_t dim=2;

size_t global_offset[]={3,5};

size_t global_size[]={6,4};

size_t local_size[]={3,2};

clEnqueueNDRangeKernel(queue,kernel,dim,global_offset,global_size,local_size,0,NULL,NULL);

对于上面的参数我们可以通过以下子函数在kernel里获取这些数据:

uint get_work_dim():returns the number of dimensions in the kernel's index space

size_t get_global_size(uint dim): returns the number of work items for a given dimension

size_t get_global_id(uint dim):returns the element of the work-dim's global ID for a given dimension

size_t get_global_offset(uint dim):returns the initial offset used to compute global IDs


size_t get_num_groups(uint dim): returns the number of work-groups for a given dimension

size_t get_group_id(uint dim):returns the ID of the work-item's work-group for a given dimension

size_t get_local_id(uint dim): returns the ID of the work-item within its work-group for a given dimension

size_t get_local_size(uint dim): return the number of work-items in the work-group for a given dimension


那么我们可以到如下数据:

uint dim=get_work_dim();//dim=2

size_t global_id_0=get_global_id(0);//从参数global_offset(3,5)第一个参数3开始,个数为global_size(6,4)的第一参数6

size_t global_id_1=get_global_id(1);//从参数global_offset(3,5)第二个参数5开始,个数为global_size(6,4)的第二个参数4

size_t global_size_0=get_global_size(0);//大小为global_size(6,4)的第一个参数6

size_t global_size_1=get_global_size(1);//大小为global_size(6,4)的第二个参数4

size_t offset_0=get_global_offset(0);//获取global_offset(3,5)的第一个参数3,

size_t offset_1=get_global_offset(1);//获取global_offset(3,5)的第二个参数5

size_t local_id_0=get_local_id(0);//获取local_size(3,2)的第一个参数个数(0,1,2)

size_t local_id_1=get_local_id(1);//获取local_size(3,2)的第二个参数个数(0,1)

这篇关于clEnqueueNDRangeKernel 参数说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/440893

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

4B参数秒杀GPT-3.5:MiniCPM 3.0惊艳登场!

​ 面壁智能 在 AI 的世界里,总有那么几个时刻让人惊叹不已。面壁智能推出的 MiniCPM 3.0,这个仅有4B参数的"小钢炮",正在以惊人的实力挑战着 GPT-3.5 这个曾经的AI巨人。 MiniCPM 3.0 MiniCPM 3.0 MiniCPM 3.0 目前的主要功能有: 长上下文功能:原生支持 32k 上下文长度,性能完美。我们引入了

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目