手把手教你在FPGA实例上运行“Hello World”
前言
在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/ centos@
登录以后可以看到下面的信息:
___ ___ ___ _ ___ _____ __ _ __ __ ___
| __| _ / __| /_ | | __ / / /_ | / |_ _|
| _|| _/ (_ |/ _ | |) | _| V / / _ | |/| || |
|_| |_| ___/_/ _ |___/|___| _/ /_/ __| |_|___|
AMI Version: 1.2.0
Readme: /home/centos/src/README.md
GUI Setup Steps: /home/centos/src/GUI_README.md
AMI Release Notes: /home/centos/src/RELEASE_NOTES.md
Xilinx Tools: /opt/Xilinx/
Developer Support: https://github.com/aws/aws-fpga/blob/master/README.md#developer-support
注意这里提到的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设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)