カスタムアクセラレータ付きの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