OpenCL-学习教程(二)

2023-11-13

      经过两天的摸爬滚打,基本上了解了opencl的并行处理的原理和内部调用机制,也上手写代码调试了几个工程。总体感觉opencl会比cuda比起来更复杂一些,但不得不说,平台的兼容性更好,而且调试应该方便些(虽然我的VS调试配置环境始终有问题)。

      opencl线程调度方面,注意一下几个方面:

kernel:是指一个用opencl c语言编写的、代表一个单一执行实例的代码单元。opencl c语言看起来跟C语言函数非常相像,都有一个参数列表“局部”变量定义和标准控制流结构。opencl术语中把这种kernel实例称为work-item(工作项)。但opencl kernel与c语方函数的区别在于其并行语义。

 

work_item:是定义在一个很大的并行执行空间中的一小部分。是并行操作中每一部分的实例化。通俗来说,可以理解为kernel里定义的执行函数。当kernel启动后会创建大量work_item来同时执行,以完成并行任务。work_item根所其数据结构大小可分为一维、二维和三维数据。work_item之是的运行是相互独立的,不同步的。

 

work_group:opencl将全局执行空间划分为大量大小相等的,一维、二维、三维的work_item集合,这个集合就是work_group。在work_group内部,各个work_item之间允许一定程度的通信。而有work_group保证并发执行来允许其内部的work_item之间的本地同步。

 

在实际编写内核中,要了解线程调度的维度数,work_group的大小是很重要的,这有利于我们优化编写的内核程序。opencl提供了一此非常有用的函数供我们调用(在内核中调用)。

uint get_work_dim() : 返回线程调度的维度数。

uint get_global_size(uint dimension) : 返回在所请求维度上work_item的总数。

uint get_global_id(uint dimension) : 返回在所请求的维度上当前work_item在全局空间中的索引。

uint get_local_size(uint dimension) : 返回在所请求的维度上work-group的大小。

uint get_local_id(uint dimension) : 返回在所请求的维度上,当前work_item在work_group中的索引。

uint get_number_groups(uint dimension) : 返回在所请求维度上work-group的数目,这个值等于get_global_size 除以 get_local_size。

uint get_group_id(uint dimension) : 返回在所请求的维度上当前wrok_group在全局空间中的索引。

转自:https://www.cnblogs.com/biglucky/p/3755189.html

另外,博主Magnum Programm Life的opencl系类入门文章写的很好,可以借鉴学习:

