oneAPI 1.3 暫定仕様書 Rev. 1 の解説 (1)

その他

この記事は、https://www.oneapi.io/spec/ で 2023年9月14日に公開された『oneAPI 1.3 Provisional Specification Rev. 1』 (HTMLPDF) をベースにしています。原文は2000 ページ近くあり、翻訳の時間とリソースも限られるため、全文翻訳ではなく、記事形式で区切った仕様とその解説を提供することにしました。


第 1 回では、『oneAPI 1.3 Provisional Specification Rev. 1』の前文および「Introduction」の節を取り上げています。

oneAPI は、オープンで無料の標準ベースのプログラミング・システムであり、多様なアクセラレーターとハードウェア世代にわたる移植性とパフォーマンスを提供します。oneAPI は、並列アプリケーションを作成する言語とライブラリーで構成されます。

  • SYCL*: アクセラレーターとマルチプロセッサーをプログラミングする oneAPI のコア言語。SYCL* により、開発者はハードウェア・ターゲット (CPU および GPU、FPGA などのアクセラレーター) 全体でコードを再利用し、特定のアーキテクチャーに合わせてチューニングできます。

  • oneDPL: C++ 標準ライブラリー、Parallel STL、および拡張 API を使用して oneAPI デバイスをプログラミングする DPC++ 向けのライブラリーです。

  • oneDNN: ディープラーニング・フレームワーク向けプリミティブのハイパフォーマンス実装を提供します。

  • oneCCL: 複数デバイス間でディープラーニング・フレームワークをスケーリングする通信プリミティブです。

  • レベルゼロ: oneAPI 言語およびライブラリーのシステム・インターフェイスを提供します。

  • oneDAL: データサイエンスを加速するアルゴリズムです。

  • oneTBB: マルチプロセッサー上の複雑なアプリケーションでスレッドベースの並列処理を導入するライブラリーです。

  • oneMKL: 科学、工学、および金融アプリケーション向けのハイパフォーマンス数学ルーチンを提供します。

解説: 古い仕様ではこの新しい oneAPI のコア言語を DPC++ と表現していましたが、DPC++ は SYCL* という名称に置き換えられました。

はじめに

oneAPI は、アクセラレーター・アーキテクチャー全体で同じ言語とプログラミング・モデルを提供することで、ソフトウェア開発を簡素化します。この章では、プログラミング・モデルについて述べます。

並列アプリケーション開発は、システムによって提供される並列アルゴリズムを実装する「API プログラミング」と、プログラマーが並列アルゴリズムを作成する「ダイレクト・プログラミング」の組み合わせです。

API プログラミングでは、プログラマーはライブラリーを呼び出してプログラムのパフォーマンス上重要なコード領域を記述します。適切に定義され成熟した問題ドメインには、ライブラリーとしてパッケージ化されたハイパフォーマンス・ソリューションが提供されています。oneAPI は、最もよく使用されるデータ並列ドメイン向けの API セットを定義し、oneAPI プラットフォームは、各種アクセラレーター向けのライブラリー実装を提供します。可能な限り、API は BLAS などすでに確立された標準をベースとしており、API プログラミング・モデルにより、プログラマーは最小限のコーディングとチューニングで、多様なアクセラレーターにおいて高いパフォーマンスを達成できます。

一部の問題ドメインは、標準化されたソリューションが存在しないか、ライブラリーで容易に実装できないチューニングを必要とするため、API プログラミングにあまり適していません。この場合、プログラマーはダイレクト・プログラミングにより並列アルゴリズムを明示的に記述する必要があります。oneAPI のプログラミング・モデルは、データ並列処理に基づいており、各データ要素に対し同じ計算が実行されるため、データの規模に応じてアプリケーションの並列性も向上します。データ並列アルゴリズムでは、プログラマーが並列処理を直接表現できるため、並列アーキテクチャー向けに効率良いアルゴリズムを生産的に作成できます。

データ並列アルゴリズムは、科学計算、人工知能、可視化など、計算量が非常に多い問題の解決に使用されます。データ並列アルゴリズムは、マルチコア CPU、GPU、シストリック・アレイ、FPGA などさまざまなアーキテクチャーに効率良くマッピングできます。

対象とする読者

