LabVIEW FPGA​コンパイル​オプション

概要

この​10​年​ほど​で、​LabVIEW FPGA​モジュール​は​業界​標準​の​NI​再​構成​可能​I/​O(RIO)​ハードウェア​とともに、​FPGA(Field-​Programmable Gate Array)​の​プログラミング​を​身近​な​もの​に​しま​した。​ただし​FPGA​技術​に​は、​FPGA​設計​の​統合、​配置、​ルーティング​など​処理​負荷​の​高い​タスク​へ​の​対処​という、​全て​の​FPGA​プログラマ​が​認知​する​課題​が​あり​ます。​この​タスク​により、​コンパイル​時間​は​数分​単位​から​数時間​単位​に​及ぶ​長​さ​に​なり​ます。​さらに、​ムーア​の​法則​の​とおり​この​10​年​ほど​で​設計​は​大規模​化、​複雑​化​し、​問題​は​より​複合​的​に​な​って​い​ます。​対策を施さなければ、​FPGA​設計​プロセス​の​中​で、​コンパイル​に​かかる​時間​の​割合​が​増え​続ける​可能性​が​あり​ます。​この​技術​資料​では、​Linux​の​コンパイル​システム​を​使用​し​て​処理​負荷​の​高い​プロセス​を​オフロード​し、​コンパイル​時間​の​短縮​も​できる、​LabVIEW FPGA​モジュール​による​3​つ​の​FPGA​コンパイル​オプション​について​紹介​し​ます。

内容

複雑​化​する​FPGA​の​コンパイル

FPGA​コンパイラ​は​1​つ​の​モノ​シ​リック​な​アルゴリズム​では​なく、​複雑​かつ​大規模​な​アルゴリズム​の​集合​体​です。​計算​上の​課題​により、​設計​では​ユーザ​が​自由​に​構成​できる​無数​の​処理​要素​を​使用​し​て​最適​な​レイアウト​を​チップ​上​に​生成​する​フロー​を​実現​する​必要​が​あり​ます。​コンパイラ​は、​シンセシス​を​利用​し​て、​処理​要素​同士​が​論理​接続​さ​れ​た​システム​を​作成​し​ます。​そして​反復​プロセス​で​マッピング、​配置、​ルーティング​を​行​って​最適​な​ソリューション​を​見​つけ​出し、​ユーザ​の​制約​を​守り​つつ​物理​チップ​上​で​全て​の​配線​を​行い​ます。​問題​へ​の​最適​な​ソリューション​は​無限​の​可能性​が​ある​ため、​その​背景​に​ある​数学​的​演算​は​自明​では​ありま​せん。​そのため、​FPGA​コンパイル​は​数時間​を​要​し、​高密度​シリコン​なら​さらに​長​く​かかる​こと​が​あり​ます。

コンパイル​時間​を​短縮​する​に​は、​大​容量​RAM​と​高性能​プロセッサ​を​搭載​した​専用​の​ハイエンド​Windows​マシン​を​別に​用意​し​て、​その​マシン​に​コンパイル​を​任​せ​て​負荷​を​軽減​し​ます。​Linux​システム​に​Xilinx​コンパイル​ツール​を​インストール​し​て​その​最適​化​性能​を​活用​すると、​さらに​時間​を​短縮​する​こと​が​でき​ます。​ナショナル​イン​ス​ツル​メンツ​では、​社内​で​その​よう​な​オプション​を​設定​でき、​さらに​保守​不要​の​ハイエンド​コンピュータ​に​クラ​ウド​で​実装​できる​よう​に​する​ため、​LabVIEW FPGA​コンパイル​システム​を​開発​しま​した。

LabVIEW FPGA​コンパイル​システム​の​概要

NI​の​LabVIEW FPGA​コンパイル​システム​は、​3​つ​の​基本​ソフトウェア​コンポーネント​を​搭載​する​こと​で、​モジュール​式​の​スケーラブル​な​コンパイル​ソリ​ュ​ー​ション​を​実現​し​ます。​コンパイル​システム​は​3​つ​の​要素​に​分かれ​てい​ます。​すなわち、​開発​用​コンピュータ、​コンパイル​サーバ、​任意​の​数​の​コンパイルワーカ​です。

LabVIEW FPGA​モジュール​開発​環境 — 使い慣れた​LabVIEW​開発​環境​で​アプリケーション​を​作成​でき​ます。​FPGA VIの実行を​クリック​すると、​中間​ファイル​生成​ステップ​が​完了​し​ます​(詳細​について​は、「LabVIEW FPGA Compilation Process」​を​参照​し​て​くだ​さい)。​生成​が​終わる​と、​開発​用​コンピュータ​は​中間​ファイル​を​Web​サービス​通信​経由​で​コンパイル​サーバ​に​送り​ます。

コンパイル​サーバ―​コンパイル​サーバ​は​1​つ​または​複数​の​LabVIEW FPGA​開発​システム​から​コンパイル​ジョ​ブ​を​受け取り、​その​コンパイル​タスク​を​実行​できる​コンパイルワーカ​を​検索​し​ます。​使用​できる​コンパイルワーカ​が​ない​場合、​コンパイル​サーバ​は​コンパイル​タスク​を​キュー​に​入れ​て​コンパイルワーカ​が​使用​可能​に​なる​の​を​待ち​ます。

コンパイルワーカ―​コンパイルワーカ​に​は​Xilinx​コンパイル​ツール​が​インストール​さ​れ​て​おり、​FPGA​設計​の​合成、​マッピング、​配置、​ルーティング​が​行​え​ます。​この​よう​な​ツール​を​使用​し​て、​コンパイルワーカ​は​設計​を​実装​し、​ビット​ファイル​を​生成​し​ます。​コンパイルワーカ​は​ビット​ファイル​を​コンパイル​サーバ​に​送り​返し、​その後、​コンパイル​サーバ​は​ビット​ファイル​を​開発​用​コンピュータ​に​送り​返し​ます。

図​1. LabVIEW FPGA​コンパイル​システム​アーキテクチャ​に​含​ま​れる​3​つ​の​コンポーネント: 開発​用​コンピュータ、​コンパイル​サーバ、​コンパイルワーカ

この​コンパイル​システム​アーキテクチャ​に​は、​複数​の​コンパイルワーカ​と​コンパイル​ジョ​ブ​の​自動​割り当て​を​サポート​する​という​メリット​が​あり​ます。​コンパイル​サーバ​は​キュー​と​ファーム​を​処理​し、​コンパイルワーカ​の​ドロップ​イン/​アウト​に対し​耐性​を​備え​てい​ます。​実際、​コンパイル​ジョ​ブ​中​に​コンパイルワーカ​が​ドロップ​アウト​すると、​コンパイル​サーバ​は​これ​を​検出​し​て​他の​使用​可能​な​コンパイルワーカ​に​コンパイル​を​渡し​ます。​コンパイル​ジョ​ブ​を​やり直す​必要​が​ある​場合​でも、​ユーザ​側が​アクション​を​起こす​こと​なく​終了​し​ます。​開発​環境​と​コンパイル​サーバ​間​の​通信​ライン​は​全て​堅牢​な​Web​サービス​なので、​コンパイル​システム​は​開発​用​コンピュータ​の​再​起動​といった、​数多く​の​開発​側​の​問題​に対して​も​耐性​を​備え​てい​ます。

LabVIEW FPGA​コンパイル​システム​の​標準​オプション

LabVIEW FPGA​モジュール​に​は​標準​機能​として​2​つ​の​コンパイル​システム​オプション​が​あり​ます。​開発​用​コンピュータ​で​直接​コンパイル​する​方法​と、​リモート​の​専用​コンパイル​マシン​に​転送​する​方法​です。

デフォルト​では、​LabVIEW​は​開発​用​コンピュータ​に対して、​1​つ​の​コンパイル​サーバ​と​1​つ​の​コンパイルワーカ​が​LabVIEW FPGA​モジュール​とともに​インストール​さ​れ​ます。​LabVIEW 2009 FPGA​モジュール​以前​の​バージョン​を​使用​し​て​いる​場合、​この​セットアップ​動作​は​全く​同じ​で、​コンパイル​は​開発​用​コンピュータ​上​で​実行​さ​れ​ます。​ただし​システム​は​元々​分散​型​コンパイル​を​サポート​する​よう​開発​さ​れ​て​いる​ため、​コンパイル​サーバ​にとって​は​コンパイル​は​「ローカル​ホスト」​と​呼ばれる​別​の​コンピュータ​上​で​行​われ​て​いる​よう​に​見え​ます。

 

図​2. LabVIEW FPGA​モジュール​は、​デフォルト​で​コンパイル​サーバ​と​コンパイルワーカ​の​両方​を​開発​用​コンピュータ​に​インストール​し、​開発​用​コンピュータ​の​リソース​を​使​って​コンパイル​ジョ​ブ​を​実行

より​高度​な​コンパイル​システム​構造​を​設定​した​い​場合​は、​コンパイル​サーバ​と​コンパイルワーカ​を​別々​の​コンピュータ​に​インストール​し​ます。​リモート​コンパイル​サーバ​を​設定​する​に​は、​Xilinx​コンパイル​ツール​のみ​を​インストール​し​ます。​この​プロセス​の​詳細​な​手順​について​は、「リモート​コンピュータ​に​LabVIEW FPGA​コンパイル​サーバ​を​インストール​し、​アクティブ​化​する」​という​記事​を​参照​し​て​くだ​さい。

図​3. LabVIEW FPGA​では、​アド​オン​なし​で​オフロード​さ​れ​た​シンプル​な​シングル​マシン​コンパイル​サーバ​を​サポート

リモート​コンピュータ​に​Xilinx​コンパイル​ツール​を​インストール​すると、実行ボタン​を​クリック​した​時にネットワーク​コンパイル​サーバ​に​接続を​選択​する​こと​で、​開発​用​マシン​を​この​新しい​コンパイル​サーバ​に​接続​する​こと​が​でき​ます。​また、ツール​→​オプション​→FPGA​モジュールページ​から​この​コンパイル​オプション​を​設定​する​こと​も​でき​ます。

図​4. リモート​FPGA​コンパイル​マシン​に​実装​する​に​は、​コンパイル​システム​オプション​を​選​んで​サーバ​の​場所​を​指定


FPGA​コンパイル​を​オフロード

開発​者​が​より​高度​な​FPGA​技術​を​用いる​につれて、​FPGA​コンパイル​は​演算​的​に​複雑​化​し、​その​結果、​より​時間​が​かかる​よう​に​なり​ます。​開発​用​コンピュータ​の​リソース​を​節約​する​ため​に、​LabVIEW FPGA​コンパイル​システム​アーキテクチャ​に​は​コンパイル​を​専用​の​コンピュータ​に​任​せ​て​負荷​を​軽減​する​オプション​が​あり​ます。​専用​コンピュータ​は、​高性能​プロセッサ​と​高​レベル​の​RAM​を​装​え​た​ハイエンド​コンピュータ​に​する​必要​が​あり​ます。​表​1​は、​様々​な​Xilinx Virtex-5 FPGA​に​必要​な​最小​RAM​を​示し​てい​ます。

