OpenMP* TR6 (テクニカル・レポート 6) に含まれる新機能

TR6 は OpenMP* 5.0 のプレビューであり、2018 年 11 月のリリースが予定されています。

米国コロラド州デンバー、2017 年 11 月 13 日 – OpenMP* アーキテクチャー・レビュー・ボード (ARB) は、OpenMP* API バージョン 5.0 の 2 番目のプレビューとして TR6 をリリースしました。

OpenMP* 言語コミッティーの委員長である Bronis R. de Supinski 氏は、「Technical Report 6 は、OpenMP* 仕様に対するユーザーによるフィードバックの重要性を示すものです」と語っています。「ユーザーは、複数レベルのメモリーサポート、ディープコピー、ユニファイド共有メモリーへの簡単なアクセス、および記述的ループ構造など、いくつかの機能は極めて重要であることを示唆しています。これらのフィードバックを踏まえて、OpenMP* 5.0 ではこれらの主要な機能をすべて含めることになるでしょう。」

Technical Report 6 (TR6) は、2016 年 11 月に公開された OpenMP* 5.0 TR4 を拡張したものです。TR6 の主な機能追加には次のものがあります。

  • 複数レベルのメモリーシステムのサポート: OpenMP* 5.0 では、異なる種類のメモリーにデータを配置する直観的なメモリー割り当てメカニズムがサポートされます。
  • 複雑なデータ構造のディープコピーをサポート: TR6 ではユーザー定義のマッパーが追加されます。オブジェクト指向のデータ構造を、アクセラレーター・デバイスに正しくコピーする構成可能なメカニズムを提供します。
  • OpenMP* device 構文の追加拡張: その他、アクセラレーター向けの OpenMP* サポートの主要機能として、ユニファイド共有メモリーのサポート、デバイス固有の機能実装を使用する能力、明示的なデータマッピングの制御、および実行時のデバイスオフロードのオーバーライドなどが考えられています。
  • 記述的なループの最適化サポート: 並行性構造は、関連するループ入れ子のすべての反復が任意の順番で同時実行されることを示唆します。これは、コンパイラーによる実装固有の最適化により実現されます。
  • OpenMP* アプリケーションの改善されたデバッグ機能をサポート: TR6 では OMPD を追加します。これはサードパーティー・ツール・インターフェイスによる直観的な OpenMP* コードのデバッグを可能にし、OpenMP* パフォーマンスの詳細な解析をサポートするため TR4 で追加されたファーストパーティー・ツール・インターフェイスである OMPT を補完します。
  • タスク依存の新しい形式: 新しいメカニズムは、(1) セット中で相互排他を必要とするタスクセットと、他のタスクに関連する順序付け、および (2) 動的に発生する依存性のセットとタスクをサポートします。
  • 大きなメモリーモデルの柔軟性: OpenMP* 5.0 は、低レベルのメモリー同期の最適化を可能にする acquire (取得)/release (解放) セマンティクスをサポートします。

関連記事