DirectX* 12 中的多适配器支持

简介

本示例展示了如何使用 DirectX 12 实施显式多适配器应用。 英特尔的集成 GPU (iGPU) 和独立 NVIDIA GPU (dGPU) 用于分担场景光线追踪工作负载。 并行使用这两种 GPU 有助于提升性能,并支持更复杂的工作负载。

本示例使用多个适配器渲染采用像素着色器的简单光线追踪场景。 两个适配器并行渲染场景的一部分。

显式多适配器概述

显式多适配器支持是 DirectX 12 的新特性。 该特性支持并行使用多个 GPU,无论其制造商和类型(如集成或独立)是什么。 借助独立的资源管理,以及 API 层上针对每个 GPU 的并行队列,所以能够将工作分配多个 GPU 上。

DirectX 12 主要采用了两种 API 特性来支持多适配器应用:

对两个适配器均可见的跨适配器内存。

DirectX 12 使用了跨适配器特定资源和堆标记:
D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER
跨适配器资源存储在主适配器的内存中,并且能够以最小的成本从其他适配器中引用。
图片描述

并行队列和跨适配器同步支持并行执行命令。 当创建同步栅栏时,使用特殊标记: D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER.

跨适配器栅栏支持一个适配器的队列响应另一个适配器队列的信号。
图片描述

以上图表展示了使用三个队列加速向跨适配器资源复制的操作。 以下是本示例中使用的技巧,并展示了以下步骤:
1.GPU A 上的队列 1 和 GPU B 上的队列 1 并行渲染部分 3D 场景。
2.渲染完成后,队列 1 发出信号,让队列 2 开始复制。
3.队列 2 将渲染的场景复制到跨适配器资源和信号中。
4.GPU B 上的队列 1 等待 GPU A 上的队列 2 发出信号,并将两个渲染场景集成到最终的输出中。

跨适配器实施步骤

在 DirectX 12 应用中整合次要适配器包含以下步骤:

在主要 GPU 上创建跨适配器资源,并…查看全文


了解更多相关内容,请关注CSDN英特尔开发专区

Intel技术双周刊已全面开启:订阅请点击这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值