AWS F1インスタンス上でRISC-Vコアを動かすことのできるFireSimは、徐々にバージョンが上がっており、現在はBOOM(Berkeley Out-of Order Machine)のLinux起動もサポートできるようになっているらしい。
一度、F1インスタンスのチュートリアルはやってみたことがあるのだが、しばらく時間もたっているし、前回はRocketコアで検証した環境を、BOOMコアを使って再検証してみたい。
チュートリアルを見ながら、再度FireSimをF1インスタンス上に構築するチュートリアルを試してみることにした。以下の資料を参考にした。
このセクションではFireSimのシミュレーションに使用する独自のAFIイメージの作成を行う。 AFIとは、Amazon FPGA Imageの略称で、AFIを作成しておけばすぐにAWS F1インスタンスにデザインをデプロイすることができる。
Amazon S3のアカウントをセットアップしていることを前提にする。Amazon S3のコンソール上で[Create bucket]をクリックして新しいバケットをセットアップする。
[Bucket name]は"firesim-(アカウント名)"とする必要がある。そうしないとfiresimがS3バケットを認識してくれない。次に[Next]をクリックした。
そのまま[Next]をクリックし続け、[Create Bucket]をクリックして新しいバケットを生成する。
S3上でバケットの構築が完了すると、次にマネージャインスタンス上で作業を行う。firesim/deploy/config_build.ini
を編集した。
[afibuild] s3bucketname=firesim-msyksphinz [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-lbp # #firesim-singlecore-nic-lbp # #firesim-quadcore-no-nic-lbp # #firesim-quadcore-nic-lbp # firesim-quadcore-no-nic-ddr3-llc4mb # firesim-quadcore-nic-ddr3-llc4mb # #fireboom-singlecore-no-nic-lbp # fireboom-singlecore-no-nic-ddr3-llc4mb # #fireboom-singlecore-nic-lbp # fireboom-singlecore-nic-ddr3-llc4mb # #firesim-supernode-singlecore-nic-ddr3-llc4mb # #firesim-supernode-quadcore-nic-ddr3-llc4mb # firesim-supernode-singlecore-nic-lbp [agfistoshare] firesim-singlecore-no-nic-lbp # #firesim-singlecore-nic-lbp # #firesim-quadcore-no-nic-lbp # #firesim-quadcore-nic-lbp # firesim-quadcore-no-nic-ddr3-llc4mb # firesim-quadcore-nic-ddr3-llc4mb # #fireboom-singlecore-no-nic-lbp # fireboom-singlecore-no-nic-ddr3-llc4mb # #fireboom-singlecore-nic-lbp # fireboom-singlecore-nic-ddr3-llc4mb # #firesim-supernode-singlecore-nic-ddr3-llc4mb # #firesim-supernode-quadcore-nic-ddr3-llc4mb # firesim-supernode-singlecore-nic-lbp
ターゲットとなるfiresim-singlecore-no-nic-lbp
のみを残し、あとはコメントアウトした。これをしっかり行わないと、ターゲットとなるイメージの数だけインスタンスが生成されてしまい、料金がめっちゃかさむことになる。
上記のように編集した後、firesim buildafi
を実行します。処理が完了するのに、3~4時間程度かかる。
しかし一応ビルドが完了したと思われる段階で、Current state : pending
と表示された。これ、合っているのかなあ?
send e-mail to $env(EMAIL)"; [192.168.3.37] out: # exec $env(AWS_FPGA_REPO_DIR)/shared/bin/scripts/notify_via_sns.py [192.168.3.37] out: # } [192.168.3.37] out: # puts "AWS FPGA: ([clock format [clock seconds] -format %T]) - Build complete."; [192.168.3.37] out: AWS FPGA: (14:12:45) - Build complete. [192.168.3.37] out: INFO: [Common 17-206] Exiting Vivado at Sun Apr 14 14:12:45 2019... [192.168.3.37] out: Resulting AGFI: agfi-0cf781ba8d9a177c3 Resulting AFI: afi-04cf716b0e6f8b13f Waiting for create-fpga-image completion. Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending Current state: pending
一応、RTLの生成と、Vivadoでの論理合成とイメージの作成が行われ、その結果がS3に書き込まれている。この中身を確認していこう。