yohhoyの日記

技術的メモをしていきたい日記

OpenMP 6.0仕様リリース

2024年11月 OpenMP 6.0仕様リリース記事 https://www.openmp.org/home-news/openmp-arb-releases-openmp-6-0-for-easier-programming/ より抄訳。

OpenMP仕様バージョン6.0はOpenMP ARB、主要なコンピュータハードウェア/ソフトウェアベンダーのグループ、そしてOpenMPコミュニティ全体のユーザーによって共同開発されました。改訂仕様ではいくつかの細かな改良に加え、次の大きな追加が行われました:

  • タスクプログラミングの簡略化:
    • 並列リージョンを実行するどのチームにも割当てられない、フリーエージェント(free-agent)スレッドによるタスク実行のサポート。
    • 効率的な再現実行(replay execution)のためのタスクグラフ記録(taskgraph record)の有効化。
    • 依存関係を指定できるタスクの集合を拡張する、透過タスク(transparent task)の追加。
  • バイスサポートの拡張:
    • 配列構文アプリケーションのサポート追加:workdistributeディレクティブは配列記法の実行を個別の作業単位へ分割し、Fortranのデバイスサポートを強化します。
    • メモリ割当とアクセシビリティの制御が強化され、割当可能な変数の管理が容易になります。
    • デフォルトのデータ環境属性のサポートを拡張。
    • 構造化された非同期データマッピング領域の追加による、非同期データ転送の記述の容易化。
    • バイスへのデータマッピング拡張によるメモリ制御の向上。
    • groupprivateディレクティブより、デバイス上にチーム別メモリを持つ機能を追加。
  • ループ変換(loop transformation)プログラミングの容易化: ループの融合(fusion)・反転(reverse)・交換(interchange)の使用が簡素化されます。
  • インダクション(induction)操作のサポート:既知のパターンに従うループにおける基本的な算術演算とユーザ定義演算の並列化をサポート。*1
  • 最新C/C++およびFortran言語標準の並列化をサポート:
    • C属性構文*2を含むC23、Fortran 2023、C++23の完全サポート。
    • 新しいC/C++属性の導入。
  • ストレージリソースとメモリスペースのユーザコントロール強化:
    • メモリ割当制御を強化する新しいメモリトレイトを追加。
    • メモリ空間の定義とクエリのための新しいAPIルーチンを提供。
  • 非推奨機能の削除:バージョン5.0、5.1、5.2で非推奨とされた機能が削除されました。

関連URL

*1:従来からある リダクション(reduction)=演繹操作 に対して、インダクション(induction)=帰納操作 が導入される。反復的ループにおいて前イテレーションまでの計算結果に依存する演算。OpenMP 6.0では組込型のインダクション操作として加算(+)と乗算(*)がサポートされる。

*2:https://yohhoy.hatenadiary.jp/entry/20200505/p1