- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CUDA 线程执行模型分析(一)招兵 GPU 的革命 序:或许看到下面的内容的时候,你会觉得和传统的讲解线程,和一些讲 解计算机的书的内容不是很相同。我倒觉得有关计算机,编程这些方面的内容, 并不都是深奥难懂的,再深奥难懂的事情,其实本质上也是很简单的。一直以为 计算机编程就像小时候搭建积木一样,只要知道游戏规则,怎么玩就看你自己了。 或许是从小学那会,就喜欢在做数学题的时候用一些简便方法来解题,养成了一 些习惯,喜欢把复杂的问题都会尝试用最简单的额方法来解决,而不喜欢把简单 的问题弄得很复杂。不再多说了,有的朋友已经看得不耐烦了……ps:再罗嗦一 句,如果下面看不明白的,就当小说看了,要是觉得不像小说,那就当故事看, 要是觉得故事不完整,写得太乱,那就当笑话看,在各位学习工作之余能博得大 家一笑,也倍儿感荣幸……ps2:想好再说……突然想到了,确实是了一段时间再 想到的,既然叫 GPU 革命,那就得招集队伍啊,下面我就开始招兵了。 正题: 要真正进入 CUDA 并行化开发,就必须先了解 CUDA 的运行模型,才能在 这个基础上做并行程序的开发。 CUDA 在执行的时候是让 host 里面的一个一个的 kernel 按照线程网格(G rid)的概念在显卡硬件(GPU)上执行。每一个线程网格又可以包含多个线程 块(block),每一个线程块中又可以包含多个线程(thread)。 在这里我们可以拿古时候的军队作为一个例子来理解这里的程序执行模型。 每一个线程,就相当于我们的每一个士兵,在没有当兵之前,大家都不知道自己 做什么。当要执行某一个大的军事任务的时候,大将军发布命令,大家来要把对 面的敌人部队的 n 个敌人消灭了。然后把队伍分成 M 个部分,每一个部分完成 自己的工作,有的是做侦查的工作,有的是做诱敌的工作,有的是做伏击的工作, 有的是做后备的工作,有的是做后勤的工作……反正把一个大任务按照不同的类 别,不同的流程不同,分别由 M 个部分来完成。 这里我们可以把大将军看着是 Host,它把这次军事行动分解成一个一个的 kernel:kernel_1,kernel_2……kernel_M,每一个 kernel 就交给每一个 G rid (副将?千户?就看管的人多人少了,如果GPU 硬件支持少一点,那就是千 户;要是 GPU 硬件高级一些,管理的人多一些,那就副将?戚家军也不过四五 千人,咱也不能太贪心,一下子就想统军百万,再说了,敢问世上韩信一样的将 才又哪有那么多啦?)来完成。当要执行这些任务的时候,每一个 Grid 又把任 务分成一部分一部分的,毕竟人太多,他一个官不过来,他只要管理几个团队中 间的高级军官就可以了。Grid 又把任务划分为一个个的 Block (百户?),这 里每一个 Grid 管理的 Block 也是有限的,(人就那么多……想管多少得看硬件的 支持)。毕竟显卡上的 GPU 硬件还是很少,Thread (线程)相对于真正的军队 来说人还是少了很多。所以到 Block 这个层的时候,就直接管理每一个 Threa d (士兵)。 由于古代通信不是很方便(从GPU 的发展史来看,如果按照中国的历史, 现在的 GPU 也就还处在战国时代吧……),所以每一个 Block (百户)内部的T hread (士兵)才能方便的通信,按照既定的规则进行同步;而各个block 之间 就没那么方便了,大家不能互相通讯。不过同一个(千户)Grid 管理的 block 之间是共享同一个任务分配的资源的。每一个 Grid 都可以从大将军那里分配到 一些任务,和一些粮食,同一个 Grid 的 block 都可以分到这个 Grid 分配到的 粮食。而每一个(千户)Grid 本身的任务就不一样,所以 Grid 除了知道自己做 的事情外,其他的 Grid 他都不会知道了。这差不多就是一个运行模型。下 面让我们来看看在 GPU 中东图例说明: 看到这张图,我们可以对应来讲解我们的 Thread 部队。一个大将军 Host, 分配了任务中的两个任务(Kernel1, Kernel2)给了千户(Grid1,Grid2)来 完成。千户 Grid1 里面把自己的队伍分成了 6 个百户 Block,然后每一个百户 又把任务分配给了自己的士兵(Thread )来具体完成。这里得说明的是,由于 千户拿到的任务 Kernel 是定了的,所以到每个士兵(Thread )也就那里就只
您可能关注的文档
最近下载
- 40篇短文搞定初中英语3500单词.pdf VIP
- 建筑智能化弱电系统验收表格.docx VIP
- 第十章齿轮传动教案与讲稿.pdf VIP
- 【扬州】2024年江苏扬州江都区“乡村振兴好青年”招聘人员122人笔试历年典型考题及考点剖析附带答案详解.docx VIP
- 清淤、护岸工程工组织设计.doc VIP
- 2025年中考语文备考之名著阅读《朝花夕拾》知识考点解析+测试卷.pdf VIP
- 课题申报参考:超循环经济视角下中国珍珠产业全球价值链增值及提升路径研究.docx VIP
- 17J008 挡土墙(重力式、衡重式、悬臂式)(必威体育精装版).pdf VIP
- 鼎捷输配电行业客户案例集.pdf VIP
- 冲压行业客户鼎捷软件.pdf VIP
文档评论(0)