NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

开发者预览版——EC2 实例(F1)携手可编程硬件

  • 2019-11-19
  • 本文字数:2656 字

    阅读完需:约 9 分钟

开发者预览版——EC2实例(F1)携手可编程硬件

你是否曾经在通用型工具与专用型工具之间左右为难?通用型工具可以解决多种不同的难题,但却未必是特定问题的最佳解决选项。相反,专用型工具擅长处理特定问题,但工具的使用频率往往不会很高。


工程师们在设计架构及指令集时同样需要考虑这一问题。他们始终追求能在更加通用的工作负载范围内,提供更佳性能表现的解决方案。然而新型工作负载与工作条件不断涌现,只有定制化硬件才是性能最佳之选。这就要求我们在其中找到平衡点:是要极出色的性能水平,还是要保证以年甚至季度为周期进行衡量的开发生命周期?


走入 FPGA 时代

作为一种备受瞩目的解决方案,我们迎来了基于定制化硬件的现场可编程门阵列机制,或者简称为 FPGA。相较于单纯着眼于一种特定功能的专用型芯片,FPGA 拥有更为出色的灵活性。其能够在现场完成编程,而后再接入 PC 主板的插槽当中。每块 FPGA 中包含一组固定且数量可观的简单逻辑门。对 FPGA 进行编程“基本上”就是将这些逻辑门彼此对接,从而建立起必要的逻辑功能(包括 AND、OR 以及 XOR 等等)或者存储元素(触发器与移位寄存器)。不同于 CPU 的串行本质(即数个并行元素)以及固定大小的指令集与数据路径(通常为 32 位或 64 位),FPGA 能够以编程方式并行执行更多操作,而这些操作本身几乎不设任何宽度或者规模限制。


这种高并行模式非常适合用于构建定制化加速器,从而处理计算密集型工作负载。在经过有针对性的编程之后,FPGA 能够在基因组学、抗震分析、金融网络分析、大数据搜索以及加密算法及应用领域提供高达 30 倍的速度增量。


希望这些优势能够鼓励大家尝试利用 FPGA 加速您的应用程序!不过必须承认,要实现这样的效果,我们还需要克服一系列挑战。首先,FPGA 从传统角度讲属于大规模专用型系统的一类组件。大家无法单纯购买一款并将其接入自己的台式机。相反,实现 FPGA 型解决方案要求我们完成硬件原型设计、硬件设备构建、大规模生产以及漫长的销售与部署周期等筹备工作。漫长的实现时间会限制 FPGA 的适用性,这也意味着摩尔定律指导下的 CPU 类解决方案也许更具成本效益。


但我们相信,我们能够在这方面做得更好!

全新 F1 实例

现在,我们发布了全新 F1 实例的开发者预览版。除了构建应用及服务供您自己使用之外,大家也可以将其进行打包并在 AWS Marketplace 中出售并进行复用。总体而言,大家将能够避免使用 FPGA 支持型解决方案所带来的高昂资本投入与时间消耗,我们提供的方案将带来与其它类型软件相同的商业模式。大家将能够通过云工具设计您自己的逻辑、模拟方案以及验证流程,而后在数天之内将其推向市场。


F1 实例配备有英特尔 Broadwell E5 2686 v4 处理器(基本速度为 2.3 GHz,Turbo 模式下全核心可达 2.7 GHz,Turbo 模式下单核最高可达 3.0 GHz),最多 976 GiB 内存、最高 4 TB NVMe SSD 存储以及一到八块 FPGA,这意味着其能够为大家提供充足的资源以构建自己的核心 FPGA 逻辑。各 FPGA 专用于此实例,且以隔离方式确保在多租户环境下的不致相互影响。


下在来看该 FPGA 的具体规格(请注意,单一 F1 实例中最多可使用八块 FPGA):


  • Xilinx UltraScale+ VU9P,采用 16 纳米制程工艺制造。

  • 64 GiB ECC 保护内存,配合 288 位总线(四 DDR4 通道)

  • 专用 PCIe x 16 CPU 接口

  • 约 250 万逻辑元素

  • 约 6800 套数字信号处理(简称 DSP)引擎

  • 提供虚拟 JTAG 接口用于调试


在包含超过一块 FPGA 的实例当中,专用 PCIe 架构允许各 FPGA 共享同一套内存寻址空间并通过 PCIe Fabric 以最高每秒 12 GB 的单工速率实现彼此通信。单一实例中的各 FPGA 共同接入一套 400 Gbps 双向环状结构以实现低延迟水平与高传输带宽(大家需要定义自有协议以使用这项高级功能)。

FPGA 开发流程

作为这套开发者预览版中的组成部分,我们还提供 FPGA 开发者 AMI。大家可以在内存优化型或者计算优化型实例当中启动该 AMI,从而实现开发与模拟,而后利用 F1 实例进行最终调试及测试。



此 AMI 包含多款开发者工具,大家可以在 AWS Cloud 当中免费加以使用。您需要使用 VHDL 或者 Verilog 编写 FPGA 代码,而后利用Xilinx Vivado设计套件(当然也可以使用第三方模拟工具、高级语言编译器、图形编程工具以及 FPGA IP 库)对代码进行编译、模拟与验证。


下面来看一段简单 8 位计数器的 Verilog 代码示例:



