FC2カウンター FPGAの部屋 AWS-FPGA
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

「Amazon EC2 F1インスタンス入門ワークショップ」に参加しました

昨日は、「Amazon EC2 F1インスタンス入門ワークショップ」に参加しました。

Xilinx社の”Amazon EC2 F1インスタンス入門ワークショップ”に参加します」であらかじめAmazon AWS のアカウントを作ってF1 インスタンスを使えるようにしておきました。

ハンズオンの項目は次の4つでした。

F1起動前準備&EC2インスタンスの起動
FPGAアクセラレーション体験
SDAccelによるF1アプリケーション開発
後⽚付けとまとめ


結構厚いF1 インスタンスのハンズオンの資料を頂きました。できれば資料のページ番号を付けてもらえれば完璧だったと思いました。
資料は最初に説明があって、次にやるべきことを丁寧に解説してあります。これがあれば自分でも一通りやってみることができます。ただミスるとずっと課金が継続されるかもしれないので、ハンズオンの参加して体験するのが良いと思います。
F1インスタンスでは、SDAccel やVivado などが使えて、実際のFPGA にビット・ファイルを流し込んで、(これはPCI Express やDDR SDRAMコントローラなどの周辺は変更しないので、パーシャルリコンフィグで流し込むそうです)アクセラレーションできるそうです。ですが、C4, M4, R4 などのFPGA 実機が使えないインスタンスでも、Amazon マシンイメージ(AMI)にFPGA Developer AMI を使用すれば、FPGA実機は使えないけど、SDAccel やVivado などが使えて開発できるそうです。ただし扱えるFPGA は、F1インスタンスで使えるUltraScale のFPGA のみだそうです。C4 でFPGA Developer AMI を使えば開発し放題かな?と内心期待しながら話を聞いていたんですが、UltraScale のFPGA のみということを聞いて、ちょっとがく。。。としました。

F1起動前準備&EC2インスタンスの起動

Security Group を作成して、インバウンドで SSH と RDP を通すように設定しました。
Key Pair を作成しました。
FPGA Developer AMI を使用し、f1.2xlarge インスタンスタイプで、作成したKey Pair を使って、バージニア北部にEC2インスタンスを作成しました。
インスタンスができたら秘密鍵を使ってSSH ログインします。Tera Term を使用しました。
SSHログイン後にスクリプトで初期設定処理を行います。
Windows のリモートデスクトップでログインします。CentOSが見えました。
Hello World を実行しました。Hello World といってもFPGAで実行した結果が見えますが、42 という文字がたくさん出てくるものでした。

FPGAアクセラレーション体験

このハンズオンではFPGAのビット・ファイルを作成するところは数時間かかるそうでやっていないのが残念ですが、FPGA にビット・ファイルをダウンロードしてCPU との性能比較を行いました。
ffmpeg を使用したHEVC encoding をCPU とFPGA アクセラレーションで性能を比較します。スピード差は約 2.08 倍だそうです。自分でやったときの値は少し違った気がしますが、近い値でした。

SDAccelによるF1アプリケーション開発

SDAccel のGUI を上げて、プロジェクトが確認できました。ただしコンパイルは時間がかかるので無しで、CPUとハードウェアのエミュレーションだけでした。プロジェクトはIDCT プロジェクトです。
あらかじめ出来上がっているビット・ファイルを使用して、性能を確認しました。

後⽚付けとまとめ
インスタンスを停止しただけではストレージ容量の課金があるそうなので、削除しないと無料にはならないようです。その方法を教えて頂きました。

バージニア北部のストレージの課金は1月当り 0.1$ / GB だそうです。100 GB使用していたので、10$ / month です。(課金されるときは秒換算で課金だそうです)
FPGA Developer AMI を使用するとやはり、ツールがあるので、最低 70 GB は使うそうです。
f1.2xlarge インスタンスは1.数ドル / hour です。でも C4 インスタンスとかは 0.4 $ / hour とかがあるので、1日 4 時間使うとなると 1.6 $ / day で、30日とすると、48 $ 。それに、200 GB 使っているとすると、20 $ / month で合計 68 $。それを 4 年間使うとなると、68 $ X 12 X 4 = 3,264 $ で 110 円 / $ とすると約 36 万円かあ~。やはり、Linux マシン買うより高いですね。これだとLinux マシン買う方が良いかな。。。
(ここでは、C4 インスタンスにSDxをインストールして、そこで、SDSoC や Vivado , Vivado HLS をリモートで使用することを考えています。つまり、Linux の Xilinx FPGA 環境をすべてAmazon AWS でやろうと考えていました。FPGAのコンフィグレーションはTCP 接続でローカル・マシンを使います)