https://www.cnblogs.com/biglucky/category/580555.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCL-学习教程(二) 的相关文章

  • linux下的vsftpd的db_load命令

    db load是linux下创建虚拟账户 选项 T允许应用程序能够将文本文件转译载入进数据库 由于我们之后是将虚拟用户的信息以文件方式存储在文件里的 为了让Vsftpd这个应用程序能够通过文本来载入用户数据 必须要使用这个选项 指定了选项
  • 第十六篇

    Ln Linux ln 英文全拼 link files 命令是一个非常重要命令 它的功能是为某一个文件在另外一个位置建立一个同步的链接 当我们需要在不同的目录 用到相同的文件时 我们不需要在每一个需要的目录下都放一个必须相同的文件 我们只要
  • 【无人机】采用最基本的自由空间路损模型并且不考虑小尺度衰落(多径多普勒)固定翼无人机轨迹规划(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 文献结果 2 2 Matlab代码复现结果 3 参考文献 4 Matlab代码及文章
  • SQLServer帐号管理

    1 用户的创建 如图所示 右击 登录名 选中新建登录名 2 如何创建数据库用户 在数据库的下面 创建用户名 同时通过 浏览 按钮 关联想要授权的登录账号 3 给用户分配权限 注意 此处是给需要分配权限的数据库中的用户 进行安全对象的管理 例
  • 联想笔记本Ideapad300S-14ISK安装固态硬盘和win10

    1 拆机 把背面的螺丝钉拧开 拿个卡找个缝插进去转一圈就打开了 2 内存 先把电源排线拔掉 排线旁边有标识 和 内存条外面盖着一个金属壳 把四周的小固定扣压下去就能打开 内存条型号DDR3L 买了个DDR4才发现插不进去 3 固态硬盘 把机
  • visio使用技巧

    出处 blog作者 卡纳瓦罗 里面的东西主要是看了吕贤聪的 visio2003视频教程 后总结的一些技巧 还有平时应用visio时的一些心得 1 鼠标按住尺规的边缘往外拉 会拉出一条绘图辅助线 帮助绘图 精确定位 按del键就会消失 而且选
  • 多线程与同步代码块详解

    线程是程序执行的一条路径 一个进程中可以包含多条线程 多线程并发执行可以提高程序的效率 可以同时完成多项工作 多线程并发执行的实质就是CPU在做着高速的切换 多线程的应用场景 红蜘蛛同时共享屏幕给多个电脑 迅雷开启多条线程一起下载 QQ同时
  • 微芯I/O控制器瞄准工业与嵌入式运算应用

    微芯科技 Microchip Technology 日前发布SCH322X系列I O控制器新品 该系列产品基于工业及嵌入式开发工程师的需求而开发 功能丰富且具高灵活性 新一代I O控制器系列拥有尺寸更小的包装和更长的产品生命周期 可运用于更
  • caj转pdf

    https caj2pdf cn
  • 关于不同浏览器的内核与引擎--记录一下

    https www cnblogs com gdutbean archive 2012 02 21 2362003 html https www cnblogs com guanghe p 11719334 html js引擎介绍 几种JS
  • Docker: 改变容器化世界的革命性技术

    目录 1 1什么是虚拟化 1 2什么是Docker 1 3容器与虚拟机的比较 1 4Docker组建 2 Docker安装 2 2设置ustc的镜像 2 3Docker的启动与停止 3 docker常用命令 3 1镜像 3 2容器相关命令
  • Dockerfile参数详解

    FROM 功能为指定基础镜像 并且必须是第一条指令 如果不以任何镜像为基础 那么写法为 FROM scratch 同时意味着接下来所写的指令将作为镜像的第一层开始 语法 FROM
  • discuz 手机版伪静态

    前两天发布的这篇文章发现内容与实际情况不太相符特来更改 请多多包涵 网上有些现成的插件 价格却并不亲民 一个简简单单的伪静态插件居然标价三百 我也是醉了 我就在想 伪静态翻来覆去不就那么点东西吗 你能做我就做不了啦 在此帮各位仍有相同需求的
  • BP神经网络基本介绍

    1 主要解决的是什么问题 预测类 聚类分析 2 原理 思路是啥 什么是人工神经网络 ANN 模拟大脑对信号处理的一种算法 基本原理介绍 权关系是具体不清楚他们之间的关系 并未给出准确的对应关系 只是假设他们之间的关系可以用一组权来表示 阈值
  • 企业DevOps:实施过程中需要关注的各项要点

    作者 亚马逊云科技企业市场战略总监 Stephen Orban 经验并非凭空创造 而是依靠点滴积累所实现 阿尔贝 加缪 在此次的企业DevOps探索之旅系列文章当中 我将带大家一同探讨企业在具备一定DevOps经验之后又该如何处理下一步可能
  • BlockingQueue、ArrayBlockingQueue、LinkedBlockingQueue原理分析

    阻塞队列与非阻塞队 阻塞队列与普通队列的区别在于 当队列是空的时 从队列中获取元素的操作将会被阻塞 或者当队列是满时 往队列里添加元素的操作会被阻塞 试图从空的阻塞队列中获取元素的线程将会被阻塞 直到其他的线程往空的队列插入新的元素 同样
  • MySQL数据库定时备份脚本

    bin bash 定义备份用户 密码 DbUser root DbPasswd NTQ12377 定义备份数据库 DbName zabbix jumpserver openfire n9e n9e v5 ibex 定义备份目录 Path d
  • 手把手带你编写微信公众号

    这是一个简单的项目 简单编写微信公众号 扫码关注 关注 即可提高学习效率 Peace 实时查询城市天气 回复 美女视频网站 观看美女视频 不定时推送小姐姐视频和图片合集 Docker线上部署SpringBoot 如果您不知道如何开始编写的话
  • ajax中设置contentType: “application/json”的作用

    最近在做项目交互的时候 刚开始向后台传递数据返回415 后来百度添加了 contentType application json 之后返回400 然后把传输的数据格式改为json字符串就传输成功了 现在我们来看看 contentType a

随机推荐

  • Keras-训练网络时的问题:loss一直为nan,accuracy一直为一个固定的数

    目录 问题描述 问题的解决 调整学习率后解决问题 其他可能导致此问题的原因 1 2 3 4 关于如何选择学习率 问题描述 在使用VGG19做分类任务时 遇到一个问题 loss一直为nan accuracy一直为一个固定的数 如下输出所示 即
  • ESP32-C3入门教程 网络 篇(三、 MQTT 协议基础介绍及测试)

    在前面 我们已经学会了 ESP32 C3 的WiFi 配置以及使用 为我们学习网络协议建立了基础 这篇文章我们就来学习测试一下ESP32 C3 的 MQTT 驱动 目录 前言 1 基础介绍 1 1 MQTT协议基本概念 1 2 ESP MQ
  • c#实现循环输入商品编号和购买数量,结账时应付金额并找零

    循环输入商品编号和购买数量 系统自动计算每种商品的价钱 单价X数量 并累加总金额 当输入n时结账 假设享受8折优惠 结账时 根据折扣计算应付金额 输入实付金额 并找零 下面展示一些 内联代码片 使用c 实现 代码如下 An highligh
  • 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析

    目录 AVI文件问题回答 1 AVI文件音频和视频的数据是如何放置的 交织放置还是连续放置 2 AVI文件一个视频帧大约占据多少字节 一个音频数据块大约占用多少字节 WAV文件格式分析 文件概述 文件格式 RIFF区块 FORMAT区块 D
  • 数据结构——根据后序遍历结果和中序遍历结果画出二叉树

    根据二叉树的中序和后序遍历结果画出二叉树 1 首先根据后序遍历结果判断根节点 最右边的元素 2 在中序遍历结果中找到该根节点 该节点的左边为根节点的左子树 节点右边为根节点的右子树 3 回到后序遍历中找点左子树在后序遍历中最右边的元素即为左
  • FPGA学习方向规划

    前言 仅以本帖 记录自己的学习历程及未来的方向 刚入职做FPGA研发1年 也不知道自己的发展方向 所以 从FPGA接口通信入手 慢慢学习和了解吧 希望自己逐步积累和掌握以下几个方向从业的基础知识 并具有一定的研发能力 主要方向分以下个方向
  • Binning模式缩小分辨率

    示例 640 480 NV12图像 提取Y部分数据 将Y数据做降采样 隔行隔列取值 保存成文件 include
  • React + antd实现嵌套可增减表单

    技术栈 React antd 接到需求 做一个form嵌套表单 刚开始想自己做一个 后来想着参数处理可能比较麻烦就直接用antd的Form吧 一 目标效果 先看一下效果图 其中点击新增标签及配置时可以加一个红色框里的内容 点击蓝框里的加号可
  • 将 VEDAI 遥感图像数据集转为 PASCAL VOC 格式

    PASCAL VOC 格式的 VEDAI 数据集 只有JPEGImages和Annotations 地址 所需积分 C币 0 VEDAI 数据集共有11类 类别和所对应的 label 如下表所示 类别 car truck tractor c
  • 使用python抓取天涯帖子,并实现“只看楼主”功能

    使用python抓取天涯帖子 并实现 只看楼主 功能 在看天涯论坛时 有些帖子很有价值 想把它保存下来 可是好的帖子动辄几百页 其中又掺杂了很多灌水和撕逼 所以我编写了一个python小程序 将一个帖子中楼主所发的内容抓取下来 挺好用的 唯
  • TypeScript入门总结

    一 类型注解 如 number是类型注解 具体分为 原始类型 数组类型2 联合类型 类型别名type 交叉 keyof 获取key字面量 函数类型2 void不确定函数返回值 可选参数 不确定参数 对象类型 字面量类型 类似const 接口
  • Linux文件误删除恢复操作

    本文参考http write blog csdn net postedit ticket ST 491405 OGjDDusZeyMgVQ7bHW7f passport csdn net 前言 作为一个多用户 多任务的操作系统 Linux下
  • 将mysql中的数据移到另一个数据库中

    1 导出整个数据库 mysqldump u 用户名 p 数据库名 gt 导出的文件名 mysqldump u admin p vmiplatform gt sql sql 运行结果如下 2 导出一个表 mysqldump u 用户名 p 数
  • 解决node里面的中文乱码

    今天咋学习node的时候 跟着视频里在撸代码 但是却出现了中文乱码的情况 视频中的谷歌浏览器可能和我的版本不一致 先看代码吧 use strict const http require http let count 0 const serv
  • linux系统中文件名通配符的使用方法

    linux系统中文件名通配符的使用方法 常用的四种 匹配任意字符 匹配任意单个字符 指定范围的匹配 e g a z 0 9 a zA Z 不匹配通配符内的信息 e g a Z
  • 继承的详解

    继承 继承基础 继承方式 继承中的对象模型 继承中构造和析构顺序 继承同名成员处理方式 继承同名静态成员处理方式 多继承语法 菱形继承 继承基础 继承得好处 减少重复代码 语法 class 子类 继承方式 父类 子类也称为 派生类 父类也称
  • java底层实现定时延时的途径

    Timer定时器 时间间隔示意 例子一 public class TestTimer private static Timer timer new Timer private static Logger logger LoggerFacto
  • (转载)Twain 学习纪录

    一 TWAIN的文件组成 TWAIN共包括4个二进制文件 如果要使用该接口 就必须要保证他们被成功地安装在本地计算机上 文 件 名 说 明 TWAIN 32 DLL 32位应用程序的支持文件 32位程序使用TWAIN通讯必须使用该文件 TW
  • java 各省市区代码表

    因最近项目开发需要用到全国各省市区的城市编码 网上找了好久 终于找到了非常全的 现记录一下 方便以后使用 DROP TABLE IF EXISTS region CREATE TABLE region id int 10 NOT NULL
  • OpenCL-学习教程(二)

    经过两天的摸爬滚打 基本上了解了opencl的并行处理的原理和内部调用机制 也上手写代码调试了几个工程 总体感觉opencl会比cuda比起来更复杂一些 但不得不说 平台的兼容性更好 而且调试应该方便些 虽然我的VS调试配置环境始终有问题