本文共 1150 字,大约阅读时间需要 3 分钟。
本节书摘来异步社区《OpenCL实战》一书中的第1章,第1.3节,作者: 【美】Matthew Scarpino 译者: 陈睿 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
在最开始学习OpenCL的时候,我经常会被那些奇怪的数据结构以及各式各样的术语所吓到。对于我而言,要记住这些术语所包含的内容以及相互间的关系并非易事,所以我采用了类比学习的方法,把OpenCL应用程序的运行过程比作打扑克牌。这看起来很奇怪,但个中缘由,由我慢慢道来。
扑克游戏的结构总是一张牌桌,一个庄家加上一个或多个玩家再配上一副纸牌。玩家之间并没有关系,他们只是向庄家要牌,或是增加赌注。庄家挨个询问玩家的请求,游戏结束之后,庄家便会查看手牌,判定胜负。
在这个类比中,庄家扮演的是OpenCL主机的角色,每个玩家则好比OpenCL兼容设备,而桌子就相当于是上下文,每副纸牌就相当于是一个内核程序。每个玩家的手牌就像是一个指令序列。表1.2更清楚地说明了纸牌游戏和OpenCL应用程序的运行过程间的类比关系。
为了让这个类比更直观,图1.2所示的是有4个玩家时的卡牌游戏的情景,每个人的手牌是4张。我希望通过图1.1和图1.2,让这个类比更加的直观、易懂。
在下面的几个章节里,我们还会回过头来再考察这个类比,并补充新的内容。这个类比虽然能让我们可以更直观地了解OpenCL的整个运行过程,但还是有些问题,下面仅列举出我所认为的六点最严重的不足:
如果你还是不大适应OpenCL的术语,别担心,第二章我们会深入地透过代码来了解这些数据结构。毕竟用这些东西编出代码才是王道。下一节我们来看看OpenCL代码究竟是何模样。
转载地址:http://dkbbl.baihongyu.com/