PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

关于DX12下面A卡和N卡的协同工作

[复制链接]
跳转到指定楼层
1#
fastone 发表于 2016-1-23 20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:5793|回复数:14
本帖最后由 fastone 于 2016-1-23 21:00 编辑

     如题,其实那和交火和SLI什么的不一样,学名称之为Multi-Adapter,通俗的理解为多显示适配器技术。
    它不仅可以让AMD、NVIDIA的显卡(还有Intel核显)互联互通,而且还提高了显存利用率,以往的交火或者SLI都只能利用一半的显存容量,现在DX12下可以完整利用2张显卡的显存和运算资源。和交火和SLI最大的不同是,这种技术需要程序开发人员来通过编程决定每个显卡来做什么事情。
     DX12和DX11相比的最大区别就是DX12采用了完整统一的流水线状态控制方式,和更加灵活资源模式和管理。DX12下,驱动程序不再一起负担核心计算,成为了一个了类似开关的作用。
      用于Multi-Adapter的GPU的适配器可以是任何支持DX12的图形适配器。多适配器被引用作为节点。
     
在调用相关的DX12 API的时候,其中渲染流水管线状态和相关指令可以指向其中任何一个节点也可以指向多个节点。
    (图貌似搞小了)
      Multi-Adapter的工作模式——最简单的一种叫做Implicit Multi-Adapter(隐式多适配器),它本质上是Multi-Adapter操作模式中最低的一级,允许开发者使用类似SFR分割帧渲染那样友好的方式来控制多显卡渲染处理,这会限制性能,但带来的问题也更少。这种模式需要搭配的GPU们性能比较接近
      对于DX12来说,真正“所谓混合交火”的是Explicit Multi-Adapter(EMA,显式多显卡适配器)模式,正如它的名字一样,EMA需要开发者给多GPU运行提供明确的编程,指明每个GPU要怎样工作,分配多少内存,GPU之间如何通讯等等。这样开发者就能明确控制这个渲染过程,这样多显卡平台的性能也有机会更强,因为开发者几乎控制了整个API及游戏,相比以往的多GPU技术,开发者可以控制更多、获得更多信息。
  EMA模式的代价就是资源消耗,更高的性能意味着更高的责任,而且与隐式多适配器模式不同,游戏开发者要想实现EMA模式就得投入很多工作,要想工作的很好,那投入的精力就需要更多了。
  至于EMA模式,它实际上还有2种工作模式——有Linked GPU及Unlinked GPU之分,Unlinked是EMA模式的基础,提供了大部分EMA模式的功能,而linked模式可以提供更多的功能,但它的限制也更多。

     下面举个简单例子,用GTX950来负责生成绘制三角形,R9 FuryX 来计算模糊效果。本例用的就是Unlinked Explicit Multi-Adapter模式以及AFR(交替帧渲染)技术。AFR可以支持原本的交火或者SLI。
      
以下是相关实现的代码片段

首先由GTX950渲染出一些三角形,然后FuryX负责Shader相关功能计算模糊,两者交替进行,最后输出
如下图(为了显示过程,同时显示了GTX950的每帧情况)



     
     其实高级的EMA还可以实现,让A卡计算动态光照,N卡计算全局光照和让A卡计算延迟渲染所需的,让N卡负责搞AO。
     由于平时工作较忙,制作了这个简单的例子,并且借朋友账号来发帖,也是朋友推荐来发的,在此感谢fastone!春节后我将写个高级的例子将完整的可执行程序和代码发上来让大家参考。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1绝对值 +1 收起 理由
mrplplplpl + 1 很给力!

查看全部评分

2#
McLaren 发表于 2016-1-23 21:05 | 只看该作者
就等着技术贴,DX12弱化了驱动的作用拯救了AMD,EMA模式感觉在大众应用上还有段距离
3#
3939-西蒙菲沙酱 发表于 2016-1-24 05:13 | 只看该作者
看帖子的时候觉得感觉不想fastone的文笔。。。看到最后才明白,“哦哦哦哦哦”原来如此。
4#
fastone  楼主| 发表于 2016-1-24 12:07 | 只看该作者
McLaren 发表于 2016-1-23 21:05
就等着技术贴,DX12弱化了驱动的作用拯救了AMD,EMA模式感觉在大众应用上还有段距离 ...

其实微软一直都想搞底层API,但是没实际东西让他下决心搞DX12,直到Mantle实际市场应用后,微软发现了未来,决定把以前的DX12拿出来了
5#
mrplplplpl 发表于 2016-1-25 08:25 | 只看该作者
不错的帖子,学习了
6#
大号跳蚤 发表于 2016-1-30 13:40 | 只看该作者
不用借号,速速申请一个,期待楼主后续技术贴 。。。
7#
SCE-PhyreEngine 发表于 2016-2-3 15:09 | 只看该作者
以后不用借号了,刚刚注册完

评分

参与人数 3代金券 +50 绝对值 +2 收起 理由
Y6-0785 + 1 欢迎新来的大神!
大号跳蚤 + 1 期待楼主作品 。。。
石头 + 50 精华奖励

查看全部评分

8#
fastone  楼主| 发表于 2016-2-3 19:14 | 只看该作者
SCE-PhyreEngine 发表于 2016-2-3 15:09
以后不用借号了,刚刚注册完

后面你要发的测试帖子也可以用自己号发了
9#
evangely 发表于 2016-2-4 10:05 | 只看该作者
之前看到 dx12 有Multi-Adapter 功能,倍感期待,当年的A+N的混合交火终于有了官方的solution了!!!
10#
haierccc 发表于 2016-2-20 23:08 | 只看该作者
本帖最后由 haierccc 于 2016-2-20 23:09 编辑

各路高人都有啊
敢问,曾经有过64k 3D DEMO的编程大赛,我一直就想找类似的3D演示程序,应该去哪里找呢

11#
fastone  楼主| 发表于 2016-2-21 20:17 | 只看该作者
haierccc 发表于 2016-2-20 23:08
各路高人都有啊
敢问,曾经有过64k 3D DEMO的编程大赛,我一直就想找类似的3D演示程序,应该去哪里找呢

AMD DEV和NVIDIA DEV  INTEL DEV都有相关DEMO  包括微软的DX DEV开发套件上也有
12#
haierccc 发表于 2016-2-21 20:24 | 只看该作者
fastone 发表于 2016-2-21 20:17
AMD DEV和NVIDIA DEV  INTEL DEV都有相关DEMO  包括微软的DX DEV开发套件上也有

好的谢谢
13#
QIUYUEN 发表于 2016-2-26 10:40 | 只看该作者
就是所谓的混合交火吗?
14#
fastone  楼主| 发表于 2016-2-26 21:01 | 只看该作者
这个和混合交火还是有区别,主要是在于链接型EMA和无链接EMA
15#
丨眼镜控丨 发表于 2016-3-25 12:23 | 只看该作者
大神贴,坐等后续,赞!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部