开yun云体育入口(全球)电竞官方平台 iOS/安卓版/PC网页端下载!

世界杯体育对于 GPU Trace-开yun云体育入口(全球)电竞官方平台 iOS/安卓版/PC网页端下载

开yun云体育入口(全球)电竞官方平台 iOS/安卓版/PC网页端下载

栏目分类
开yun云体育入口(全球)电竞官方平台 iOS/安卓版/PC网页端下载
案例
设计师
在施工地
别墅实施
陈设
新闻资讯
关于我们
世界杯体育对于 GPU Trace-开yun云体育入口(全球)电竞官方平台 iOS/安卓版/PC网页端下载
发布日期:2026-08-11 06:42    点击次数:56

(原标题:或者 GPU 瓶颈)世界杯体育

公众号难忘加星标,第一时刻看推送不会错过。

着手 :本体编译自interplayoflight,谢谢。

GPU附近率和性能纠正

深远计划 GPU 的架构,你会发现其中枢包含大皆的SIMD 单位,这些单位的作用是读取数据,推论矢量或标量 ALU(VALU 或 SALU)运算,并将末端写入渲染操办或缓冲区。这些单位存在于 Nvidia 所谓的流多处理器 (SM) 和 AMD 所谓的职责组处理器 (WGP) 中。充分附近 SIMD 单位和 VALU 蒙胧量(即保捏它们忙于职责)对于擢升渲染任务的性能至关贫寒,尤其是在 GPU 越来越宽、SIMD 单位越来越多的时间。

为了读写其操作的数据,SIMD 单位通过一些“固定功能”单位与 GPU 的其余部分进行交互,举例用于处理数据申请的 TEX 单位、用于存储临时数据 (VGPR) 的寄存器文献、用于写入渲染操办的 ROP 单位,以及用于存储和读取数据的多个缓存。举例,这是 Blackwell 架构的 SM,展示了 VALU (FP32/INT32) 单位与之交互的一些单位。

固定功能单位由于其职责性质肤浅而速率很快,但它们仍然可能成为瓶颈,导致 VALU 单位无法职责,或谢却其输出末端。因此,图形法子员的一个贫寒职责是分析渲染职责负载(绘图调用和调遣),并尝试摈弃由上述固定功能单位以过火他单位(举例输入汇编器 (IA)、光栅单位以及内存带宽等)酿成的瓶颈,因为这些单位会镌汰 VALU 的附近率。

未必,由于渲染职责的性质,镌汰 VALU 附近率/蒙胧量的瓶颈更难摈弃,举例暗影贴图通说念在 VALU 职责上会很锐利,况兼受到 IA(World Pipe)和内存(VRAM)的瓶颈,为其提供终点数据,因此 SM 蒙胧量(代码推论)会很低:

另一个例子是策动着色器通说念,它会复制渲染操办或创建深度mipchain,此时着色器中的职责量不及以让VALU单位保捏贫苦。在这种情况下,为了获得最好成果,咱们需要退一步,从举座上凝视GPU性能,关心的不是单个渲染任务(绘图调用/调遣)的性能,而是跨渲染任务,并测度通盘这个词帧的纠正。在这篇博文中,我将商议一些可以用来罢了这小数的时期。免责声明:任何性能优化职责的灵验性在很猛进度上取决于操办GPU、着色器编译器、渲染器和渲染本体,很难一概而论。一如既往,请严慎对待任何薄情,并恒久分析您的用例。

顷刻休息一下,商议一下瓶颈。我屡次提到了瓶颈,但如何智力敬佩果然的瓶颈是什么以及需要处理哪些问题呢?像 Nsight Graphics(GPU Trace)、AMD Radeon Profiler和PIX这么的性能分析器具皆是可以的选拔。使用性能分析器具,最肤浅的范例是绘图每个 GPU 单位的附近率图表来可视化瓶颈。对于 GPU Trace,也即是我上头发布的截图,它绘图的是多样“蒙胧量”。通过这么的视图,咱们很容易看出,举例,暗影贴图通说念主要受 VRAM(内存带宽)和终点输入(World Pipe)的敛迹(这意味着它最常使用阿谁单位/资源)。GTAO 通说念受 L2 缓存的敛迹,而 ShadowMask 通说念(用于策动后光跟踪暗影)受 RT 中枢的敛迹。这意味着,若是咱们思要擢升任何一个通说念的性能,那么主要的瓶颈是咱们最初应该处理的问题。

