Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# 分散・並列・クラスターコンピューティング

高位合成における選択的動的スケジューリング

動的スケジューリングによって高水準合成のパフォーマンスを改善する新しいアプローチ。

― 1 分で読む


HLSにおけるダイナミックHLSにおけるダイナミックスケジューリングハードウェア性能を向上させる。ターゲットを絞ったスケジューリング技術で
目次

ハイレベル合成(HLS)っていうのは、C++とかで書かれたコードを使って、FPGA(フィールドプログラマブルゲートアレイ)みたいなデバイス上で実装できるカスタムデザイン用のハードウェアに変換するプロセスだよ。この技術は、特化したタスクに関しては、従来のCPUやGPUよりもパフォーマンスや効率が良い場合が多いんだ。

HLSの大きな課題の一つは、コード内のループをどう管理するかってこと。ループパイプラインっていうテクニックを使うことで、複数のループのイテレーションを同時に実行してパフォーマンスを最大限に引き上げることができる。ループパイプラインの成功は、主にイニシエーションインターバル(II)って呼ばれるものに依存してて、これは連続するイテレーションの開始の間にどれだけのサイクルが経過するかを示すんだ。

通常、HLSには静的と動的の2つのアプローチがあるんだ。静的HLSは、すべての操作を事前にスケジュールするけど、動的HLSは、実行中の現在の状態に基づいてスケジューリングを調整するんだ。それぞれに利点と欠点があって、静的HLSはパフォーマンスが速いけどリソースを多く使うことがある。一方、動的HLSは柔軟性があるけどリソースの効率が悪くてパフォーマンスが遅くなる場合もあるんだ。

現在の課題

静的HLSでは、コンパイル時にスケジュールが決まるから、実行中に満たされるかどうかわからない様々な条件を含めて、コードを通るすべての可能なパスを考慮しなきゃいけないんだ。これのせいで、コンパイラは全ての潜在的なシナリオを考慮するために保守的な見積もりをすることになって、結果的に全体が遅くなることが多いんだよ。

一方で、完全に動的なシステムは柔軟性があるけど、リソースを過剰に使ったり、クリティカルパス(全体のシステムがどれくらい早く動けるかを決める依存操作の最長シーケンス)でボトルネックを作ったりすることがあるんだ。これのおかげで、すぐに適応できるけど、期待したほど効率が良くないこともあるんだよね。

提案された解決策

静的と動的なスケジューリングの制限を克服するために、提案されたアプローチは「選択的動的スケジューリング」って呼ばれてる。これは、動的スケジューリングを適用できる特定の部分だけに導入して、残りのコードは静的スケジューリングのままにするってやり方なんだ。そうすることで、リソースオーバーヘッドを減らしてパフォーマンスを向上させることを目指してる。

目的は、基本ブロックとかループ、メモリ操作など、動的スケジューリングに適したコードの特定のセクションを見つけてマークすること。情報に基づいた分析を使って、予測できない振る舞いの部分を動的スケジューリングのために選択的に切り離すんだ。

基本ブロックの動的スケジューリング

動的スケジューリングに適した基本ブロックを見つけるため、ループ内の制御フローを分析するところから始まる。基本ブロックとは、単一のエントリーとエグジットポイントを持つコードのシーケンスのことだよ。分析では、スケジューリングを改善できるパスや、IIを減少させることができる場所を探るんだ。

例えば、特定の条件下でのみ実行されるコードのブロックがあったら、それは動的スケジューリング用にマークされるかも。このターゲットを絞ったアプローチは、動的システムに通常伴うオーバーヘッドを減らすことを目指してるんだ。

ループの動的スケジューリング

ループはHLSの中で重要な要素だよ。提案された方法は、ネストされたループや兄弟ループを見て、それらを切り離して効率的に実行できるかどうかを判断するんだ。

もしネストされたループが制御できない要因に依存していたら、それは動的スケジューリングの候補だよ。この変換は、データ依存性がない限り、外側のループが内側のループが終わるのを待たずに実行できるようにして、より効率的な実行を生み出すことを目指してるんだ。

兄弟ループの場合、二つのループが独立して動けるなら、動的スケジューリング用にマークされることもあるんだ。これによってスループットが向上するんだよ。

