AWS EC2 F1インスタンス入門
AWS EC2 F1インスタンスとは
AWS EC2 F1インスタンス(以降、F1インスタンスと省略)とは、EC2インスタンスにXilinx UltraScale+ VU9PベースのFPGAを搭載したインスタンスです。
FPGA(field-programmable gate array)とは、ユーザが使う現場でプログラム可能な集積回路です。CPUは、工場からの出荷段階で回路を変更できませんが、FPGAは装置の起動時や起動後の実行中に回路の構成を変更できます。FPGAを使ってアプリケーション独自の回路(Custom Logic: CL)を特別にプログラミングすると、そのアプリケーションの用途に限ってはCPUよりも低遅延かつ大量にデータを処理する事ができます。
ムーアの法則の終焉が語られ、CPUのコア単体での処理性能が頭打ちになってきている現在、FPGAを利用して処理性能を向上させる事に注目が集まってきています。
F1インスタンスでのFPGA利用までの流れ
アプリケーション固有の回路を開発して、F1インスタンスで利用するまでの流れは以下の通りです。
- FPGAイメージの開発用のEC2インスタンス(以降、開発用インスタンスと呼びます)をセットアップ
- 開発用インスタンスで、回路のコードをプログラミングし、コードからFPGAイメージの元データ(DCP)をビルドし、S3にアップロードしてFPGAイメージを作成
- Amazon EC2 F1 インスタンス(以降、実行用F1インスタンスと呼びます)をセットアップ
- 実行用F1インスタンスでS3にアップロードされたFPGAイメージをロード
- 実行用F1インスタンスでFPGAの機能を呼び出すプログラムを実行
コードやビルドの成果物は以下のような流れになります。
実行用F1インスタンスで開発用インスタンスを兼用する事もできますが、実行用F1インスタンスの料金は高いので、DCPのビルド作業は料金の安い普通のEC2インスタンス(それでも32GiB以上のメモリが必須)で行います。
例)
用途 | インスタンス | 料金 |
---|---|---|
開発用 | z1d.xlarge | 0.372USD/時間 |
実行用 | f1.2xlarge | 1.65USD/時間 |
具体的な作業については、Hello Worldを実行した例を参照してください。
開発環境と開発用の言語
開発に使えるツールと、独自回路(Custom Logic)の開発に使える言語は以下の通りです。
ツール | 言語 |
---|---|
Vitis/SDAccel | C/C++/OpenCL, Verilog/VHDL |
Vivado | Verilog/VHDL |
Vivado HLx | Verilog/VHDL/C |
Vivadoを使った開発については、AWS FPGA Hardware Development Kit (HDK)を参照してください。