这里就给大家八一八这个每秒 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,仅增加了整个服务器功耗的十分之一。 微软部署 FPGA 并不是一帆风顺的。对于把 FPGA 部署在哪里这个问题,大致经历了三个阶段: 专用的 FPGA 集群,里面插满了 FPGA 每台机器一块 FPGA,采用专用网络连接 每台机器一块 FPGA,放在网卡和交换机之间,共享服务器网络 微软 FPGA 部署方式的三个阶段,来源:[3] 第一个阶段是专用集群,里面插满了 FPGA 加速卡,就像是一个 FPGA 组成的超级计算机。下图是最早的 BFB 实验板,一块 PCIe 卡上放了 6 块 FPGA,每台 1U 服务器上又插了 4 块 PCIe 卡。 最早的 BFB 实验板,上面放了 6 块 FPGA。来源:[1] 只要规模足够大,对 FPGA 价格过高的担心将是不必要的。 最早的 BFB 实验板,1U 服务器上插了 4 块 FPGA 卡。来源:[1] 像超级计算机一样的部署方式,意味着有专门的一个机柜全是上图这种装了 24 块 FPGA 的服务器(下图左)。这种方式有几个问题: 不同机器的 FPGA 之间无法通信,FPGA 所能处理问题的规模受限于单台服务器上 FPGA 的数量; 数据中心里的其他机器要把任务集中发到这个机柜,构成了 in-cast,网络延迟很难做到稳定。 FPGA 专用机柜构成了单点故障,只要它一坏,谁都别想加速了; 装 FPGA 的服务器是定制的,冷却、运维都增加了麻烦。
部署 FPGA 的三种方式,从中心化到分布式。来源:[1] 一种不那么激进的方式是,在每个机柜一面部署一台装满 FPGA 的服务器(上图中)。这避免了上述问题 (2)(3),但 (1)(4) 仍然没有解决。 第二个阶段,为了保证数据中心中服务器的同构性(这也是不用 ASIC 的一个重要原因),在每台服务器上插一块 FPGA(上图右),FPGA 之间通过专用网络连接。这也是微软在 ISCA'14 上所发表论文采用的部署方式。 Open Compute Server 在机架中。来源:[1] Open Compute Server 内景。红框是放 FPGA 的位置。来源:[1] 插入 FPGA 后的 Open Compute Server。来源:[1]
FPGA 与 Open Compute Server 之间的连接与固定。来源:[1] FPGA采用Stratix V D5,有172K个ALM,2014个M20K片上内存,1590个 DSP。板上有一个8GB DDR3-1333内存,一个PCIe Gen3 x8接口,两个10 Gbps网络接口。一个机柜之间的FPGA采用专用网络连接,一组10G网口8个一组连成环,另一组10G网口6个一组连成环,不使用交换机。 机柜中 FPGA 之间的网络连接方式。来源:[1] (责任编辑:本港台直播) |