[論文レビュー] SL: a "quick and dirty" but working intermediate language for SVP systems
本論文は、SVP(システム仮想化プラットフォーム)システムを対象とする並列プログラムのコンパイルのためのターゲット言語として設計された軽量なC拡張言語SLを紹介する。SLは、スレッドのバルク生成、ワードサイズのチャネルを用いたデータフロー通信、スレッドファミリーの終了同期を可能にし、最小限の実装複雑性で、多数コアおよびハードウェアマルチスレッドプロセッサ向けにポータブルで低レベルのインターフェースを提供する。
The CSA group at the University of Amsterdam has developed SVP, a framework to manage and program many-core and hardware multithreaded processors. In this article, we introduce the intermediate language SL, a common vehicle to program SVP platforms. SL is designed as an extension to the standard C language (ISO C99/C11). It includes primitive constructs to bulk create threads, bulk synchronize on termination of threads, and communicate using word-sized dataflow channels between threads. It is intended for use as target language for higher-level parallelizing compilers. SL is a research vehicle; as of this writing, it is the only interface language to program a main SVP platform, the new Microgrid chip architecture. This article provides an overview of the language, to complement a detailed specification available separately.
研究の動機と目的
- 本論文の目的は、SVPプラットフォーム向けにポータブルで効率的な中間言語が不足しているという問題に取り組むことにある。
- 以前のµTC言語がSVPプラットフォームにコンパイル不能であったという限界を克服することにある。
- OSの下位レベルで並列処理プリミティブをサポートする実用的で実装可能な言語を設計することにある。
- マイコングリッド・チップアーキテクチャを含む、多様なSVPプラットフォーム間で共通のインターフェースを提供することにある。
- 本研究は、将来のコンパイラ開発および多数コアシステムのハードウェアポータビリティを支援することを目的としている。
提案手法
- SLはISO C99/C11に準拠した構文拡張として設計されており、標準Cとの互換性を保っている。
- 新しいキーワードとして、入出力データフロー・チャネルを備えたスレッド関数を定義するためのsl_defおよびsl_enddefを導入している。
- sl_createおよびsl_sync構文により、サイズとウインドウングを設定可能なスレッドファミリーのバルク生成と同期が可能である。
- データフロー通信は、スレッド関数パラメータ用のsl_shparmとスレッドファミリーのエンドポイント用のsl_shargによって管理され、読み取り・書き込み操作にはsl_getp/sl_setpおよびsl_geta/sl_setaが使用される。
- 実装の簡素化を図るため、明示的なキーワードを用いた明示的型付けを採用し、整数型と浮動小数点型のための別個キーワードを導入している。
- SLツールチェインは、SLコードをSVPマシンコードにコンパイルするもので、ソフトウェアエミュレーションおよびマイコングリッドのようなハードウェアプラットフォームをターゲットとしている。
実験結果
リサーチクエスチョン
- RQ1多様なSVPプラットフォーム、特にハードウェアマルチスレッド多数コアシステムを対象とする、軽量でポータブルな中間言語をどのように設計できるか?
- RQ2以前のµTC言語はなぜコンパイルに不適切だったのか?SLはその制限をどのように克服したのか?
- RQ3OSを回避する低レベル実行モデルにおいて、SLは効率的なバルクスレッド生成、同期、データフロー通信をどの程度サポートできるか?
- RQ4低レベルシステムをターゲットとする言語で、型システムをどのように簡素化しつつ、並列処理の表現力を損なわないようにできるか?
- RQ5分散メモリや一般化された同期パターンといった将来のハードウェアトレンドをサポートするために、どのような拡張が必要か?
主な発見
- SLはマイコングリッド・チップアーキテクチャ—主なSVPプラットフォーム—の唯一のインターフェース言語として正常に機能している。
- 本言語は、スレッドファミリーの非決定的かつ並列実行を可能にし、0〜9および10の数字を任意の順序で出力するプログラムによって実証されている。
- SLの設計は、明示的型付けとスカラ型のための明示的キーワードを用いることで、複雑な静的解析を回避し、実装の簡素化を著しく進めている。
- SLツールチェインはオープンソースライセンスでリリースされており、SAC2Cや並列化Cコンパイラとの統合を含め、コミュニティでの利用が可能である。
- SLは既に複数の研究プロジェクトで使用されており、実用性と互換性の高さから、µTCの代替として論文発表でも採用されている。
- 現在進行中の作業として、分散メモリモデル、POSIXスレーディングAPIのサブセット、およびリダクションやロードバランシングといった一般的なパターンのための高レベル抽象化の拡張が進められている。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。