FireSimのチュートリアルを試す続き。前回はなぜかFireSimが起動せずに終わった。
色々調べていくと、FireSimを立ち上げる際のF1インスタンスの設定で、t1.nanoで生成したVPCとサブネットを使用しなければならなかった。
AWSコンソール上でこれを確認してF1インスタンスを作り直すと、正しくFireSimの設定ができるようになった。
前回失敗したところからやり直して、ソフトウェアのビルド、コンフィグレーションの設定を行う。
次に、Farmの立ち上げをやり直す。
$ firesim launchrunfarm FireSim Manager. Docs: http://docs.fires.im Running: launchrunfarm Waiting for instance boots: f1.16xlarges Waiting for instance boots: m4.16xlarges Waiting for instance boots: f1.2xlarges i-09d74249c75ecbc8e booted! The full log of this run is: /home/centos/firesim/deploy/logs/2018-06-22--14-16-08-launchrunfarm-BFTH799Z7TMEBRWK.log
これは何をしているのかというと、上記で設定したrunfarm
の設定を実行している。これにより、EC2でのRocket-Chipの実行が始まる。上記の設定により、f1_2xlarges
が使用されるシングルノードのRocket-Chipが実行される。
- runfarmの設定(
firesim/deploy/config_runtime.ini
より抜粋)
[runfarm] runfarmtag=mainrunfarm f1_16xlarges=0 m4_16xlarges=0 f1_2xlarges=1 runinstancemarket=ondemand spotinterruptionbehavior=terminate spotmaxprice=ondemand
次に、シミュレーションインフラを立ち上げる。Rocket-Chipに必要なソフトウェアインフラやネットワークの設定が行われる。
$ firesim infrasetup FireSim Manager. Docs: http://docs.fires.im Running: infrasetup Building FPGA software driver for FireSimNoNIC-FireSimRocketChipQuadCoreConfig-FireSimDDR3FRFCFSLLC4MBConfig [192.168.1.98] Executing task 'instance_liveness' [192.168.1.98] Checking if host instance is up... [192.168.1.98] Executing task 'infrasetup_node_wrapper' [192.168.1.98] Copying FPGA simulation infrastructure for slot: 0. [192.168.1.98] Installing AWS FPGA SDK on remote nodes. [192.168.1.98] Unloading EDMA Driver Kernel Module. [192.168.1.98] Copying AWS FPGA EDMA driver to remote node. [192.168.1.98] Clearing FPGA Slot 0. [192.168.1.98] Flashing FPGA Slot: 0 with agfi: agfi-0eaa90f6bb893c0f7. [192.168.1.98] Loading EDMA Driver Kernel Module. The full log of this run is: /home/centos/firesim/deploy/logs/2018-06-22--14-18-25-infrasetup-MRHU7BID9CAQJA1E.log
最後に、シミュレーションを実行しよう。
$ firesim runworkload
これによりFireSimが立ち上がりシミュレーションが始まるのだが、正常に立ち上がると以下のような画面が表示され、F1インスタンスでRocket-Chipが実行中であるということが示される。 これは常に表示されており、常に自動的に状態が更新されるようになっている。
といわけでコンソールが埋まってしまったので、別のコンソールを立ち上げてc1.4xlarge
インスタンスにログインする。
firesim
ディレクトリに移りsource sourceme-f1-manager.sh
で再び環境を呼び込み、F1インスタンス上で実行しているRocket-Chipに対してログインを実行する。
上記の画面では、 192.168.1.98
に対してRocket-Chipが生成されたので、
ssh 192.168.1.98
おっしてscreen
を立ち上げてシリアルコンソールを確認する。
screen -r fsim0
とすると、Rocket-Chip上でLinuxが立ち上がっておりログイン画面が表示されている。 ブート成功だ!
さっそくログインする。ログイン名はroot
, パスワードはfiresim
だ。
ログインできるところまで来ると、シミュレーションは成功だ。
後片付け
シミュレーションを終了するときは、Linux上でpoweroff -f
を実行する。
するとRocket-Chipがシャットダウンし、F1インスタンス上で表示されたRocket-Chipの状態を示すコンソールも自動的に閉じられる。
そして、最後に後片付けをして完了だ。
firesim terminaterunfarm