AWS F1インスタンス上でRISC-Vコアを動かすことのできるFireSimは、徐々にバージョンが上がっており、現在はBOOM(Berkeley Out-of Order Machine)のLinux起動もサポートできるようになっているらしい。
一度、F1インスタンスのチュートリアルはやってみたことがあるのだが、しばらく時間もたっているし、前回はRocketコアで検証した環境を、BOOMコアを使って再検証してみたい。
チュートリアルを見ながら、再度FireSimをF1インスタンス上に構築するチュートリアルを試してみることにした。以下の資料を参考にした。
マネージャインスタンスを立ち上げる
次は、FireSimとユーザのインタフェースとなるインスタンス、「マネージャインスタンス」を立ち上げる。マネージャインスタンスにはsshで接続する。
ここでは、マネージャインスタンスとしてc4.4xlarge
インスタンスを用いている。c4.4xlarge
インスタンスは比較的安価(0.796USD/時間)で使用することができるからだ。
まずはEC2マネジメントコンソールから[Launch Instance]をクリックし、インスタンスを構築する作業に入る。 AMIは"Community AMI"タブの"FPGA"から"FPGA Developer AMI - 1.5.0"を選択する。これ以外のAMIは使用できないらしいので、必ずこのAMIを指定すること。
インスタンスタイプは"c4.4xlarge"を選択する。
"Configure Instance Details" ページでは、
- "Network" : "firesim-xxx"というVPCが作られていますので、こちらを選択する。複数あっても、どれを使っても構わない。
- さらに、"Protect against accidental termination"をチェックする。これを設定することで、突然マネージャインスタンスが落ちることを防ぐことができる。その代わり、通常の方法でマネージャインスタンスを止めるためには、この設定を解除する必要がある。
- さらに、"Advanced Details"に以下を貼りつける (オリジナルのスクリプトは、 https://docs.fires.im/en/latest/Initial-Setup/Setting-up-your-Manager-Instance.html を参照のこと)。
#!/bin/bash echo "machine launch script started" > /home/centos/machine-launchstatus sudo yum install -y mosh sudo yum groupinstall -y "Development tools" sudo yum install -y gmp-devel mpfr-devel libmpc-devel zlib-devel vim git java java-devel curl https://bintray.com/sbt/rpm/rpm | sudo tee /etc/yum.repos.d/bintray-sbt-rpm.repo sudo yum install -y sbt texinfo gengetopt sudo yum install -y expat-devel libusb1-devel ncurses-devel cmake "perl(ExtUtils::MakeMaker)" # deps for poky # pokyに必要なパッケージのインストール sudo yum install -y python34 patch diffstat texi2html texinfo subversion chrpath git wget # deps for qemu # qemuに必要なパッケージのインストール sudo yum install -y gtk3-devel # deps for firesim-software (note that rsync is installed but too old) # firesim-softwareに必要なパッケージのインストール(rsyncはインストールされるが、非常に古い) sudo yum install -y python34-pip python34-devel rsync # install DTC. it's not available in repos in FPGA AMI # DTCのインストール。これはFPGA AMIのリポジトリでは入手できないので、ソースからインストールする。 DTCversion=dtc-1.4.4 wget https://git.kernel.org/pub/scm/utils/dtc/dtc.git/snapshot/$DTCversion.tar.gz tar -xvf $DTCversion.tar.gz cd $DTCversion make -j16 make install cd .. rm -rf $DTCversion.tar.gz rm -rf $DTCversion # get a proper version of git # 標準バージョンのgitをインストール sudo yum -y remove git sudo yum -y install epel-release sudo yum -y install https://centos7.iuscommunity.org/ius-release.rpm sudo yum -y install git2u # install verilator # Verilatorのインストール git clone http://git.veripool.org/git/verilator cd verilator/ git checkout v4.002 autoconf && ./configure && make -j16 && sudo make install cd .. # bash completion for manager # bashの補完機能のインストール sudo yum -y install bash-completion # graphviz for manager # Graphvizのインストール sudo yum -y install graphviz python-devel # these need to match what's in deploy/requirements.txt # 作業に必要なPythonパッケージのインストール sudo pip2 install fabric==1.14.0 sudo pip2 install boto3==1.6.2 sudo pip2 install colorama==0.3.7 sudo pip2 install argcomplete==1.9.3 sudo pip2 install graphviz==0.8.3 # for some of our workload plotting scripts # 付加をプロットするためのスクリプトで使用するためのパッケージ sudo pip2 install --upgrade --ignore-installed pyparsing sudo pip2 install matplotlib==2.2.2 sudo pip2 install pandas==0.22.0 # this is explicitly installed to downgrade it to a version without deprec warnings # cryptographyのインストール。deprecの警告を出さないために、明確にバージョンを指定する。 sudo pip2 install cryptography==2.2.2 sudo activate-global-python-argcomplete # get a regular prompt # 通常のプロンプトの設定 echo "PS1='\u@\H:\w\\$ '" >> /home/centos/.bashrc echo "machine launch script completed" >> /home/centos/machine-launchstatus
とても長いスクリプトだが、、これはインスタンスを立ち上げる際に最初に実行されるスクリプトで、これにより自動で必要なパッケージがインストールされたり、FireSimの動作に必要なツールがインストールされる。
次にストレージの追加だ。EBSのディスクボリュームを300GB程度まで引き上げる。デフォルトでは75GB程度だったが、Vivadoなどで論理合成を行ったりシミュレーションを実行するとすぐにディスクがなくなってしまうので、300GB程度まで上げておく。セカンダリの5GBのボリュームは不要なので消して良い。
セキュリティグループの設定では、”Select an existing security group"を選択し、firesimと書かれているセキュリティグループを選択する。
ここまで来たらインスタンスの設定は完了となる。[Review and Launch]から[Launch]をクリックする。このとき、キーペアとして、先ほど作成した"firesim"のキーペアを使用すること。
インスタンスが立ち上がると、c4.4xlargeインスタンスにアクセスできるようになる。
これは、t2.nano
インスタンスにアクセスしたときと同様に、"firesim"のキーペアを指定してログインする。
ユーザ名"centos"を入力すると、ログインできる。
ただし、まだ上記で指定した起動時のスクリプトは実行されている最中かもしれない。~/machine-launchstatus
を見て確認してみる。
cat machine-launchstatus machine launch script started machine launch script completed
上記のように出力されれば、初期化処理は完了していることが分かるので、手順を先に進めてよい。