# Amazon EC2 F1インスタンス入門ワークショップに参加しました Hacarusインターン生の前田です。 タイトルの通り、F1インスタンスの入門ワークショップに参加してきました。このレポートではワークショップで学んできたことをまとめます。 ## F1インスタンスって? F1インスタンスとは、FPGA(Xilinx Virtex UltraScale+ VU9P)が搭載されたEC2のインスタンスです。 FPGAとはField Programmable Gate Arrayの略で、ASICで実装出来る論理機能をユーザが現場でプログラムし、FPGA上にハードウェアとして実装することが出来ます。ロジックと配線を自由に変更することができ、用途に合わせて再構成して利用することが可能です。 F1インスタンスの具体的な構成は * Intel Xeon E5-2686v4(2.3GHz, Turbo mode対応) * 1-8個のFPGA(Xilinx Virtex UltraScale+ VU9P) * 最大約4TBのNVMe接続SSD となっています。 F1インスタンスに提供される開発環境には * AWS FPGAデベロッパーフォーラム * FPGA Developer AMI(Vivado, SDAccel)(無償) * Hardware Developer Kit(github上で公開) があります。 ## F1インスタンスを使う利点 近年FPGAは消費電力の低さや、CPUのように予め定められた命令列に依存しないことによる柔軟な処理ができる点で評価されています。他にはクラウドで処理を行う際の前処理としてエッジで計算をするために使う用途もあります。 F1インスタンスでFPGAを使うことによって得られる一番の利点はFPGAをつかったハードウェアアクセラレータをクラウド上で使えることではないかと思います。これをうまく活用することでクラウド上での処理をより高速化することが可能となります。 ## F1インスタンスを使った処理の実行 今回のワークショップでは、FPGAをハードウェアアクセラレータとして使う用途が想定されていました。 すでに存在するFPGAイメージを使用する際の大まかな流れとしては 1. AMI(OSイメージ)をF1インスタンス上に展開してOSを起動 2. OS上からAPIを使用してF1インスタンスに搭載されたFPGAにAFI(FPGAイメージ)をダウンロード 3. OS上のホストアプリケーションを実行してFPGA上で処理を実行 となります。 特に、AFI,AMIはAWS Marketplace上のものを用いることでFPGA特有の開発をすることなく、FPGAを用いたハードウェアアクセラレーションを活用することが可能になります。 ## FPGAを活用したハードウェアアクセラレータの設計及びAFIの作成 前節では作成済みのAFIイメージをF1インスタンス上に載せる方法を説明しました。では、AFIを作成するにはどうすればよいのでしょうか?基本的にはXilinxのSDAccelや、AWS HDK(Hardware Development Kit)などを使って開発します。 まず、C/C++, OpenCL, RTLからSDAccelコンパイラを使ってカーネル(.xo)を生成します。このカーネルから、コンパイラがFPGAデザインを組み立て、このFPGAデザインにたいして論理合成と配置配線を行うことでFPGAバイナリ(.xclbin)が生成されます。 生成したバイナリからAmazon FPGA Image(AFI)を生成します。xclbinファイルは暗号化されたAFIに変換され、生成されたAFIはAWSのバックエンドサービスによってセキュアに保存されます。SDAccelの提供する機能によって記述したロジックをシミュレーションすることも可能です。 AFIの生成を行うには次の2つの手続きを踏みます。 1. 事前準備 * SW/HWエミュレーションを通してコードの検証を行う * SDAccelを使用して、Xilinx FPGAバイナリ(.xclbin)をビルド * AWS CLI及びS3バケットをセットアップ 2. AWS create_sdaccel_afi.shスクリプトを使用してAWS FPGAバイナリ(aws xclbin)を作成し、安全かつ暗号化されたAmazon FPGA Image(AFI)を登録する。 * バックグラウンドプロセスを開始してAFIを作成 * 生成されたAFIのAmazon FPGA Image ID(AFI ID)とAmazon Global FPGA Image ID(AFGI ID)を含む"\<timestamp\>_afi_id.txt"ファイルを生成 * ホストアプリケーションが読み取る"*.awsxclbin" AWS FPGAバイナリファイルを作成し、FPGAにロードするAFIを決定 Amazon FPGA Image ID(AFI ID)とは、AWS CLIやSDI APIでAFIを管理する際のメインIDです。 IDはリージョンごとに異なります。 Amazon Global FPGA Image ID(AGFI ID)とは、F1インスタンス内でグローバルで一意に定まるIDである。FPGAコマンドを使用しているFPGAスロットへのロード、クリア等を行う際に使用される。また、グローバルで一意に定まるIDであるため、AFI/AMIを複数のリージョン間でコピーして使用する際に、リージョン毎にAGFI IDを変更する必要はありません。 SDAccelは記述したロジックをシミュレーションする機能も提供しているため、自分の実装が正しいかどうかを適当な段階でチェックすることが出来ます。 ## 終わりに 今回のワークショップでは、すでにあるAFIイメージを実際にF1インスタンス上で動作させるまでを体験しました。 ただ、FPGAについてよく挙げられる利点である消費電力の低さやエッジでの前処理用途などはクラウド上ではあまり役に立たない点なので、このインスタンスを使うことによる嬉しさはあまりわからず... それでもいくつか利点を挙げるとすれば 1. FPGAボードを買うための初期投資が不要になること 2. AFIイメージを(有償で)共有できるため、将来はよくある用途に対して自前でロジックを書く必要がなくなる可能性があること 3. うまくやればクラウド上での計算を単純に高速化出来ること でしょうか。 2017年4月に登場したF1インスタンスですが、今後どのようにコミュニティが成長していくのか楽しみです。 わかりづらい点や間違いがあれば、前田まで連絡ください。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up