因此,最初值得强调的是,咱们应该尽可能镌汰单个高支出 Drawcall 的老本/提高 VALU 的附近率,并针对其特定的瓶颈。举例,若是 Drawcall 受内存蔓延摒弃,即 VALU 领导需要恭候内存到达,那么可以通过减少 VGPR(矢量寄存器)分派来提高内存占用率,或者从头联想着色器,以便在内存读取和内存使用之间留出更多领导,举例部分张开轮回,这些皆是值得尝试的范例。此外,通过打包/压缩着色器的输入和输出来加多数据流以破除 VALU 禁锢(这适用于通盘类型的着色器,包括终点着色器,因为其导出属性的数目可能会成为某些 GPU 的瓶颈),以及不雅察数据打听方式并辅助所使用的数据结构(举例,在 Nvidia GPU 上,结构化缓冲区在就地打听方面的进展优于常量缓冲区),这些范例皆将获取得报。

若是瓶颈的性质决定了进一步擢升性能并非易事,那么进一步擢升仍有可能,但范例可能违背直观。举例,若是着色器的占用率相等高,这可能会导致缓存抖动,因为不同的开动中的线程会尝试打听缓存。在这种情况下,可以通过加多 VGPR 分派(一种范例是创建一个永久不会被推论的假造大型动态分支)来镌汰占用率;或者,若是这是一个策动着色器,则可以通过推论假造组分享内存 (LDS) 分派来镌汰占用率。若是可能,最好使用 LDS 分派来摒弃占用率,因为让 VGPR 保捏悠然情状可能对与此任务并行开动的其他任务故意(在统一图形管说念上,但也使用异步策动,稍后会详备先容)。关联词,加多 VGPR 分派可能会带来其他积极的影响,编译器可能会附近这小数,并在着色器启动时批量加载纹理,以减少内存蔓延。

另一件值得研讨的事情是,对于特定的职责负载,哪种着色器类型最合适。像素着色器是 GPU 几那处理活水线的一部分,这意味着它依赖于固定函数单位的输入(光栅化器和终点着色器导出的数据)和输出,以及 ROP 单位写入渲染操办,因此它可能会受到其中任何一项的制约而成为瓶颈。屏幕空间、导出绑定的像素着色器(受 ROP 单位禁锢)或具有发散推论(即,warp/wave 中某些像素的早期输出)行动策动着色器可能会更有上风,因为策动着色器莫得通盘这些依赖项。此外,策动着色器可以打听另一种类型的内存,即组分享内存(或土产货数据存储),它可以用作中间存储,在线程组线程之间分享数据,从而大幅加速推论速率。

另一方面,像素着色器管线可能领有策动着色器所不具备的快速旅途和功能。举例,GCN 在渲染后端单位中有一个专用缓存(“神采缓存”),可以径直与 DRAM 通讯以读取/写入神采值,从而绕过二级缓存。这意味着使用像素着色器写入渲染操办可能比策动着色器更快,因为它可以开释二级缓存用于其他用途。不外,其他架构上可能不存在这种专用缓存。像素着色器也可以受益于硬件 VRS,从而镌汰老本,这小数值得研讨(尽管策动着色器也可以选用“软件 VRS ”处理决策)。像素着色器输出可以进行DCC 压缩,这可能会在后续将渲染操办行动纹理读取时提高内存带宽。此外,像素着色器(包括全屏着色器)可以受益于模板操作,以致深度操作,以加速处理速率。不生成波形比生成波形并提前休止(由于某种情况而罢手着色器推论)更快。

在决定将职责移动到那处时,还应试虑每种着色器类型之间的职责散播各别。举例,GPU 会将通盘这个词线程组分派给特定的 SM 或 WGP,况兼其通盘 warp/wave 皆将在统一个 SM/WGP 上推论。这对于缓存一致性和数据局部性相等有用,况兼可以充分附近组分享内存,尤其是对于大型线程组而言。另一方面,大型线程组在 SM/WGP 上生成之前需要更多可用资源(VGPR/LDS),这可能会导致争用和蔓延。像素着色器 wave 的生成更具预计性,会阐述屏幕位置以平铺相貌生成。

