博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《OpenCL实战》一1.3 类比:OpenCL处理和纸牌游戏
阅读量:6881 次
发布时间:2019-06-27

本文共 1150 字,大约阅读时间需要 3 分钟。

本节书摘来异步社区《OpenCL实战》一书中的第1章,第1.3节,作者: 【美】Matthew Scarpino 译者: 陈睿 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 类比:OpenCL处理和纸牌游戏

在最开始学习OpenCL的时候,我经常会被那些奇怪的数据结构以及各式各样的术语所吓到。对于我而言,要记住这些术语所包含的内容以及相互间的关系并非易事,所以我采用了类比学习的方法,把OpenCL应用程序的运行过程比作打扑克牌。这看起来很奇怪,但个中缘由,由我慢慢道来。

扑克游戏的结构总是一张牌桌,一个庄家加上一个或多个玩家再配上一副纸牌。玩家之间并没有关系,他们只是向庄家要牌,或是增加赌注。庄家挨个询问玩家的请求,游戏结束之后,庄家便会查看手牌,判定胜负。

在这个类比中,庄家扮演的是OpenCL主机的角色,每个玩家则好比OpenCL兼容设备,而桌子就相当于是上下文,每副纸牌就相当于是一个内核程序。每个玩家的手牌就像是一个指令序列。表1.2更清楚地说明了纸牌游戏和OpenCL应用程序的运行过程间的类比关系。

b1_2

为了让这个类比更直观,图1.2所示的是有4个玩家时的卡牌游戏的情景,每个人的手牌是4张。我希望通过图1.1和图1.2,让这个类比更加的直观、易懂。

t1_2

在下面的几个章节里,我们还会回过头来再考察这个类比,并补充新的内容。这个类比虽然能让我们可以更直观地了解OpenCL的整个运行过程,但还是有些问题,下面仅列举出我所认为的六点最严重的不足:

  • 类比并没有提及平台。而平台指的是标识OpenCL不同实现的数据结构。平台也为访问设备提供了方法。例如,你可以通过Nvidia的平台来访问Nvidia设备。
  • 纸牌游戏中,庄家并不能选择牌桌上的玩家,但是OpenCL主机却要决定将哪些设备放入上下文之中。
  • 纸牌游戏中,庄家并不能给不同的玩家派发同样的纸牌,但是OpenCL主机却可以将同样的内核发送到不同设备的指令序列中。
  • 类比并没有提及数据以及如何针对OpenCL兼容设备进行数据划分。OpenCL兼容设备往往包含有很多个处理单元,每个处理单元只负责处理一部分数据。主机设定完数据的维度和处理单元的数量后,数据的划分便开始运行。
  • 纸牌游戏中,庄家分发纸牌给玩家,每个玩家各自负责整理自己的手牌。而在OpenCL中,主机完成内核和执行指令入指令序列之后,每个设备默认的任务执行顺序与内核入列的顺序一致。
  • 纸牌游戏中,庄家采用的是轮循调度的方法来发牌,而OpenCL对内核发送的方法并无限制。

如果你还是不大适应OpenCL的术语,别担心,第二章我们会深入地透过代码来了解这些数据结构。毕竟用这些东西编出代码才是王道。下一节我们来看看OpenCL代码究竟是何模样。

转载地址:http://dkbbl.baihongyu.com/

你可能感兴趣的文章
lvs+iptables持久连接
查看>>
高级文件系统管理
查看>>
centos7 ansible 报错收集
查看>>
delphi 导入excel
查看>>
【资料收集】林内域或者林间域之间的账户、计算机迁移
查看>>
JSP页面中嵌入java变量,在标签中调用
查看>>
Cisco NTP学习总结
查看>>
systemd 对你的进程数限制横插一脚啦
查看>>
fuser命令小结
查看>>
详解CentOS配置和管理web服务-Apache
查看>>
ORA-600 [kddummy_blkchk] [18038] 一例
查看>>
Azure云端部署Exchange 2016双数据中心—Part1(架构介绍)
查看>>
lvs规则条目保存(keepalive作HA)
查看>>
宽字节(宽字符)注入
查看>>
python类的私有变量
查看>>
Linux基础知识---计划任务
查看>>
Ceph集群块设备使用-创建和使用OSD
查看>>
大数据||hadoop分布式集群安装
查看>>
华为设备默认console密码
查看>>
wxWidgets第四课 EVT_LEFT_UP关联鼠标弹起事件不生效
查看>>