この仕様の対象読者には、アプリケーション開発者、ミドルウェア開発者、システム・ソフトウェア・プロバイダー。およびハードウェア・プロバイダーが含まれます。この仕様への貢献者は、アクセラレーター向けのソフトウェア・エコシステムを形成します。生産的でハイパフォーマンスなシステムでは、ソフトウェア・スタックのすべてのレベルでの制約を考慮する必要があります。この仕様書の利用者は、コンポーネントが oneAPI プラットフォームのアプリケーションおよびシステム・ソフトウェアと相互運用できるようになります。

仕様の目標

oneAPI は以下を提供することを目標としています。

  • ソースレベルの互換性: 再コンパイルとチューニングにより、oneAPI アプリケーションとミドルウェアを oneAPI 準拠のプラットフォームに移植します。
  • パフォーマンスの透過性: API と言語構造により、プログラマーはハードウェア間のマッピングを十分に制御することで、効率良いソリューションを作成できます。
  • ソフトウェア・スタックと移植性: プラットフォーム・プロバイダーは、oneAPI レベルゼロ・インターフェイスを実装することで、oneAPI ソフトウェア・スタックを移植できます。

定義

この仕様では、RFC 2119 (英語) で明示される、「すべきである」、「すべきではない」、「必須」などの定義を採用しています。

寄稿のガイドライン

この仕様は、Khronos Group などの標準化団体や産学イニシアチブと協力し、相互運用性と互換性を実現するためオープンで公正なプロセスで仕様を作成および定義してきたインテルの数十年にわたる歴史を引き継ぐものです。oneAPI はオープン仕様であることを意図しており、皆さんの参加により良いものとなることを願っています。フィードバックは任意です。インテルが皆さんからのフィードバックを本仕様に反映し、Khronos Group の SYCL* 仕様を含む上位の標準化団体にフィードバックを提供できるようにするため、次の条件に基づいてフィードバックをお送りください。oneAPI 仕様へのフィードバックを、それぞれの提出ポリシーに基づいて Khronos Group を含むほかの標準化団体へ送ることは禁止されていません。

GitHub* リポジトリー (英語) で oneAPI 仕様の投稿を開いて oneAPI 仕様の策定に貢献いただけます。

署名

フィードバックのすべての投稿にサインオフ (Signed-off-by) タグを含めてください。これにより、次のことに同意したものと見なされます。

  1. あなたは、フィードバックをインテルにライセンス供与する権利を有しています。
  2. インテルは、知的財産権またはライセンス義務に限定されない、いかなる種類の義務または制限なしに、独自の裁量でフィードバックを自由に使用、開示、複製、変更、ライセンス供与、または配布することができます。
  3. フィードバックは公開され、その記録は無期限に保持される場合があります。

上記に同意する場合、フィードバックのすべての投稿に、本名と電子メールアドレスを含む次のような行を記載する必要があります。

Signed-off-by: Joe Smith joe.smith@email.com


法務上の注意書き

The content of this oneAPI Specification is licensed under the Creative Commons Attribution 4.0 International License (英語). Unless stated otherwise, the sample code examples in this document are released to you under the MIT license (英語).

This specification is a continuation of Intel’s decades-long history of working with standards groups and industry/academia initiatives such as The Khronos Group*, to create and define specifications in an open and fair process to achieve interoperability and interchangeability. oneAPI is intended to be an open specification and we encourage you to help us make it better. Your feedback is optional, but to enable Intel to incorporate any feedback you may provide to this specification, and to further upstream your feedback to other standards bodies, including The Khronos Group SYCL* specification, please submit your feedback under the terms and conditions below. Any contribution of your feedback to the oneAPI Specification does not prohibit you from also contributing your feedback directly to other standard bodies, including The Khronos Group under their respective submission policies.

By opening an issue, providing feedback, or otherwise contributing to the specification, you agree that Intel will be free to use, disclose, reproduce, modify, license, or otherwise distribute your feedback at its sole discretion without any obligations or restrictions of any kind, including without limitation, intellectual property rights or licensing obligations.

This document contains information on products, services and/or processes in development. All information provided here is subject to change without notice.

© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。

* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。

目次        パート 2 »
タイトルとURLをコピーしました