FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Amazon EC2 F1インスタンス ハンズオン 参加

大崎にあるXilinxさんで開催されたAmazon EC2 F1インスタンスのハンズオンに参加してきました。

EC2 F1インスタンスに興味を持ったのは、RISC-VのFireSimがもともとF1インスタンスを対象としているから。

また、大きめのデザインを開発しても、なかなか大きなFPGAって高価で手が出ない。F1インスタンスならタイムシェアリングでコストを下げられるのではないか、ということでやり方を勉強するために参加してみた。

参加するにあたり、結構厚めの資料を頂いた。手順としては、かなりきめ細かく、

EC2のインスタンスの起動方法などは、そこまできめ細かく教えてくれなくてもいいよ...と思うくらいにきめ細かいのだけれども、逆にセキュリティグループの話とかしっかり聞けて、これまで結構あいまいにしていた部分などがすっきりした気がする。

これは個人の意見だが、FPGAアクセラレーションされている、っていうのは、手元にFPGAがあってそれが動いて、初めて実感できる気がする。 だから、バージニアのどこかにあるFPGAボードで自分のデザインが動いて、ログとして~~だけ高速化されました、っていうのは正直ちょっと実感がわかない。 ましては元のソースコードOpenCLとなると、本当に..?ってなってしまう。

今回の資料では、いろいろコマンドをたたいてみてコンソールを確認しながら実際にF1インスタンスを動かしていく。 ハンズオンなので仕方がないのだが、とりあえず動かしてみて予定通りの結果が出ればOK、それよりももうちょっと中身を見てみたい... まあそれは自分でMakefile読んでください、って感じなのだろう。

まあやり方はそれでいいのだろうけども、バージニアインスタンスってやはり距離の問題か非常にレスポンスが悪くて、実際にここで開発する、というわけにはいかない。

じゃあどうやってF1インスタンスを活用すればいいのだろう?ってセミナー中にいろいろ考えていたのだが、

  • SDAccelでC/C++のコードを書く、またはVerilogを書いてF1インスタンスで動かす場合、

  • 実際のコーディングはローカル(または日本のサーバ)で行う (でないとレスポンスが遅くてやってられない)

  • 例えば、リグレッションテストを行いたい場合、F1インスタンスを立ち上げる(そして、専用のディスクを復帰させる)
  • 自分のコードをF1インスタンスに付随しているx86フロントエンドに流し込む。
  • コンパイルを行い、Amazon AFIを作成する(通常これがめっちゃ時間かかる)
  • FPGAに流し込み実行する。結果を回収する。

っていうフローを構築しておかないと絶対に使い物にならない。 だいたいこんな感じのフローになるのかな?これをちゃんと構築しないと、コストばかりかかってストレスばかり溜まりそう(東京インスタンスは出来ないのですかね...)

f:id:msyksphinz:20180425234904p:plain
図. Amazon F1インスタンスの使い方?(想像)

そのためには、自分の環境構築用のスクリプトなどが入った専用のディスクは保持しておかなければならないし、そこはちょっとコストが発生する。

あとはデバッグ環境も気になった。どうやら通常のLogic Analyzerも使えるようでそれは一安心。

さらに今回はSDAccelを使ったデザインを触ってみたが、やはり純粋VerilogのデザインをF1インスタンスで流せるような環境がうれしいよね。 というわけでAmazon F1 HDKなどもちょっと気になるところだ。見ていきたい。

github.com