小舍YZ 发表于 2017-3-14 10:35:01

微软部署 FPGA 的实践

微软部署 FPGA 的实践

2016 年 9 月,《连线》(Wired)杂志发表了一篇《微软把未来押注在 FPGA 上》的报道,讲述了 Catapult 项目的前世今生。紧接着,Catapult 项目的老大 Doug Burger 在 Ignite 2016 大会上与微软 CEO Satya Nadella 一起做了 FPGA 加速机器翻译的演示。

Ignite 2016 上的演示:每秒 1 Exa-op (10^18) 的机器翻译运算能力

小舍YZ 发表于 2017-3-14 10:36:04

这里就给大家扒一扒这个每秒 1 Exa-op 的数字是怎么算出来的。每块生产环境中部署的 Stratix V FPGA 有 1.8 T ops 的计算能力,每台服务器上插一块 FPGA。实际使用时,每 8 台服务器为一组,一台服务器作为 FPGA 的控制节点。控制节点的 CPU 也可以做机器翻译的计算,但是每个 CPU 核只能做 0.1 T ops,相比 FPGA 是聊胜于无。非控制节点上的 FPGA 通过网络从其他 FPGA 收发数据,不需要本地 CPU 处理数据平面。

截至演示时,微软 Azure 云有 46 万台服务器部署了 FPGA,必应有 1.5 万台,Exchange 服务有 9.5 万台,共计 57 万台。乘起来得到总的计算能力是 103 万 T ops,也就是 1.03 Exa-op,相当于 10 万块顶级 GPU 计算卡。一块 FPGA(加上板上内存和网络接口等)的功耗大约是 30 W,仅增加了整个服务器功耗的十分之一。

小舍YZ 发表于 2017-3-14 10:36:28

对于把 FPGA 部署在哪里这个问题,大致经历了三个阶段:

专用的 FPGA 集群,里面插满了 FPGA
每台机器一块 FPGA,采用专用网络连接
每台机器一块 FPGA,放在网卡和交换机之间,共享服务器网络

小舍YZ 发表于 2017-3-14 10:42:29

第一个阶段是专用集群,里面插满了 FPGA 加速卡,就像是一个 FPGA 组成的超级计算机。下图是最早的 BFB 实验板,一块 PCIe 卡上放了 6 块 FPGA,每台 1U 服务器上又插了 4 块 PCIe 卡。

最早的 BFB 实验板,上面放了 6 块 FPGA

小舍YZ 发表于 2017-3-14 10:50:04

本帖最后由 小舍YZ 于 2017-3-14 11:06 编辑

只要规模足够大,对 FPGA 价格过高的担心将是不必要的。
像超级计算机一样的部署方式,意味着有专门的一个机柜全是上图这种装了 24 块 FPGA 的服务器。这种方式有几个问题:
1.不同机器的 FPGA 之间无法通信,FPGA 所能处理问题的规模受限于单台服务器上 FPGA 的数量;
2.数据中心里的其他机器要把任务集中发到这个机柜,构成了 in-cast,网络延迟很难做到稳定。

3.FPGA 专用机柜构成了单点故障,只要它一坏,谁都别想加速了;
4.装 FPGA 的服务器是定制的,冷却、运维都增加了麻烦。

小舍YZ 发表于 2017-3-14 11:07:10

本帖最后由 小舍YZ 于 2017-3-14 11:26 编辑

一种不那么激进的方式是,在每个机柜一面部署一台装满 FPGA 的服务器。这避免了上述问题 (2)(3),但 (1)(4) 仍然没有解决。

小舍YZ 发表于 2017-3-14 11:08:18

本帖最后由 小舍YZ 于 2017-3-14 11:11 编辑

第二个阶段,为了保证数据中心中服务器的同构性(这也是不用 ASIC 的一个重要原因),在每台服务器上插一块 FPGA,FPGA 之间通过专用网络连接。这也是微软在 ISCA'14 上所发表论文采用的部署方式。

小舍YZ 发表于 2017-3-14 11:11:34

Open Compute Server 在机架中

我是一只小小鸟 发表于 2017-3-14 11:11:48

微软 Azure 云有 46 万台服务器部署了 FPGA

小舍YZ 发表于 2017-3-14 11:13:17

Open Compute Server 内景。
红框是放 FPGA 的位置
页: [1] 2 3 4
查看完整版本: 微软部署 FPGA 的实践