動的スケジューリングにおけるメモリ操作

メモリ操作は、HLSでは依存関係のせいで課題になることが多いんだ。もし操作が手に入りにくいデータを必要とする場合、遅延が発生しちゃうんだよ。このパフォーマンスを向上させるために、この方法では、メモリ操作を追跡してうまく管理するためにロードストアキュー(LSQ)を使うことを提案してるんだ。

特定のメモリ操作を動的スケジューリング用に自動的にマークすることで、システムはランタイムでの潜在的な競合をチェックして、ハザードの可能性を最小限にしつつ操作の効率を最大化するんだよ。

パフォーマンス評価

提案された方法の効果を評価するために、伝統的なHLSアプローチと比較するために一連のベンチマークでテストされたんだ。これらのベンチマークには、シンプルなループと複雑なループ、予測できないアドレスを持つメモリ操作が含まれてたよ。

結果は、完全に動的なシステムと比べて全体的に速度が改善されたことを示してる。選択的動的スケジューリングアプローチは、エリアオーバーヘッドを最小限に抑えつつパフォーマンスを向上させることができたんだ。これはリソースの節約が大事なアプリケーションにとって特に有益なんだよ。

全体として、提案された方法は、選択的に動的スケジューリングを導入することで、完全に動的なシステムや静的なシステムよりも、より効果的にリソースを管理しながら高いスループットを達成できることを示したんだ。

結論

要するに、ハイレベル合成は特有の課題を持ってて、特にループの実行やメモリ操作の管理に関してはね。選択的動的スケジューリング戦略は、パフォーマンスを向上させつつリソースの使用を最適化する有望な解決策を提供するんだ。動的スケジューリング用にコードのセクションを賢くマークして静的テクニックの組み合わせを活用することで、HLSはより効率的になり、より幅広い用途に適用できるようになるんだ。

この研究はハイレベル合成の分野を進展させる重要な一歩で、静的と動的スケジューリングの利点を活用しつつ、それらの欠点を軽減することができるんだ。将来的な研究では、特定のアプリケーションやハードウェアセットアップに対してこれらのテクニックをさらに洗練させて、HLSツールの能力とパフォーマンスをさらに向上させることができるかもしれないね。

オリジナルソース

タイトル: Compiler Discovered Dynamic Scheduling of Irregular Code in High-Level Synthesis

概要: Dynamically scheduled high-level synthesis (HLS) achieves higher throughput than static HLS for codes with unpredictable memory accesses and control flow. However, excessive dataflow scheduling results in circuits that use more resources and have a slower critical path, even when only a part of the circuit exhibits dynamic behavior. Recent work has shown that marking parts of a dataflow circuit for static scheduling can save resources and improve performance (hybrid scheduling), but the dynamic part of the circuit still bottlenecks the critical path. We propose instead to selectively introduce dynamic scheduling into static HLS. This paper presents an algorithm for identifying code regions amenable to dynamic scheduling and shows a methodology for introducing dynamically scheduled basic blocks, loops, and memory operations into static HLS. Our algorithm is informed by modulo-scheduling and can be integrated into any modulo-scheduled HLS tool. On a set of ten benchmarks, we show that our approach achieves on average an up to 3.7$\times$ and 3$\times$ speedup against dynamic and hybrid scheduling, respectively, with an area overhead of 1.3$\times$ and frequency degradation of 0.74$\times$ when compared to static HLS.

著者: Robert Szafarczyk, Syed Waqar Nabi, Wim Vanderbauwhede

最終更新: 2023-08-29 00:00:00

言語: English

ソースURL: https://arxiv.org/abs/2308.15120

ソースPDF: https://arxiv.org/pdf/2308.15120

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事

ソフトウェア工学ソフトウェアアーキテクチャの最適化におけるデザイナーの関与

ソフトウェアシステムのパフォーマンスと信頼性を向上させるデザイナーの役割。

― 1 分で読む

コンピュータと社会絵文字が開発者のコミュニケーションに与える影響

絵文字は開発者同士のオンラインコミュニケーションを良くして、参加を増やしたり、問題解決を早めたりするんだ。

― 1 分で読む