最後にAmazon AWS の $ 25 のクーポンを頂きました。
アマゾンのサーバーに完全移行するには費用が少し高いですが、「Amazon EC2 F1インスタンス入門ワークショップ」に参加して損は無いと思います。
あと、自分で持っていない大きなUltraScale FPGA が使えるので、大きなDNNの推論エンジンを作ったときに実際にFPGA に入れて確かめられますね。これは後でやってみようかな?
  1. 2018年02月23日 06:23 |
  2. AWS-FPGA
  3. | トラックバック:0
  4. | コメント:0

Xilinx社の”Amazon EC2 F1インスタンス入門ワークショップ”に参加します

Connpass で募集されていたXilinx社の”Amazon EC2 F1インスタンス入門ワークショップ”に申し込みました。

今まで、やってみたかったけど、数十万円とか請求が来たらどうしよう?という懸念から申し込みをためらっていたAmazon EC2 F1インスタンスですが、入門するワークショップがあるということで、やってみることにしました。

Amazon EC2 F1インスタンスの解説方法は”Amazon EC2 F1インスタンス⼊⾨ワークショップー事前準備ー”を見ながらやっています。

アカウント作成は”AWS アカウント作成の流れ”を参照しています。
AWS のサポートプランの選択でベーシックプランの無料に申し込めました。
Amazon_AWS_F1_1_180220.png

10分チュートリアルもあるので、やってみたいです。
Amazon_AWS_F1_2_180220.png

F1 インスタンスの起動制限数は 0 だったので、制限緩和のリクエストをしました。
Amazon_AWS_F1_3_180220.png

こんな感じで制限緩和のリクエストをしたのですが、これで良いのでしょうか?
Amazon_AWS_F1_4_180220.png

どうやって制限緩和を申請するのか?も”Amazon EC2 F1インスタンス⼊⾨ワークショップー事前準備ー”のマニュアルに書いておいて欲しいです。
  1. 2018年02月20日 04:42 |
  2. AWS-FPGA
  3. | トラックバック:0
  4. | コメント:0

aws/aws-fpgaをやってみた3

aws/aws-fpgaをやってみた2”の続き。

前回は、デザインをビルドしてみたが、失敗してしまった。今回はシミュレーションを試みてみよう。なお、AWSは使用していないで、ローカルのパソコンで行っている。

今回は、「AWS EC2 F1について、みんなでワイワイ調べる会 サンプルデザインのテストベンチ&テストプログラムを開発するチーム 活動報告 2017.07.08」に基づいてやってみた。
また、元になったマニュアルは、「RTL Simulation for Verilog/VHDL Custom Logic Design with AWS HDK」だ。

まずは、~/aws-fpga/cl/examples/cl_hello_world/verif/scripts ディレクトリのMakefile.vivado とwaves.tcl を修正する。
aws-fpga_12_170710.png

Makefile.vivado のxsim に -g オプションを追加して、GUI を立ち上げる。
aws-fpga_13_170710.png

waves.tcl の quit をコメントアウトした。こうしないとxsim が終了してしまうそうだ。
aws-fpga_14_170710.png

make をしてもエラーだった。
aws-fpga_15_170710.png

そういえば、source hdk_setup.sh を実行した後で、VirtualBox のVM を落としてしまったので、パスなどの設定が無くなってしまったようだ。
もう一度、~/aws-fpga に戻って source hdk_setup.sh を実行した。
、~/aws-fpga/cl/examples/cl_hello_world/verif/scripts ディレクトリに行って、make を実行した。
aws-fpga_17_170710.png

Vivado が立ち上がったが、internal exception が発生してしまった。。。
aws-fpga_16_170710.png

シミュレーションも失敗してしまった。
結局、ビルドもシミュレーションもうまく行かなかった。残念だが、AWS で試したほうが良さそうだ。
  1. 2017年07月12日 04:27 |
  2. AWS-FPGA
  3. | トラックバック:0
  4. | コメント:0

aws/aws-fpgaをやってみた2

aws/aws-fpgaをやってみた1”の続き。

コメント欄で教えて頂いた

expected_memory_usage=30000000

を変更する方法でもう一度やってみた。値は、

expected_memory_usage=16000000

とした。

