Diary/2019-4-28
AWS-F1ふたたび
https://github.com/Xilinx/SDAccel-Tutorials/blob/master/docs/aws-getting-started/RTL/README.md
このドキュメント通りだとf1インスタンスでVivadoの合成とか動かす必要があって,
あまり経済的じゃない気がする.
- 準備
- AWSコンソールにログイン
- リージョンを選ぶ
- US East(N.Virginia)にした.US West(Oregon),EU(Ireland)でもいいみたい
- S3バケット作る
- 「すべてのサービス」->ストレージの下のS3を選択
- "+バスケットを作成する"ボタンをクリック
- バケット名をつける.(aws-f1-test とか)
- あとはデフォルトのまま"次へ"→"作成"
- S3バケットにフォルダを作る
- 作ったS3バケットをクリック
- "+フォルダの作成"ボタンをクリック
- フォルダ名をつけて保存.(SDAccel とつけた)
- プライベートキーの準備
- http://console.aws.amazon.com/ec2にアクセス
- 左ペインのキーペアをクリック
- "キーペアの作成"ボタンをクリック
- 名前をつけてキーを作成(aws-f1-test-key とつけた)
- aws-f1-test-key.pemがローカルに保存されるので,パーミッションを400に.
- AWS F1インスタンス使えるようにリクエストする必要がある
- http://aws.amazon.com/contact-us/ec2-request から
- Submit a 'Service Limit Increase' for 'EC2 Instances'
- Select the region where you want to access F1 instances: US East (N.Virginia), US West (Oregon) or EU (Ireland)
- Select 'f1.2xlarge' or 'f1.16xlarge' as the primary instance type
- Set the 'New limit value' to 1 or more
- Fill the rest of the form as appropriate and click 'Submit'
- http://aws.amazon.com/contact-us/ec2-request から
- F1インスタンスのテスト
- F1インスタンスつくる
- https://console.aws.amazon.com/ec2 にアクセス
- "インスタンスの作成"ボタンをクリック - リージョンに注意.US East,US West,EU(アイルランド)とか.
- 左メニューのAWS Markelplaceをクリック.検索フォームにFPGAと入力して検索する.
- FPGA Developer AMIの"選択"ボタンをクリック
- 料金メニューがでるので"Continue"ボタンをクリック
- f1.2xlargeインスタンスを探してセレクトボックをチェック
- "次の手順: インスタンスの詳細の設定"ボタンを選択 - "確認と作成" ではない
- 詳細設定,ストレージの追加,タグの追加は,デフォルトのまま,次に.
- セキュリーティグループの設定
- "ルールの追加"ボタンをクリックして,タイプ:RDP, プロトコル:TCP, ポート範囲:3389, ソース:カスタム - 0.0.0.0/0 を設定
- "確認と作成"ボタンをクリック
- 確認画面が表示されるので"起動"ボタンをクリック
- 「既存のキーペアを選択するか,新しいキーペアを作成します.」ウインドウが開く
- "既存のキーペアの選択"を選択し,先に作ったキーペア(aws-f1-test-key)を選択
- 注意事項を読んでチェックする
- "インスタンスの作成"ボタンをクリック
- "インスタンスの表示"ボタンをクリックして,インスタンス動作の確認
- インスタンスを選択すると,下ペインにIPアドレスなどの情報が表示される
- インスタンスにログイン
- ssh -i pemファイル centos@IPアドレス で ログイン できる
- GUIを起動する
- source <(curl -s https://s3.amazonaws.com/aws-fpga-developer-ami/1.5.0/Scripts/setup_gui.sh)
- スクリプト終了後にパスワードが表示されるので,忘れずにメモ.
- - sshでログインして sudo passwd centos とかして パスワード は 変更できる
- おわったら再起動
- RDPで接続
- color depth は 24-bit
- SDAccelのための設定
- ターミナルを開いて aws configure を実行
- アクセスキーIDとシークレットアクセスキーは https://console.aws.amazon.com/iam/home?#/security_credentials で作成
- region name: us-east-1,output format: json で設定
- 関連リソースの取得と環境設定
git clone https://github.com/aws/aws-fpga.git $AWS_FPGA_REPO_DIR cd $AWS_FPGA_REPO_DIR source sdaccel_setup.sh
- 動作確認
- helloworld_oclのソフトウェアエミュレーション
cd $SDACCEL_DIR/examples/xilinx/getting_started/host/helloworld_ocl/ make clean make check TARGETS=sw_emu DEVICES=$AWS_PLATFORM all
- helloworld_oclのハードウェアエミュレーション
cd $SDACCEL_DIR/examples/xilinx/getting_started/host/helloworld_ocl/ make clean make check TARGETS=hw_emu DEVICES=$AWS_PLATFORM all
- FPGAバイナリの作成
cd $SDACCEL_DIR/examples/xilinx/getting_started/host/helloworld_ocl/ make clean make TARGETS=hw DEVICES=$AWS_PLATFORM all
- AFIイメージの作成
cd xclbin $SDACCEL_DIR/tools/create_sdaccel_afi.sh \ -xclbin=<xclbin file name>.xclbin \ -s3_bucket=<bucket-name> \ -s3_dcp_key=<dcp-folder-name> \ -s3_logs_key=<logs-folder-name>
- 今回の例だと
cd xclbin $SDACCEL_DIR/tools/create_sdaccel_afi.sh \ -xclbin=vector_addition.hw.xilinx_aws-vu9p-f1-04261818_dynamic_5_0.xclbin \ -s3_bucket=aws-f1-test \ -s3_dcp_key=SDAccel \ -s3_logs_key=SDAccel
- ホームのディスク容量が足りなかったら(足りなかったので) /tmp とかに逃がしてもいい
- AFI作成プロセス
- vector_addition.hw.xilinx_aws-vu9p-f1-04261818_dynamic_5_0.awsxclbin ができてる
- 19_04_28-082150_afi_id.txt ができてる
{ "FpgaImageId": "afi-070aeb46c51e01332", "FpgaImageGlobalId": "agfi-059ee6445563c3fc3" }
- AFI作成プロセスがおわるのをまつ
aws ec2 describe-fpga-images --fpga-image-ids afi-070aeb46c51e01332
- State -> Code の ところが available になればいい
- S3バケットをみると,いろいろできているのがわかる.
- FPGAでの実行
cd $SDACCEL_DIR/examples/xilinx/getting_started/host/helloworld_ocl/ sudo sh source /opt/xilinx/xrt/setup.sh ./helloworld