FPGA開発日記

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

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 1. 立ち上げと参考文献

参考にしたのは以下。

Welcome to FireSim’s documentation! — FireSim documentation

  1. 初期セットアップ・インストール
    1. 最初にAWSのユーザグループを作成する。AWSのアカウントと支払を行っていればこのステップを実行する必要はない。
    2. アカウントに必要なAWSのリソースを設定する。これによりVPC/サブネット/セキュリティグループなどの、FireSimを実行するために必要な構成を立ち上げる。
  2. 単一ノードのシミュレーションチュートリアル: このチュートリアルでは、1コアのシミュレーションを行い、1つのf1.2xlargeであらかじめビルドされたFireSim AGFIを動作させる。
  3. クラスタシミュレーションのチュートリアル : 個のチュートリアルでは、8ノードのクラスたちシミュレーションを行い、1つのf1.16xlarge上であらかじめビルドされたFireSim AGFIとスイッチモデルを立ち上げる。
  4. オリジナルのハードウェアデザインを立ち上げる(ChiselからFPGAイメージへの変換) : このチュートリアルでは、Rocket ChipのRTLと、Rocket Chipに接続する任意のカスタムRTLを使ってFireSim AGFIを作成してシミュレーションする。ChiselのElaborationと、FAME-1への変更、VivadoのFPGAフローを自動的に実行する。

AWSアカウントのセットアップ

West Virginiaリージョンにて、AWS F1インスタンスを使用するためのセットアップを行う。

2.2. Configuring Required Infrastructure in Your AWS Account — FireSim documentation

キーペアはもともと持っているので、それを使用することにした。F1インスタンスの上限の解除についてもすでに行っているので良しとする。。

t2.nanoインスタンスを作成する

ローカルマシンでパッケージのインストールをするのは面倒なため、t2.nanoインスタンスを立ち上げてAWSを構成するためのコマンドを実行する。 t2.nanoインスタンスAWSの構成を行うためだけに使用し、その後は破棄する。

t2.nanoインスタンスは、Amazon Linux AMIをインストールして立ち上げる。起動してログインする。

f:id:msyksphinz:20180617142219p:plain

AWSのセットアップを行う。

[ec2-user@ip-172-31-17-43 ~]$ aws configure
AWS Access Key ID [None]: [アカウントのアクセスキーID]
AWS Secret Access Key [None]: [アカウントのシークレットアクセスキーID]
Default region name [None]: us-east-1
Default output format [None]: json

さらにAWSのセットアップを行ったが、Failしてしまった。これはどうやって直せばよいのだろう?

$ sudo pip install boto3
$ wget https://raw.githubusercontent.com/firesim/firesim/master/scripts/aws-setup.py
$ python aws-setup.py
Traceback (most recent call last):
  File "aws-setup.py", line 12, in <module>
    avail_zones = list(map(lambda x: x['ZoneName'], client.describe_availability_zones()['AvailabilityZones']))
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 314, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/usr/local/lib/python2.7/site-packages/botocore/client.py", line 612, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AuthFailure) when calling the DescribeAvailabilityZones operation: AWS was not able to validate the provided access credentials

いろいろ試してみた。ntpupdateをすればよいということで実行してみたが変化なし。

$ sudo emacs /etc/ntp.conf -nw
  • /etc/ntp.conf
# Use and prefer the Amazon Time Service server
# server 169.254.169.123 prefer iburst minpoll 3
server -4 ntp.nict.jp iburst  #おなじものを3つ書く!
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst