インテル® HLS コンパイラがインテル® Quartus® Prime 開発ソフトウェア v17.1 から、すべてのエディション(Pro / Standard / Lite)で使用できるようになりました。これから HLS コンパイラを使用するユーザ向けに、最適な情報を紹介します。
HLS コンパイラとは?
HLS コンパイラとは、インテル® FPGA に対して最適化された High Level Synthesis (HLS) ツール、いわゆる高位合成ツールです。本ツールを使用することにより、C や C++ 言語のソフトウェア・プログラミング言語から インテル® FPGA へ実装するための回路(デザイン)を作成することができます。
今まではハードウェアの知識が必要だったデザインの作成を、ソフトウェア設計者でも作成できるようになったので、C や C++ の言語で記述されたフィルタ処理や CPU では重かったソフトウェア処理部分を インテル® FPGA 向けの回路にオフロードさせ、システムの最適化が行えるようになりました。
HLS コンパイラの資料
このページへアクセスすると、インテルが用意している資料を見ることができます。
HLS コンパイラの紹介ページ (インテル)
(英語版 はこちら)
※ ドキュメントは「関連資料」(英語ページは「Document」)タブをクリックしてください。
以下の資料が用意されています。
- 製品概要
- 画像処理ホワイト・ペーパ
- 入門ガイド
- ユーザ・ガイド
- リファレンス・マニュアル
- ベスト・プラクティス・ガイド
- クイック・リファレンス・ガイド
- ホワイト・ペーパ「QRD 分解の最適化」
資料を複数紹介しましたが、どの順番で参照するのが良いか迷いますよね?HLS コンパイラの使用方法を学ぶ上で、全体的なフローが理解できる資料の参照順序を紹介します。
1. 製品概要
HLS コンパイラの製品概要です。ツールの大まかな全体像を理解することができます。
まずは、HLS コンパイラを使用する上で必要な環境の構築方法について知ることが必要です。また、今後 HLS コンパイラを用いる際に参考となる Example Design の内容を、事前に把握することも可能です。
HLS コンパイラの環境構築方法については、こちらの記事をぜひご覧ください。
HLS コンパイラの環境構築(Windows® 編)
2. ユーザ・ガイド
ツールのセットアップが終わったら、実際に行うフローを学びます。ユーザ・ガイドでは HLS コンパイラを使用してコンポーネントを作成し、合成や検証、シミュレーションの各手順を理解することができます。
インテル® FPGA 製品向けに設計する IP の合成や検証、シミュレーションの各手順を解説しています。合成時にシミュレーション用のテストベンチを作成することなど、検証やシミュレーション時の基本的なコマンドも含めた情報が記載されています。また、生成された IP を Quartus® Prime で使用するための手順や HLS コンパイラの制限事項、レポートの概要説明も含まれています。
3. ベスト・プラクティス・ガイド
HLS コンパイラにて、パフォーマンスを最適化する方法について習得することができます。具体的には、ループの最適化や最適なメモリ・アーキテクチャの構成、コンポーネントのデータ型とコンバートの最適化によるパフォーマンスとロジック使用領域削減などです。
実際にコンポーネントを作成しても期待通りの性能になっていない場合は、資料に掲載されている最適化を行います。この資料では、ツールを使用してどこがボトルネックになっていて、どう最適化させるのかの一例を学ぶことができます。
最低限は上記の順序で資料を参照することにより、HLS コンパイラの機能を一通り学ぶことが可能です。また、その他の資料にも有益な情報が記載されています。上記フローには記載していませんが、適時参照してください。
その他の資料については、以下のとおりです。
その他資料
画像処理ホワイト・ペーパ
画像処理を例として、HLS コンパイラの設計フローを確認できます。アルゴリズムの説明や C++ 実装、そして 実際に HLS コンパイラを使用してのハードウェア化、検証、最適化までの流れを解説しています。
HLS コンパイラを使用する際に、どういうフローで実装すれば良いのかを具体例を用いて解説されているため、仕様検討から実装、最適化までの流れを知るためには最適な資料です。
入門ガイド
HLS コンパイラを使用する上で必要なツールやライセンス設定、Example Design の紹介など環境構築に必要な情報が掲載されています。ツールをこれからご使用するユーザにとても有益な資料です。
また、ライセンスによるトラブル・シューティングについても記載されているので、ライセンス設定が上手くできない場合にも参考になります。
リファレンス・マニュアル
コマンド・オプションやコンポーネント属性の指定などに困った時に参照します。
HLS コンパイラのコマンド・オプションやコンポーネント、インタフェースの属性記述など実設計時に必要な情報が掲載されています。コンポーネント属性やインタフェースが決まり、ソース・コード編集時や HLS コンパイラにおけるコマンド実行時に参照してください。
また、Appendix ではクリック・リファレンスとしてコマンドラインの引数やコンポーネント属性など一覧がまとまっています。引数やコマンドなどの検索にも使用できます。
ホワイト・ペーパ「QRD 分解の最適化」
固有値分解を例に、最適化の方法を理解することができます。
ベスト・プラクティス・ガイドで紹介している最適化の方法を使用し、QR 分解のコードのパフォーマンス向上の例を紹介しています。HLS コンパイラを用いる上で、具体的な最適化の方法を実例を用いて理解することができます。
HLS コンパイラを体験してみよう
このページで紹介した順番で資料を参照すれば、すぐに HLS コンパイラの評価を行うことができます。
HLS コンパイラを用いて、工数の削減やソフトウェア設計者がハードウェア設計を行う第一歩となれば嬉しいです。
環境構築の方法や簡易チュートリアルといった記事や資料を用意しています。ぜひ、HLS コンパイラを使用してみてください。
おすすめ記事/資料はこちら
HLS コンパイラの環境構築(Windows® 編)
HLS 簡易チュートリアル
High Level Synthesis 関連の記事や資料
インテル® FPGA の開発フロー/FPGA トップページ