FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages

AWS F1インスタンス上のFireSimを実行する(9. カスタマイズしたFireSimのFPGAイメージを作成する)

f:id:msyksphinz:20190405012417p:plain

カスタムアクセラレータ付きのFireSimデザインが完成したので今度はVivadoで合成し、f1インスタンスで動作させるためのAGFIを作成する。AGFIとはAmazon Global FPGA Image IDの略称で、FPGAのイメージのようなものだ。このイメージIDを指定することで、何度もVivadoの合成を動かす必要なく、f1インスタンスFPGAに書き込むことができる。

cd firesim/deploy

FireSimのコンフィグレーションをビルドするためには、config_build_recipes.config_build.iniを編集する。 このファイルを編集することで、どのコンフィグレーションを合成しFPGAイメージを作成するのかを指定することができる。ここではビルドターゲットにfiresim-singlecore-no-nic-matrixmulを設定する。s3bucketnameは"firesim-[ユーザ名]"に変更しておく。

  • firesim/deploy/config_build_recipes.ini
...
[firesim-singlecore-no-nic-matrixmul]
DESIGN=FireSimNoNIC
TARGET_CONFIG=FireSimRocketChipMatrixMulConfig
PLATFORM_CONFIG=FireSimConfig160MHz
instancetype=c4.4xlarge
deploytriplet=None
...
  • firesim/deploy/config_build.ini
[afibuild]

s3bucketname=firesim-msyksphinz
buildinstancemarket=ondemand
spotinterruptionbehavior=terminate
spotmaxprice=ondemand
postbuildhook=

[builds]
# this section references builds defined in config_build_recipes.ini
# if you add a build here, it will be built when you run buildafi
firesim-singlecore-no-nic-matrixmul
# firesim-singlecore-no-nic-lbp
...

[agfistoshare]
firesim-singlecore-no-nic-matrixmul
# firesim-singlecore-no-nic-lbp
...

[sharewithaccounts]
somebodysname=123456789012

設定が完了すると、ビルドを行います。コマンドラインで以下のように入力する。

firesim buildafi

ビルドが始まる。ビルドには2~3時間かかる。

ビルドが完了すると、以下のようなメッセージがログの中に現れる(これらのログはfiresimコマンドを実行する度にすべてファイルに保存されるので、安心してよい)。

2019-05-09 05:43:23,541 [aws_build   ] [INFO ]  Your AGFI has been created!
Add
[firesim-singlecore-no-nic-matrixmul]
agfi=agfi-09f5ba9b181d00aeb
deploytripletoverride=None
customruntimeconfig=None


to your config_hwdb.ini to use this hardware configuration.

AGFIが作成された。 指示にある通り、config_hwdb.iniにこのAGFIを追加する。 これにより、FireSimがカスタマイズしたRocketコアを使用できるようになった。

  • firesim/deploy/config_hwdb.ini
# Hardware config database for FireSim Simulation Manager
# See docs/Advanced-Usage/Manager/Manager-Configuration-Files.rst for documentation of all of these params.

# Hardware configs represent a combination of an agfi, a deploytriplet override
# (if needed), and a custom runtime config (if needed)

# The AGFIs provided below are public and available to all users.
# Only AGFIs for the latest release of FireSim are guaranteed to be available.
# If you are using an older version of FireSim, you will need to generate your
# own images.

...

[firesim-singlecore-no-nic-matrixmul]
agfi=agfi-09f5ba9b181d00aeb
deploytripletoverride=None
customruntimeconfig=None