胜博发娱乐 - 程序丨如何在大线程组下优化GPU占用率和资源使用?

绿草如茵,那是草儿在回报春天;鲜花缤纷,那是花儿在回报阳光;白雪千里,那是雪儿在回报朔风。生活,因回报而美丽。胜博发娱乐

译者:刘超(君临天下)

审校:梁君(君儿)

引见

本周,我们收到了一篇来自Sebastian Aaltonen的客座文章,他是Second Order无限公司的结合开创人而且曾经作为Ubisoft公司的高级衬着工程师。Second Order比来发表了它们的第一个游戏Claybook!该游戏看起来十分的棒,它的衬着器非常有新意,运用GPU用非传统的方法到达该成果。请看Claybook。

Sebastian将会处理他在开发Claybook时遇到的一些乏味的问题:你若何在运用大线程组的状况下优化GPU占用率和思索着色器的资本运用问题。

大线程组下的GPU占用率和资本运用优化

当运用一个较量争论着色器时,思索线程组的大小对功能的影响黑白常紧张的。无限的存放器空间,存储提早和SIMD占用率,每一个都以不同的方式影响着色器的功能。本文将会探讨潜伏的功能问题,和若何正确的运用相干手艺和优化来显著的进步着色功能。本文将集中关注大线程组的问题,然而这些提醒和本领对于个别的问题也是有所帮忙的。

背景

DirectX®11衬着引擎5的较量争论着色器标准(2009)请求每一个线程组容许的最大内存大小是32KB,而且最大的线程组包括1024个线程。对于最大的存放器计数并无指定,假如存放器存在肯定的压力需要,编译器将会从存放器溢出到内存中。但是,因为存储提早,溢出将会对功能发生显著的负面影响,这些问题应当在代码中被避免。

AMD GPU容许在单个较量争论单元(CU)上同时实行两组包括1024个线程的线程组。但是,为了占据率最大化,着色器必需最小化存放器和LDS的运用,以便一切线程的资本恳求在较量争论单元上是合适的。

AMD GCN 较量争论单元(CU)

下列是一个GCN较量争论单元的架构:

一个GCN较量争论单元(CU)包括四个SIMDs(单指令流少数据流),每一个包括一个包括32位的VGPRs(矢量通用存放器)的64KB存放器文件,对于每一个较量争论单元(CU)统共领有65536个VGPRs。每一个较量争论单元(CU)同时还包括一个32位的SGPRs(标量通用存放器)存放器文件。直到GCN3,每一个较量争论单元(CU)包括512个SGPRs,从GCN3开始,该数字激增到800。每一个较量争论单元(CU)可能包括3200个SGPRs,或者12.5KB的存放器文件。

用于较量争论单元运转的预约工作的最小单元称之为wave,每一个wave包括64个线程。较量争论单元上的四个SIMDs的每一个可以最大调剂10个并发wave。在等候实现内存操纵时,较量争论单元可能会挂起一个wave,来实行别的一个wave。这会有助于隐藏提早,和最大限制的应用较量争论单元的较量争论资本。

SIMD的VGPR的文件大短序入了一个紧张的限度:SIMD的VGPRs被平均的调配到了已经激活的wave的线程中。假如一个着色器须要用到比实际更多的VGPRs,SIMD将不会实行最优的wave数目。占据率(occupancy):GPU在给守时间可能实行并行任务的数量,其后果会受到影响。

胜博发娱乐官网给予合理游戏.

分类: 胜博发娱乐

(必填)

@ Sat Sep 09 14:19:24 CST 2017 胜博发娱乐 阅读(238) 评论(0) 编辑 收藏