表​1. Xilinx Virtex-5​および​Zynq-700 FPGA​の​推奨​RAM​に従う​(出典:Xilinx Memory Recommendations Using the ISE Design Suite(ISE Design Suite​を​使用​する​場合​の​Xilinx​で​の​推奨​メモリ)

コンパイル​ジョ​ブ​の​パフォーマンス​は、​プロセス​が​大量​の​システム​メモリ​を​必要​として​い​て、​ハード​ドライブ​を​呼び出す​必要​が​あっ​たり、​時には​終了​を​必要​と​する​場合​に、​最も​悪影響​を​受け​ます。​最良​の​結果​を​得る​に​は、​表​1​の​推奨​事項​に従って​くだ​さい。​32​ビット​サーバ​の​場合、​4 GB​の​RAM​が​必要​で、​Xilinx​コンパイル​ツール​のみ​を​インストール​する​必要​が​あり​ます。​3 GB​の​Windows​スイッチ​を​使用​し​て、​OS​が​コンパイル​に​最大限​の​RAM​を​割り当て​られる​よう​に​する​こと​が​でき​ます。​表​に​示す​よう​に、​64​ビット​システム​に​は、​より​多く​の​RAM​を​搭載​する​必要​が​あり​ます。​当然、​こうした​システム​は​4 GB​の​RAM​より​多く​の​ことに​対処​できる​ので、​この​場合​RAM​容量​は​多い​ほど​よく、​最大​16 GB​まで​搭載​でき​ます。

 

1​台​の​コンピュータ​に​オフロード​する​場合

LabVIEW FPGA​モジュール​を​使用​し​て、​コンパイル​サーバ​と​コンパイルワーカ​を​別々​の​コンピュータ​に​インストール​し​て、​コンパイル​を​実行​する​こと​が​でき​ます。​この​ため​に​は、「リモート​コンピュータ​に​LabVIEW FPGA​コンパイル​サーバ​を​インストール​し、​アクティブ​化​する」​という​記事​に​記述​さ​れ​た​手順​に従って​くだ​さい。

図​5. LabVIEW FPGA​モジュール​では、​アド​オン​なし​で​オフロード​さ​れ​た​シンプル​な​シングル​マシン​コンパイル​サーバ​を​サポート

 

コンパイル​ファーム​に​オフロード​する​場合

FPGA Compile Farm Server​を​使用​すると、​複数​の​開発​者​が​ターゲット​と​する​可能性​の​ある​複数​の​コンパイルワーカ​を​含む、​オンサイト​の​コンパイル​ファーム​を​作成​でき​ます。注意:LabVIEW 2013 FPGA​モジュール​以前​の​バージョン​の​場合​は、​LabVIEW FPGA Compile Farm Toolkit​を​使用​し​て​くだ​さい。

コンパイル​サーバ​に​は、​コンパイル​ジョ​ブ​を​利用​可能​な​全て​の​ワーカ​に​割り振る​役割​が​あり​ます。​複数​の​コンパイルワーカ​が​ある​ため、​コンパイル​は​並列​実行​さ​れ​ます。​利用​可能​な​コンパイルワーカ​が​ない​場合、​コンパイル​サーバ​は​FIFO​を​使用​し​て​要求​を​キュー​に​入れ、​コンパイルワーカ​が​利用​可能​に​な​っ​た​時に​要求​を​割り振り​ます。

 

図​6. 1​つ​の​コンパイル​サーバ​と​複数​の​コンパイルワーカ​を​使用​した​オンサイト​コンパイル​ファーム​アーキテクチャ

 

オンライン​コンパイル​クラ​ウド​サーバ​に​オフロード​する​場合

FPGA​コンパイル​オプション​では、​ナショナル​イン​ス​ツル​メンツ​が​クラ​ウド​として​オンライン​で​提供​し​て​いる​コンパイル​サーバ​および​コンパイルワーカ​を​使用​し​ます。​使い​や​すく​する​ため、​LabVIEW FPGA​から​直接​接続​できる​機能​を​追加​し、​ログイン​を​入力​する​だけ​で、​追加​の​インストール​を​し​なく​て​も​コンパイル​が​クラ​ウド​で​処理​できる​よう​に​な​って​い​ます。​標準​の​Windows​デスク​トップ​と​比べ​て、​FPGA VI​では​コンパイル​時間​が​大幅​に​短縮​さ​れ​ます。​これ​は​LabVIEW FPGA Compile Cloud Service​が、​最新​の​大​容量​RAM​を​搭載​した​専用​の​ハイエンド​コンピュータ​を​使用​し​て​Linux​上​で​Xilinx​コンパイル​ツール​を​実行​する​から​です。​クラ​ウド​で​コンパイル​する​場合​も、​多数​の​VI​を​並列​に​コンパイル​でき​ます。

​クラ​ウド​サービス​を​コンパイル​先に​指定​する​に​は、​LabVIEW FPGA​コンパイル​サーバ​の​ダイ​ア​ログ​ボックス​を​使用​し​て、​オンライン​クラ​ウド​サービス​を​選択​し、​ユーザ​名​と​パスワード​を​入力​し​ます。

図​7. LabVIEW​を​介​し​て​クラ​ウド​に​接続​し、​コンパイル​時間​を​短縮​し​て​コンパイル​の​負荷​を​軽減

コンパイル​クラ​ウド​の​設定​が​完了​すると、​サービス​は​ローカル​コンピュータ​や​ローカル​コンパイル​ファーム​では​なく​クラ​ウド​に​コンパイル​を​行い​ます。​接続​に​は、​ネット​バンキング​など​の​インターネット​サービス​で​使​われ​て​いる​もの​と​同様​の​最新​セキュリティ​対策​が​採用​さ​れ​てい​ます。

>> 詳細​について​は、LabVIEW FPGA Compile Cloud Serviceを​参照​し​て​くだ​さい。

 

図​8. コンパイル​を​オフロード​する​クラ​ウド​アーキテクチャ

 

Linux​で​コンパイル​時間​を​短縮

ナショナル​イン​ス​ツル​メンツ​は、​Linux OS​上​で​の​FPGA​コンパイルワーカ​の​サポート​に​投資​し​てい​ます。​FPGA VI​の​複雑​度​や​ロジック​次第​では、​Linux​コンパイルワーカ​によって、​コンパイル​の​時間​が​Windows​コンパイルワーカ​に​比べ​20​~​50​パーセント​短縮​さ​れる​可能性​が​あり​ます。​Xilinx​は​元々​Linux OS​用​の​コンパイル​ツール​を​設計​および​最適​化​した​ので、​この​大幅​な​コンパイル​時間​の​短縮​も​理解​でき​ます。

図​9. LabVIEW 2012 FPGA​以降​の​バージョン​は​Linux​マシン​へ​の​Xilinx​コンパイル​ツール​の​インストール​を​サポート​し​て​いる​ため、​コンパイル​時間​が​短縮​さ​れる

>> クラ​ウド​で​Linux FPGA​コンパイルワーカ​を​使用​する​利点​について​ご​確認​くだ​さい
>> 独自​の​Linux FPGA​コンパイルワーカ​を​強化​する​方法​の​詳細​は​こちら​を​ご覧​くだ​さい


次​の​ステップ

LabVIEW FPGA​コンパイル​システム​は、​柔軟性​に​優​れ​た​コンパイル​サーバ​および​コンパイル​ワ​ー​カ​アーキテクチャ​により、​演算​負荷​の​高い​FPGA​コンパイル​プロセス​の​処理​を​LabVIEW​開発​用​コンピュータ​から​オフロード​する​こと​が​でき​ます。​LabVIEW FPGA​コンパイル​システム​は、​Linux​ベース​の​コンパイルワーカ​を​使用​する​こと​で​コンパイル​時間​を​短縮​する​こと​も​でき​ます。​チーム​に​適​した​FPGA​コンパイル​オプション​を​選択​した​後​は、​以下​の​リンク​を​使用​し​て、​設定​方法​の​詳細​について​ご​確認​くだ​さい。

LabVIEW FPGA Compile Cloud Service​に​購入​し​て​コンパイル​の​時間​を​短縮

1​つ​の​リモート​コンパイル​コンピュータ​を​構成

社内​用​LabVIEW FPGA​コンパイル​ファーム​を​作成

Linuxでコンパイルワーカ​を​設定