查看原文
其他

大咖专栏 | 手把手教你在FPGA实例上运行“Hello World”

2017-04-25 AWS云计算


大咖专栏

大咖专栏主要刊登亚马逊AWS诸位大咖亲自撰写的Blog,内容涉猎广泛,话题讨论前沿,且与实战紧密相连。我们非常欢迎小伙伴们在评论区留言,与大咖互动交流!


今天为大家撰文的大咖,是我们的AWS解决方案架构师——邓明轩老师。

邓明轩

AWS解决方案架构师

邓明轩拥有15年IT 领域的工作经验,先后在IBM,RIM,Apple 等企业担任工程师、架构师等职位;目前就职于AWS,担任解决方案架构师一职。他喜欢编程,喜欢各种编程语言,尤其喜欢Lisp。邓明轩喜欢新技术,喜欢各种技术挑战,目前在集中精力学习分布式计算环境下的机器学习算法。

在4月19号的旧金山AWS技术峰会上,亚马逊CTO Werner Vogels宣布了多项AWS新功能,其中就包括众人期待已久的FPGA实例F1。

F1 实例配有最新的 16 nm Xilinx UltraScale Plus FPGA,目前有f1.2xlarge和f1.16xlarge两种类型,其中f1.2xlarge配备有1个FPGA卡, f1.16xlarge配备有8个FPGA卡。

使用 F1 实例部署硬件加速在许多高性能计算 (HPC) 应用程序中非常有用,可解决需要高带宽、增强型联网和较高计算能力的复杂科学、工程和业务问题。F1 实例尤其适用于有时间要求的应用程序,如临床基因组学、实时视频处理和财务风险分析。


因为这段时间都在学习神经网络,所以F1实例最吸引我的是在FPGA上部署神经网络模型,神经网络的前向计算以高频脉冲的方式同时发生在门电路构成的神经网络单元上,想想都让人激动。


不过FPGA这个东西确实太专业了,入门学习曲线不是一般的陡,启动F1实例运行一个简单的Hello World都需要折腾一番。


所以在这里记录一下自己启动F1实例运行Hello World的过程,供各位参考,希望可以让大家开始开始FPGA的旅程。

启动F1实例

F1实例的启动过程和一般的EC2启动过程类似。有关AWS账号的准备、EC2创建过程的细节,请大家参考相关技术文档,以下只列出一些需要注意的地方。


测试时我选择了“弗吉尼亚北部”这个区域,也就是us-east-1区域。


启动F1实例时强烈推荐使用 AWS FPGA Developer AMI 镜像, FPGA Developer AMI 包括一个预先打包的工具开发环境,其中含有用于模拟 FPGA 设计、编译代码及构建和注册 AFI 的脚本和工具。


在启动实例的第一步,选择系统镜像的时候选择“AWS Marketplace”,然后搜索“FPGA”就可以找到FPGA Developer AMI, 该镜像在弗吉尼亚北部区域的ID为:ami-3afc6f2c,镜像选择界面截图如下。

启动过程中注意给你的实例指定一个IAM Role, 后续使用AWS CLI命令行工具的时候就需要配置静态的Access Key和Secret Key了。


还有就是安全组配置,缺省的22号端口保留打开状态,另外建议开3389端口,后续如果你希望使用远程连接的方式使用图形化界面需要用到这个端口。


还有一个不需要再强调的就是你启动的F1实例需要有公有IP。

系统登录

在F1实例启动后在EC2控制台上找到这台实例的公有IP地址,然后通过SSH命令连接该实例,注意使用的用户名是centos,SSH命令样例如下:

ssh -i ~/.ssh/<mykey.pem> centos@<ip address>

登录以后可以看到下面的信息:

注意这里提到的GUI设置说明文档: /home/centos/src/GUI_README.md,如果你后续希望使用图形化界面,请参考这个文档进行操作。

克隆AWS FPGA项目

在远程F1实例上创建一个工作目录,在该工作目录下执行以下命令克隆AWS FPGA 项目:

git clone https://github.com/aws/aws-fpga.git

执行完成以后可以看到一个aws-fpga目录。

安装 FPGA SDK

进入aws-fpga目录,然后执行以下命令安装FPGA SDK:

source sdk_setup.sh

安装命令执行完以后会有以下输出,表示安装成功:

Done with SDK install.

Done with AWS SDK setup.

这个过程会安装好FPGA管理工具,通过这个管理工具可以查看FPGA卡的情况,列出FPGA卡上的镜像情况,还可以执行加载镜像等操作。


首先我们可以通过fpga-describe-local-image-slots命令查看FPGA卡的情况,这里就是FPGA的“image slot”的情况,具体命令请如下:

sudo fpga-describe-local-image-slots -H

在我的 f1.2xlarge 实例上有如下输出:

$ sudo fpga-describe-local-image-slots -H

Type  FpgaImageSlot  VendorId    DeviceId    DBDF

AFIDEVICE    0       0x1d0f      0x1042      0000:00:1d.0

这里列出的就是slot 0的情况,接着你可以使用fpga-describe-local-image-slots命令查看这个slot上的FPGA镜像情况:

sudo fpga-describe-local-image -S 0

其中参数 -S 用于指定希望查看的image slot,参数值就是FPGA image slot的编号。


如果你希望将新的FPGA镜像加载到一个image slot上, 你可以使用命令 fpga-load-local-image,同时通过参数 -S 指定image slot的编号,通过 -I 参数指定需要加载的FPGA镜像ID,如:

sudo fpga-load-local-image -S 0 -I agfi-0123456789abcdefg

有关FPGA管理工具的更多信息,请参考以下链接:


https://github.com/aws/aws-fpga/blob/master/sdk/userspace/fpga_mgmt_tools/README.md

在接下来的内容里,我们会介绍:

安装FPGA HDK

配置 AWS CLI

构建DCP

上传文件到S3

后续工作


请感兴趣的小伙伴点击“阅读原文

或扫描/长按识别下方的二维码

阅读完整版文章


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存