まずは、~/aws-fpga/hdk/common/shell_stabel/build/scripts/aws_build_dcp_from_cl.sh の45行目の

expected_memory_usage=30000000

expected_memory_usage=16000000

に変更した。
aws-fpga_18_170711.png

「AWS EC2 F1についえ、みんなでワイワイ調べる会 カスタムロジックサンプル解析 CLサンプル解析班」の資料の14ページを参考に記述を変更した。

~/aws-fpga/hdk/common/shell_stabel/build/scripts/aws_build_dcp_from_cl.sh の42 行目の foreground を 1 に変更した。
aws-fpga_19_170711.png

同じく、aws_build_dcp_from_cl.sh の 218 行目の -mode batch を削除した。
aws-fpga_20_170711.png

~/aws-fpga/cl/examples/cl_hello_world/build/scripts/encrypt.tcl の encrypt -k で始まる行をコメントアウトした。
aws-fpga_22_170711.png

これは資料には書いていなかったが、CL_DIR 環境変数を ~/aws-fpga/cl/examples/cl_hello_world に指定した。
aws-fpga_21_170711.png

./aws_build_dcp_from_cl.sh
を起動した。
aws-fpga_24_170711.png

Vivado は立ち上がったがライセンス・エラーになった。xcvu9p-flgb2104 のライセンスはあるのだが?
aws-fpga_23_170711.png

エラー・メッセージを示す。

[Common 17-348] Failed to get the license for feature 'Synthesis' and/or device 'xcvu9p-flgb2104'. Explanation: The license feature Synthesis could not be found.
Resolution: Check the status of your licenses in the Vivado License Manager. For debug help search Xilinx Support for "Licensing FAQ".


Vivado 2017.1 を立ち上げて、xcvu9p-flgb2104 のプロジェクトも作ることができる。
aws-fpga_25_170711.png

Ubuntu 14.04 にVivado 2017.1 をインストールするのは仕様外なので仕方ないかもしれない?
おかしなことに、ライセンスは入れたのだが、Vivado License Manager ではライセンスは見えないのだ?
やはり、サポート対象のUbuntu 16.04 にVivado 2017.1 を入れる必要があるだろう。通常はVivado Design Editionをインストールすることができないので、”Ubuntu 16.04 にVivado Design Edition がインストールできない”のコメント欄を参照のこと。

やはり、AWSを使ってやった方が良さそうだ。。。

これ以上は面倒になったので、詳しくは、「AWS EC2 F1についえ、みんなでワイワイ調べる会 カスタムロジックサンプル解析 CLサンプル解析班」の資料の「回路図を表示させてみよう(4)」以降のページをご覧ください。。。(資料を作ってくれてありがとうございました)
  1. 2017年07月11日 04:50 |
  2. AWS-FPGA
  3. | トラックバック:0
  4. | コメント:0

aws/aws-fpgaをやってみた1

2017年7月8日(土)に、「AWS EC2 F1について、みんなでワイワイ調べる会」に参加して、「サンプルデザインのHDLコードを解析するチーム(Hello World & DMA)」になったのだが、「Ubuntu 16.04 にVivado Design Edition がインストールできない」という理由でVirtualBox 上のUbuntu 16.04 にVivado WebPACK Edition しかインストールしていなくて、たいして貢献できなくて申し訳ないので、Ubuntu 14.04 上にVivado をインストールしてリベンジしてみた。

最初に、VirtualBox 上に最新版の Vivado 2017.2 をインストールしてみた。
次に、aws/aws-fpga からgit clone した。詳しくはWeb サイトを見てほしい。
git clone https://github.com/aws/aws-fpga
aws-fpga_1_170709.png

cd aws-fpga
source hdk_setup.sh

HostID_all0_2_170709.png

やはり、指定では、Vivado 2017.1 なのに、2017.2 をインストールしたので、エラーが出てしまった。
~/aws-fpga/hdk/supported_vivado_versions.txt を見ると 2017.1 と書いてあったので、2017.2 に書き換えた。
aws-fpga_3_170709.png

もう一度、
source hdk_setup.sh
を実行すると、curl がインストールされていないというエラーだった。
aws-fpga_4_170709.png

sudo apt-get install curl でインストールした。
もう一度、source hdk_setup.shを実行した。良い感じで実行されていたが。。。
aws-fpga_4_170709.png

IP Catalog の revision が違うというエラーになってしまった。Vivado のバージョンが違うので仕方がない。。。
aws-fpga_6_170709.png

