Archive for 2018年3月

显卡的今天和往事(续)

2018/03/07

上篇《显卡的今天和往事》提到买了 Radeon RX Vega 56。因为显卡的缘故对 AMD 的图形技术发展梳理了一下。以前一直以为 Apple 抛弃 OpenGL 去设计 Metal 是对 Driect3D 长久以来领跑的追赶,了解之后发现并非如此。在 DirectX 9 到 11 期间,AMD 的 PC 显卡驱动程序性能一直大幅落后于 nVidia,尽管其硬件理论性能并不差。与此同时 AMD 占据了 game console 图形处理的绝大部分份额,与 Microsoft 一起积累了不少在 console 上提高游戏性能的经验。这些经验变成了 Mantle。从某种意义上说,Mantle 是 AMD 硬件部门推动的对软件部门的一次压制 —— 把驱动程序的重要性大幅降低。也是 Microsoft 乐于看到的,因为从前驱动程序的任务被挪到 app code,强化了游戏/应用开发者对图形性能的控制权。

Mantle 推出之后,Microsoft 和 Apple 开始几乎同时推出自己的类似技术,D3D12 和 Metal。当然有说法 D3D12 是和 Mantle 同时开发而且期间有一定程度的交流和技术共享。

再回到这次给 MacBook pro 配置 eGPU 过程本身,上图是完成后的桌面。新设备购置顺序为:LG 显示器,Akitio 盒子,最后拿到 RX Vega 56 显卡。

说来好笑,本以为外接显示器是利用 eGPU 的前提,因为很多论坛甚至 Apple 官网一度宣称 eGPU 只对外接显示器加速。考虑到即使 eGPU 到货之前也能发挥作用,所以早早买来。搭好整个系统后调起代码才发现,不管 app window 在哪个显示器,渲染代码可以任意指定用任何 GPU 加速。甚至系统启动时 eGPU 不连显示器也没问题。究其原因,窗口系统中 app 自己的 rendering 的实际处理都是 offscreen,由 OS window server 把结果搬到与 app window 所在显示器直连的 GPU 上进行最终 composition。所谓 eGPU 只能加速外接显示器的说法可能只是指 D3D fullscreen 这种绕过窗口 composition 的加速方式。Windows Vista 后普通窗口系统方式并不比 fullscreen 方式增加多少开销。macOS 则根本没有绕过 composition 的方式。在窗口系统的「调度」下,GPU 更加接近通用的「pipeline/shader 运行引擎」,传统的显示器 adaptor 的角色则大大淡化了。

显卡的今天和往事

2018/03/07

从 2012 年起看到市面上的显卡越做越漂亮。颇有混合了 cyberpunk 和 steampunk 的感觉。无奈自 2005 年就已是纯粹的 laptop 用户,再无机会和精力搞台式机。我也安慰自己说反正也不常玩游戏。不过从 SIGGRAPH 2017 回来开始玩了一年多 real-time rendering,此种欲望越发强烈起来。业界似乎体会到我的心情。Intel 提出 Thunderbolt 3/USB Type-C 接口支持 PCI 协议。从 2017 年开始,可以配合 laptop 的外置显卡和通用 PCIe 外接盒流行起来。macOS 的支持到 10.13.4 beta 也成熟起来。上个月发现了 egpu.io 对我的计划一锤定音 —— 要用最短的时间配置好 eGPU 系统。

话说回来,这么多年来看着种种「外置」变成「内置标配」,专用硬件被基本软件系统取代。尽管配置 eGPU 这件事是抱着「发烧」的娱乐心态来放松,但也值得花点时间想想到底自己在干什么。是纯粹休闲娱乐,还是顺便能为未来做点准备和过渡。

说到这里想起以前看 Alex St. John 的 blog [1],谈到现代 graphics API 的现状是 Intel 故意限制 CPU-GPU 间的带宽造成的。这种限制激发了显卡厂商开发高速专用显存的动力,也激发了 Microsoft 和硬件设计者合作通过 shader 方式把 GPU 变得越来越通用。GPU 和计算机系统的其它部分形成了微型的高速 client-server 结构。把这个结构和普通意义上的 client-server 系统的软件方面比较,前者的 OpenGL 演进到 Mantle/Metal/D3D12,类似于后者从当年的 CORBA/RPC 想把网络通信伪装成本地调用,到今天的 RESTful API 不再掩饰网络通信的复杂性。

今天看来,这种半无意形成的架构具备了完美的伸缩性,使计算资源可以像存储一样根据性能、价格和灵活性的进行分层取舍。无论存储设备的价格如何降低,如何小型化,外置 storage 甚至家用 NAS 永远是存储系统中活跃的一种类型。以此推测 eGPU 应该有长期发展的潜力,一些 laptop 用户不介意用稍高的价格换取平滑的性能伸缩;避免像「性能本」那样既损失部分移动性,又因为不彻底的散热损失部分性能的妥协。

前景固然分析得很好,不过「用最短的时间配置好 eGPU 系统」这个计划在当下「挖矿」狂潮中确实发烧程度有点儿高。本来打算俭朴一点配块非公版的超频 Radeon RX 580,结果发货时间很长而且送到之后又严重的损坏。退掉之后心情不能平静,决定来个 RX Vega 56 吧!这个时候买高端 AMD 显卡 [2] 价格确实比较坑,说不是为了挖矿大概不会有人信。但是我真的只是为了跑自己写的 renderer,感觉有点冤。关于这块卡的使用,有时间会再写一篇详谈。

脚注:

  1. 这位仁兄的 blog 现在已经挂了(domain suspended)。似乎和前段发表有争议的言论的麻烦有关。也是令人唏嘘。所以想直接引用原文已不可能,只能凭我半吊子的记忆。
  2. macOS 只支持 AMD 显卡。而且 AMD 当前的「高端」卡 …… 凑合用吧。