トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2019-4-28の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!AWS-F1ふたたび
https://github.com/Xilinx/SDAccel-Tutorials/blob/master/docs/aws-getting-started/RTL/README.md
このドキュメント通りだとf1インスタンスでVivadoの合成とか動かす必要があって,
あまり経済的じゃない気がする.
:: 準備
* AWSコンソールにログイン
** https://console.aws.amazon.com/ から
* リージョンを選ぶ
** 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'
:: 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