并可能提高推论速率。将 VALU 职责移绝尖端着色器,以收缩受 VALU 敛迹的像素着色器的压力,是一种选拔,但需要精通:由于波辐射方式(举例,在 GCN 上每个策动单位一个波辐射方式),终点着色器的缓存一致性和数据局部性可能不太好;为剔除的三角形/像素完成的终点着色器职责被蹧跶;此外,将数据从终点着色器导出到像素可能会成为某些 GPU 架构的瓶颈。研讨到现时的三角形数目和密度,将职责移绝尖端着色器可能不太迷惑东说念主。

在某些架构上,举例在 RDNA 上,可以选拔 wave 大小,着色器类型也可能会影响推论和性能。在 RDNA 上,策动着色器每个 wave 以 32 个线程开动(wave32),而像素着色器则以 64 个线程开动(wave64)。对于严重依赖 wave intrinsic 的着色器,选拔 wave64 像素着色器可能会更有上风,因为它可以完成更多职责(64 个职责项,而非 32 个)。此外,与前边提到的组分享内存比较,wave intrinsic 是一种更好的线程间数据分享相貌,因为它存储在 VGPR 中,这是 SIMD 可用的最快存储相貌。另一方面,对于推论相貌不同的着色器(举例(就地)屏幕空间反射),选拔 wave32 策动着色器可能会进展更好,因为 wave 更有可能在线程数较少的情况下提前完成并退出。值得一提的是,由于SM6.6 HLSL 为策动着色器界说了 WaveSize,因此在撑捏的情况下,也可以选拔加多其大小。

将职责负载转机为策动着色器还有另一个潜在的宏大上风,它为使用异步策动与图形管说念并行开动开荒了说念路(即重迭终点着色器、像素着色器,以致其他策动着色器的推论)。异步策动是提高 VALU 附近率的绝佳器具,因为它可以重迭其他可能存在固定功能单位瓶颈的通说念,并附近它们无法使用的资源。举例,缓存和 SM 瓶颈通说念(GTAO),

可以与 RT Core 绑定通说念 (Shadowmask) 无缺搭配

使用通说念无法使用的 GPU 资源。异步策动还可能与其他 VALU 附近率较低的通说念重迭,举例 z-prepass 或暗影通说念,这些通说念可能主要受到几何蒙胧量或像素着色器导出绑定通说念(屏幕空间,但也可能填充 gbuffer,具体取决于材质着色器的复杂性)。这里有几件事值得研讨,当今莫得 API 公开的范例来戒指异步策动任务的推论,在优先级、节流以减少对图形管说念的影响等方面(在 DirectX 12 上,我信托 Vulkan 公开了 VK_AMD_wave_limits),因此异步策动可能会对图形管说念产生负面影响,这可能是可以禁受的,唯有并行开动的两个任务的总老本低于在图形管说念上串行开动时的老本。假造 LDS(或者不太保举使用 VGPR,因为它更有可能影响图形管说念上的 wave 启动)分派和线程组大小也可用于影响异步策动任务的推论,举例,袖珍线程组可能比大型线程组重迭得更好,况兼需要进行一些施行智力找到相宜特定用例的正确确立。终末,对于策动着色器重迭的问题,在某些 GPU 架构上,唯有莫得樊篱,图形管说念上的策动职责可以与像素/终点着色器职责重迭。

为了罢了精采的渲染性能,摈弃固定函数和其他瓶颈,并允许 GPU 推论有用的职责至关贫寒。咱们有好多器具和时期可以罢了这小数,无论是单次绘图调用/调遣优化,也曾重迭职责以附近未使用的策动资源,即使这会加多单个渲染任务的老本。由于市集上 GPU 架构种类稠密,很难敬佩哪种范例最灵验,而且需要反复磨练智力敬佩哪种范例在每种用例中成果最好,因为并非通盘范例在通盘 GPU 上皆能相通出色地开动。

*免责声明:本文由作家原创。著作本体系作家个东说念主不雅点,半导体行业不雅察转载仅为了传达一种不同的不雅点,不代表半导体行业不雅察对该不雅点赞同或撑捏,若是有任何异议,欢招待洽半导体行业不雅察。

今天是《半导体行业不雅察》为您分享的第4141期本体,接待关心。

加星标第一时刻看推送,小号防走丢

求保举