FPGA開発日記

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

AWS F1インスタンス上のFireSimでBOOMコアをシミュレーションする試行(3. FireSimリポジトリのセットアップとビルド)

f:id:msyksphinz:20190405012417p:plain

AWS F1インスタンス上でRISC-Vコアを動かすことのできるFireSimは、徐々にバージョンが上がっており、現在はBOOM(Berkeley Out-of Order Machine)のLinux起動もサポートできるようになっているらしい。

fires.im

一度、F1インスタンスチュートリアルはやってみたことがあるのだが、しばらく時間もたっているし、前回はRocketコアで検証した環境を、BOOMコアを使って再検証してみたい。

チュートリアルを見ながら、再度FireSimをF1インスタンス上に構築するチュートリアルを試してみることにした。以下の資料を参考にした。

docs.fires.im

鍵のセットアップ

マネージャインスタンスから、FireSimを経由して立ち上げるためのインスタンスを制御するために使用する鍵を用意する必要があり、 これは、前回ダウンロードした"firesim.pem"をそのまま流用する。scpなどの転送ツールを使用して、"firesim.pem"をマネージャインスタンスのホームディレクト~/firesimpemにコピーしておく。

マネージャインスタンスへのコピーが完了すると、ファイルのパーミッションを確認しておく。

chmod 600 firesim.pem

FireSimリポジトリのダウンロードとセットアップ

FireSimのリポジトリをダウンロードし、セットアップを行う。

git clone https://github.com/firesim/firesim
cd firesim
./build-setup.sh fast

./build-setup.shでは、RISC-Vのコンパイラやツールセット群などをダウンロードするが、fastオプションがついているので、プレビルドされたツール群がダウンロードされる。

distrib/var/run/
Makefile:25: XVC_FLAGS: .
make -C /lib/modules/3.10.0-862.11.6.el7.x86_64/build M=/home/centos/firesim/platforms/f1/aws-fpga/sdk/linux_kernel_drivers/xdma modules
make[1]: Entering directory `/usr/src/kernels/3.10.0-862.11.6.el7.x86_64'
/home/centos/firesim/platforms/f1/aws-fpga/sdk/linux_kernel_drivers/xdma/Makefile:25: XVC_FLAGS: .
  Building modules, stage 2.
/home/centos/firesim/platforms/f1/aws-fpga/sdk/linux_kernel_drivers/xdma/Makefile:25: XVC_FLAGS: .
  MODPOST 1 modules
make[1]: Leaving directory `/usr/src/kernels/3.10.0-862.11.6.el7.x86_64'
sudo: pip3: command not found

おや、エラーが出てきた。。pip3コマンドが存在しないようだが、これはpip3.4としてインストールされている。とりあえずbuild-setup-nolog.shを少し書き換えた。

diff --git a/build-setup-nolog.sh b/build-setup-nolog.sh
index 52c0a5d..da674bd 100644
--- a/build-setup-nolog.sh
+++ b/build-setup-nolog.sh
@@ -97,7 +97,7 @@ make

 # Set up firesim-software
 cd $RDIR
-sudo pip3 install -r sw/firesim-software/python-requirements.txt
+sudo pip3.4 install -r sw/firesim-software/python-requirements.txt

 # commands to run only on EC2
 # see if the instance info page exists. if not, we are not on ec2.

もう一度実行する。

./build-setup.sh fast
...
Root privileges are required to install. You may be asked for your password...
Executing as root...

AWS FPGA: Copying Amazon FPGA Image (AFI) Management Tools to /usr/bin
AWS FPGA: Installing shared library to /usr/local/lib64
        libfpga_mgmt.so.1 (libc6,x86-64) => /usr/local/lib64/libfpga_mgmt.so.1
AWS FPGA: Done with Amazon FPGA Image (AFI) Management Tools install.
Done with SDK install.
INFO: sdk_setup.sh PASSED
Agent pid 7343
Identity added: /home/centos/firesim.pem (/home/centos/firesim.pem)
success: firesim.pem added to ssh-agent
Setup complete!
To use the manager to deploy builds/simulations, source sourceme-f1-manager.sh to setup your environment.
To run builds/simulations manually on this machine, source sourceme-f1-full.sh to setup your environment.

完了した。メッセージに表れているように、source sourceme-f1-manager.shを実行する。

これによりAWSのシェルにRISC-VツールセットのPATHが追加され、ssh-agentが起動され他のノードにアクセスする場合に自動的に~/firesim.pemが使用されるように設定される。 マネージャインスタンスを立ち上げたときは、毎回このコマンドを入力する必要があるようだ。

~/firesim$ source sourceme-f1-manager.sh  # 毎回~/firesimディレクトリに移動して、このコマンドを入力する必要がある。
Agent pid 7343
success: firesim.pem available in ssh-agent

FireSimのマネージャには、FireSimのセットアップを続けるための様々なコマンドが用意されているので、これを使用するために、まず以下を入力する。

~/firesim$ firesim managerinit
FireSim Manager. Docs: http://docs.fires.im
Running: managerinit

Running aws configure. You must specify your AWS account info here to use the FireSim Manager.
[localhost] local: aws configure
AWS Access Key ID [None]:

t2.nanoで設定したものと同じことを聞かれるので。同様に設定を行う。

~/firesim$ firesim managerinit
FireSim Manager. Docs: http://docs.fires.im
Running: managerinit

Running aws configure. You must specify your AWS account info here to use the FireSim Manager.
[localhost] local: aws configure
AWS Access Key ID [None]: # AWSのアクセスキーをここに入力する。
AWS Secret Access Key [None]: # AWSのシークレットアクセスキーをここに入力すr。
Default region name [None]: us-east-1 # North Virginiaのインスタンスを使用しているので、"us-east-1"を設定する。
Default output format [None]: json # 出力ログの形式をjsonに設定する。
Backing up initial config files, if they exist.
Creating initial config files from examples.
If you are a new user, supply your email address [abc@xyz.abc] for email notifications (leave blank if you do not want email notifications):
# E-Mailでの通知は行わないので、ここでは何も設定しない。
You did not supply an email address. No notifications will be sent.
FireSim Manager setup completed.
The full log of this run is:
/home/centos/firesim/deploy/logs/2019-04-06--03-42-24-managerinit-EVF9NYYSS24T6KGK.log

ここまででマネージャインスタンスの設定は完了となる。