虽然这些语言常被描述为使用类 C 语法,但这并不代表大家可以直接使用现有代码并通过重新编译将其应用于 FPGA 当中。相反,大家需要首先对 FPGA 编程模式进行深入了解,学习布尔代数,而后掌握传播延迟与时钟脉冲边沿等概念。在此基础之上,大家才能够开始考虑将 FPGA 引入您的业务环境。如果这些底层知识对您来说太过艰深,大家亦可使用各类现有高级综合工具,包括 OpenCL 等,进行 FPGA 编程。


在启动自己的实例后,我进行登录、安装多款软件包并设置许可管理器,而后即可运行 Vivado 工具。接下来,我 RDP 到桌面,打开一个终端窗口并以 GUI 模式启动 Vivado:



我随后打开该示例项目(counter.xpr),这就是我初次尝试后的 FPGA 设计与开发成果:



在一番探索之后,我了解了如何建立自己的首个 FPGA(其实我基本上就是到处点点并了解其作用; 我本人在这方面甚至连新手都算不上):



从这里开始,我可以测试自己的设计并将其打包为 Amazon FPGA 镜像(简称 AFI),而后将其运用在自有应用或者发布至 AWS Marketplace 当中。我还将继续摸索,希望能用几周时间弄清一切并向大家汇报。

F1 硬件开发工具包

在了解了 F1 实例之后,我的第一个问题是如何处理 FPGA、CPU 以及主内存之间的接口。F1 硬件开发工具包(简称 HDK)当中包含多款预配置 I/O 接口及示例应用,适用于包括主机到 FPGA、FPGA 到内存以及 FPGA 到 FPGA 等的多种通信方法。其还提供编译脚本、参考示例以及一套现场调试工具。这套工具包可供 F1 开发者预览版的各位用户随意使用。


总结评述

总体来讲,F1 实例、云开发工具与相关功能的结合共同实现了独特且强大的 FPGA 型应用方案。FPGA 模式的强大性能及灵活性如今已经可供每位 AWS 用户使用; 可以肯定,这将激发出前所未有的应用方式与企业业务实现途径。

预览版现已上线!

正如之前提到,全新 F1 实例现已在美国东部(北弗吉尼亚州)区域推出开发者预览版(我们还将在 2017 年年初将该实例的正式版本推向其它服务区)。如果大家此前拥有 FPGA 编程经验并对 F1 实例很感兴趣,请访问:


https://aws.amazon.com/ec2/instance-types/f1/


马上报名加入。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/developer-preview-ec2-instances-f1-with-programmable-hardware/


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-11-19 08:00497

评论

发布
暂无评论
发现更多内容

谷歌三件套 - Bigtable

懒时小窝

bigtable 谷歌 谷歌三件套

在线HTML转JSON工具

入门小站

工具

python小知识-python 函数二三事

AIWeker

Python 5月月更

Flutter 使用 Provider 实现嵌套状态管理

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

linux之crontab使用技巧

入门小站

Linux

PostgreSQL出现死锁怎么办?

慕枫技术笔记

数据库 5月月更

LinkedList 源码分析-迭代器

zarmnosaj

5月月更

密码学系列之:在线证书状态协议OCSP详解

程序那些事

密码学 程序那些事 5月月更

flask框架【入门学习笔记一】

恒山其若陋兮

5月月更

架构学习(一)

爱晒太阳的大白

5月月更

[ CloudWeGo 社区动态 ] Kitex 电商项目案例

baiyutang

Go 微服务 5月月更

数据结构-复杂度计算经典案例

芒果酱

数据结构 算法 5月月更

VS Code配置markdown代码片段

空城机

前端 vscode 5月月更

Java Core「1」JUC-线程基础

Samson

学习笔记 5月月更 Java core

SAP OData V4 模型支持的一些数据绑定模式

Jerry Wang

JavaScript 前端开发 SAP ui5 5月月更

八、浅谈云原生监控

穿过生命散发芬芳

云原生 5月月更

SpringMVC源码分析:POST请求中的文件处理

程序员欣宸

Java spring 5月月更

Amazon CodePipeline 与 GitHub 集成

亚马逊云科技 (Amazon Web Services)

GitHub Code

Linux 入门及常见Shell命令

宇宙之一粟

Linux Shell 5月月更

Sentinel介绍与使用 收藏起来

牧小农

sentinel

小公司里面的 Python 后端,数据库(MySQL)到底要学习到什么程度?

梦想橡皮擦

5月月更

【刷题第16天】数组中出现次数超过一半的数字

白日梦

5月月更

模块6作业提交

KennyQ

电商系统微服务拆分

Trent

架构 微服务拆分 电商 训练营

react-router原理分析

正经工程师

React React-Router

数学建模学习资料

乌龟哥哥

5月月更

Kubernetes 节点弹性扩展实践组件 Amazon Karpenter:部署 GPU 推理应用

亚马逊云科技 (Amazon Web Services)

Kubernetes 部署

模块六作业 微服务拆分

库尔斯

架构实战营

【C 语言】指针 Five 之 ["⚔ 野指针,🗡 如何规避野指针,💣 指针的未初始化,💣指针越界访问"]

謓泽

C语言 5月月更

在线蚂蚁文,菊花文生成工具

入门小站

工具

拆分电商系统为微服务

Dean.Zhang

开发者预览版——EC2实例(F1)携手可编程硬件_语言 & 开发_Q资讯_InfoQ精选文章