Hot Chips 29で、AmazonはWeb ServiceでFPGAが使えるF1インスタンスについて発表を行った。Microsoftは自社の検索や翻訳などのサービスの性能改善にFPGAを利用し、FPGAの利用という点ではMicrosoftのAzureクラウドの方が先行しているが、クラウドユーザに直接FPGAを使わせるというサービスは、まだ、行っていない。

これに対して、AmazonのAWSは、2016年12月にF1インスタンスというFPGAを直接使える使い方を発表した。このF1インスタンスについて、AmazonがHot Chips 29について発表を行った。

AWS(Amazon Web Service)ではCPUやストレージだけでなく、GPUやFPGAといったアクセラレータを含む以下の図のような各種のインスタンスを提供している。そのうちの右端の一番上のF1インスタンスが今回追加されたFPGAを含むインスタンスである。

AWSのインスタンスの一覧。2017年にFPGAを使えるF1インスタンスが追加された (このレポートの図は、すべてHot Chips 29におけるAmazonの発表資料のコピーである)

F1インスタンスを追加した目的は、開発者に対して、FPGAをAWSの標準インスタンスとして使用可能とし、FPGAで高性能化したシステムを多くのエンドユーザーに使ってもらえるようにすることである。そして、クラウドベースのFPGA開発ツールを提供し、FPGAの開発を簡単にし、開発者に対してFPGAを抽象化してアルゴリズムの開発に集中してもらえるようにすることも目的としている。

さらに、 FPGAにより高性能化されたアプリケーションをマーケットプレースで提供し、AWSユーザの選択の幅を広げることを目的としている。

つまり、単にFPGAが使えるようにするだけでなく、最終的にはFPGAを使ってアプリの性能を高め、そのアプリが広く使われ、AWSユーザが増えることを狙っているというわけである。

次の図に示すように、FPGAはPCI Express経由でCPUに接続され、計算が多く、深いパイプラインでの処理ができるところに向いている。そして、それ以外の処理はCPUが担当するという処理モデルである。

FPGAはPCIe経由で接続され、計算が多くパイプライン化された処理などに使い、残りはCPUで処理する。最大8個のFPGAを使うことができる

f1.2xlargeとf1.16xlargeという2種のモデルがあり、前者はFPGAは1個で、vCPUが8個、メモリは122GiBとなっている。f1.16xlargeは8倍の規模で、FPGAが8個、vCPUが64個、メモリは976GiBとなっている。さらに、f1.16xlargeは8個のFPGAをつなぐx16PCI Expressネットワークを持ち、8個のFPGAが共通のメモリスペースを使えるようになっている。また、400Gbpsのリングを持ち、これを使って外部との高速のデータストリーミングが可能である。

使用しているFPGAはXilinxのVirtex UltraScale+(製品型番:XCVU9P)で、約2.5M個のロジックエレメント、約6,800個のDSP、約345MbitのブロックRAMを内蔵している。

f1.2xlargeとf1.16xlargeの2つのモデルが提供されている。f1.2xlargeはFPGAは1個、vCPUは8個、メモリは122GiBに対して、f1.16xlargeはFPGA8個、vCPU64個、メモリは976GiBである。使っているFPGAは、どちらのモデルもXilinxのVirtex UltraScale+(XCVU9P)である。

インスタンスの起動にはAmazon Machine Image(AMI)をロードするが、FPGAを使う場合は、Amazon FPGA Image(AFI)もロードする必要がある。AFIのローディングは1秒以内で終わるという。

CPUとFPGAはx16のPCI Expressで接続され、FPGAにはDDR4のDRAMメモリが付き、FPGAリンクで外部とのデータ転送ができるようになっている。

FPGAを使うには、Amazon Machine Image(AMI)をロードするのに加えて、Amazon FPGA Image(AFI)をFPGAにロードする

FPGAのロジックの開発には、XilinxのFPGA開発ツールであるVivadoとVerilogやVHDLといったハードウェア記述言語を使う。そして、HDK(Hardware Development Kit)を使い高級言語のOpenCLでロジックを記述するというやり方もサポートされている。

XilinxのFPGA開発ツールであるVivadoを使ってFPGAのロジックを開発する。VerilogやVHDLといったハードウェア記述言語だけでなく、高級言語であるOpenCLでロジックを記述する方法もサポートされている

FPGAのロジックは設計しなければならないので、ハードウェアをまったく意識しないで済むというわけではないが、物理的なFPGAハードウェアに手を触れることなく、FPGAをアクセラレータとして使えるというのは、ある意味、驚きである。特にf1.16xlargeでは8個のFPGAが使えるということで、かなりの規模のアクセラレータが作れるのではないかと思われる。

FPGAの設計が必要な分、GPUの使用に比べて敷居が高く、どの程度のユーザが付くのか懸念されるが、FPGAの特性を生かした高性能のアプリやAFIがマーケットプレイスに揃ってくれば、面白い。

なお、f1.2xlargeインスタンスのオンデマンドの使用料は1時間あたり1.65ドル、f1.16xlargeの使用料は1時間あたり13.20ドルである。ただし、これは米国東部のバージニア北部センターを使った場合の費用であり、現状では、このセンター以外ではf1インスタンスはサポートされていないようである。