と言う訳で、せっかくインストールしたVivado Design Edition 2017.2 をアンインストールして、Vivado Design Edition 2017.2 をインストールした。
再再度、source hdk_setup.shを実行した。今度は通った。図は始まりと終わりを示す。
aws-fpga_7_170709.png
aws-fpga_8_170709.png

全部のログを示す。

masaaki@masaaki-VirtualBox:~/aws-fpga$ source hdk_setup.sh 
INFO: Using Vivado v2017.1 (64-bit)
INFO: Setting up environment variables
INFO: Using HDK shell version shell_v04151701
INFO: HDK shell is up-to-date
INFO: DDR4 model files in /home/masaaki/aws-fpga/hdk/common/verif/models/ddr4_model/ do NOT exist. Running model creation step.
INFO:   Building in /home/masaaki/aws-fpga/ddr4_model_build
INFO:   This could take 5-10 minutes, please be patient!
/home/masaaki/aws-fpga/hdk/common/verif/scripts/init.sh: 18: /home/masaaki/aws-fpga/hdk/common/verif/scripts/init.sh: [[: not found
/home/masaaki/aws-fpga/hdk/common/verif/scripts/init.sh: 23: /home/masaaki/aws-fpga/hdk/common/verif/scripts/init.sh: [[: not found
/home/masaaki/aws-fpga/hdk/common/verif/scripts/init.sh: 29: /home/masaaki/aws-fpga/hdk/common/verif/scripts/init.sh: [[: not found

****** Vivado v2017.1 (64-bit)
  **** SW Build 1846317 on Fri Apr 14 18:54:47 MDT 2017
  **** IP Build 1846188 on Fri Apr 14 20:52:08 MDT 2017
    ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

source /home/masaaki/aws-fpga/hdk/common/verif/scripts/init.tcl
# set_msg_config -severity INFO -suppress
# set_msg_config -severity STATUS -suppress
# set_msg_config -severity WARNING -suppress
CRITICAL WARNING: [Common 17-1355] You are suppressing all messages of type 'WARNING'. You may potentially disregard important DRC, CDC, and implementation messages that can negatively impact your design.  If this is not desired, please run 'reset_msg_config -suppress -severity {WARNING}' to undo this change.
# set_msg_config -string {exportsim} -suppress
# set_msg_config -string {IP_Flow} -suppress
# create_project -force tmp_ddr ./tmp -part xcvu9p-flgb2104-2-i 
# add_files -norecurse $::env(HDK_COMMON_DIR)/shell_stable/design/ip/ddr4_core/ddr4_core.xci
INFO: [IP_Flow 19-234] Refreshing IP repositories
INFO: [IP_Flow 19-1704] No user IP repositories specified
INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/opt/Xilinx/Vivado/2017.1/data/ip'.
add_files: Time (s): cpu = 00:00:05 ; elapsed = 00:00:07 . Memory (MB): peak = 1308.211 ; gain = 213.969 ; free physical = 474 ; free virtual = 18367
# export_ip_user_files -of_objects  [get_files  $::env(HDK_COMMON_DIR)/shell_stable/design/ip/ddr4_core/ddr4_core.xci] -force -quiet
# open_example_project -force -dir ./tmp/tmp_ddr_ex [get_ips  ddr4_core]
INFO: [IP_Flow 19-1686] Generating 'Examples' target for IP 'ddr4_core'...
INFO: [Device 21-403] Loading part xcvu9p-flgb2104-2-i

****** Vivado v2017.1 (64-bit)
  **** SW Build 1846317 on Fri Apr 14 18:54:47 MDT 2017
  **** IP Build 1846188 on Fri Apr 14 20:52:08 MDT 2017
    ** Copyright 1986-2017 Xilinx, Inc. All Rights Reserved.

source /home/masaaki/aws-fpga/hdk/common/shell_stable/design/ip/ddr4_core/ddr4_core_ex.tcl -notrace
INFO: [open_example_project] Creating new example project...
INFO: [open_example_project] Importing original IP ...
INFO: [IP_Flow 19-234] Refreshing IP repositories
INFO: [IP_Flow 19-1704] No user IP repositories specified
INFO: [IP_Flow 19-2313] Loaded Vivado IP repository '/opt/Xilinx/Vivado/2017.1/data/ip'.
import_ip: Time (s): cpu = 00:00:05 ; elapsed = 00:00:06 . Memory (MB): peak = 1316.215 ; gain = 8.012 ; free physical = 219 ; free virtual = 17375
INFO: [open_example_project] Generating the example project IP ...
INFO: [open_example_project] Adding example synthesis HDL files ...
INFO: [open_example_project] Adding example XDC files ...
INFO: [open_example_project] Adding simulation HDL files ...
INFO: [open_example_project] Sourcing example extension scripts ...
Post processing the example_design
update_compile_order: Time (s): cpu = 00:00:08 ; elapsed = 00:00:09 . Memory (MB): peak = 1316.645 ; gain = 0.418 ; free physical = 311 ; free virtual = 17369
INFO: [open_example_project] Rebuilding all the top level IPs ...
INFO: [exportsim-Tcl-35] Exporting simulation files for "XSIM" (Xilinx Vivado Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/xsim/ddr4_core.sh'
Generating merged BMM file for the design top 'sim_tb_top'...
Generating merged BMM file for the design top 'sim_tb_top'...
INFO: [exportsim-Tcl-35] Exporting simulation files for "MODELSIM" (Mentor Graphics ModelSim Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/modelsim/ddr4_core.sh'
INFO: [exportsim-Tcl-35] Exporting simulation files for "QUESTA" (Mentor Graphics Questa Advanced Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/questa/ddr4_core.sh'
INFO: [exportsim-Tcl-35] Exporting simulation files for "IES" (Cadence Incisive Enterprise Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/ies/ddr4_core.sh'
INFO: [exportsim-Tcl-35] Exporting simulation files for "VCS" (Synopsys Verilog Compiler Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/vcs/ddr4_core.sh'
INFO: [exportsim-Tcl-35] Exporting simulation files for "RIVIERA" (Aldec Riviera-PRO Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/riviera/ddr4_core.sh'
INFO: [exportsim-Tcl-35] Exporting simulation files for "ACTIVEHDL" (Aldec Active-HDL Simulator)...
INFO: [exportsim-Tcl-29] Script generated: '/home/masaaki/aws-fpga/ddr4_model_build/tmp/tmp_ddr_ex/ddr4_core_ex/ddr4_core_ex.ip_user_files/sim_scripts/ddr4_core/activehdl/ddr4_core.sh'
INFO: [open_example_project] Open Example Project completed
INFO: [Common 17-206] Exiting Vivado at Sun Jul  9 18:03:27 2017...
open_example_project: Time (s): cpu = 00:00:36 ; elapsed = 00:00:44 . Memory (MB): peak = 2018.074 ; gain = 678.875 ; free physical = 531 ; free virtual = 17600
# exit
INFO: [Common 17-206] Exiting Vivado at Sun Jul  9 18:03:28 2017...
Copying files to /home/masaaki/aws-fpga/hdk/common/verif/models/ddr4_model
Copying files to /home/masaaki/aws-fpga/hdk/common/verif/models/ddr4_rdimm_wrapper
INFO: DDR4 model build passed.
INFO: ATTENTION: Don't forget to set the CL_DIR variable for the directory of your Custom Logic.
INFO: AWS HDK setup PASSED.
masaaki@masaaki-VirtualBox:~/aws-fpga$ 


何がどうなっているか、よくわからないがとにかく通った。

~/aws-fpga/hdk/cl/examples を見ると、cl_dram_dma, cl_hello_world, common のディレクトリがある。
そのうちの cl_hello_world をやってみることにする。
aws-fpga_9_170709.png

~/aws-fpga/hdk/cl/examples/cl_hello_world/build/scripts ディレクトリに行ってみた。
aws-fpga_10_170709.png

Vivado のプロジェクトはないので、「How to build and submit your Custom Logic (CL) to AWS」を参考に、とりあえず、~/aws-fpga/hdk/cl/examples/cl_hello_world/build/scripts ディレクトリで
./aws_build_dcp_from_cl.sh
をやってみたが、エラーになってしまった。
aws-fpga_11_170710.png

エラーの内容は、

ERROR: YOUR INSTANCE has less memory than is necessary for certain builds. This means that your builds will take longer than expected.
To change to an instance type with more memory, please check our instance resize guide: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-resize.html

で、メモリは10GB 程度割り当てているのだが、だめだそうだ。
やはり、この辺りはAWS EC2 F1 インスタンスを使ってビルドするしかないのかもしれない?
  1. 2017年07月10日 04:36 |
  2. AWS-FPGA
  3. | トラックバック:0
  4. | コメント:2