アップデート・バージョン 2024.1 で SYCL* 2020 完全準拠の最初のコンパイラーが誕生

AIインテル® oneAPI

この記事は、インテルのサイトで公開されている「2024 Tools update features the first fully conformant SYCL 2020 compiler」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


アップデート・バージョン 2024.1 のリリース

インテル® ソフトウェア開発ツール 2024 の最新のアップデート (2024.1) がリリースされました。このアップデートには、AI PC からデータセンターやスーパーコンピューターに至るまで、AI のパフォーマンスを向上する多数の最適化に加えて、SYCL* 2020 に完全に準拠した世界初のコンパイラーが含まれています。

世界初の SYCL* 2020 準拠コンパイラー

C++ with SYCL* は、ベンダーやアーキテクチャーに関係なく、さまざまなアクセラレーターをターゲットにできることが実証されています。これまで、NVIDIA、AMD、およびインテルの GPU をターゲットとする開発プロジェクトで採用され、成功を納めており、説得力のあるパフォーマンス・データ (バージョン 2024.0 に関するブログ (英語) や Steve Hikida の ブログ (英語) で公開されているデータを含む) が公開されています。Codeplay は、NVIDIA* GPU および AMD* GPU 用の oneAPI プラグインをサポートして進化させてきました (詳細はこちら (英語))。

Khronos Group の SYCL* 標準は、SYCL* 2020 で高い完成度に達しています。この野心的な標準は、多数の重要な機能を追加しており、特に注目すべき 5 つの機能 (バックエンド、USM、リダクション、グループ・ライブラリー、アトミック参照) については、「SYCL* 2020 で追加された 5 つの優れた機能」で詳しく説明しています。

近年、さまざまな C++ コンパイラーが SYCL* をサポートしていますが、Khronos が特定の実装を SYCL* 2020 準拠であると認めたことは注目に値します。インテルは、同社のコンパイラー (2024.1 リリースで利用可能) の結果を提出して審査に合格し、Khronos のサイトに SYCL* 2020 準拠の最初の実装として掲載 (英語) されました。

長年コンパイラーの第一人者であり、インテルの副社長兼コンパイラー・エンジニアリング部長の Steve Hikida は、どのような標準でも、最初に準拠した実装が他の実装を向上に導くと強調しています。この成果について詳しく説明したブログ「インテル® コンパイラーが世界初の SYCL* 2020 準拠を達成」 (英語) で、これがいかに重要であるかを述べています。

「完全なリファレンス・コンパイラー実装があることで、アプリケーションが SYCL* を正しく使用しているかどうかを簡単に判断できるようになりました。開発者は、コードベースがインテル® oneAPI DPC++/C++ コンパイラーで正常にコンパイルされれば、別のハードウェア・セット用の将来の SYCL* 準拠コンパイラーでも、ハードウェア固有の最適化の互換性のみを考慮すれば、コードの正当性を気にすることなく、同じソースコードを利用できることが分かっているため、不安なくソフトウェアを設計およびテストできます。」

昨年末にリリースされたバージョン 2024.0 は、目標達成まであと一歩というところまで到達していました。それ以来、未解決部分に対応し、必要なテスト (Khronos Group の SYCL* 2020 適合性テストスイート (英語)) を実行し、結果を提出したところ、合格の通知を受け取り、Khronos のサイトに掲載されることになりました。この成果を非常に嬉しく思います。

大きな目標を達成しましたが、イノベーションはまだ終わっていません。開発者の重要なニーズに応えるため、インテルは引き続き拡張と改善に取り組んでいきます。一例として、SYCL* Graph (英語) のサポートが挙げられます。インテルでは、将来の SYCL* 標準への実装を検討している機能を利用できるように、コンパイラーでこの機能を試験的に提供しています。最近の Codeplay のブログ (英語) では、SYCL* Graph が NVIDIA* GPU もサポートしていることが共有されています。すべての標準は、使用状況とフィードバックに基づいて進化します。このプロセスにとって重要な皆様からのフィードバックをお待ちしています。

SYCL* の学習には、無料の書籍 (英語) と sycl.tech (英語) のリソースが役立ちます。

バージョン 2024.1 のその他のアップデート

2023年12月に 2024 の最初のバージョン (「2024 Tools Deliver Standards, Performance, Dependability, and Innovation (英語) を参照) がリリースされてから、多くのアップデートと改善が行われています。

まず、インテルのツールの高いパフォーマンスと生産性への取り組みには、AI アクセラレーションに対する幅広いサポートが含まれます。

AI PC からデータセンター AI まで、インテルのツールは幅広くサポート

インテルが最近発表した世界初の AI PC は、インテルのツールによって十分にサポートされており、PC から最新のデータセンターやスーパーコンピューターに至るまで、幅広いアプリケーション開発を支援します。インテル® ソフトウェア開発ツールは、プログラミングの基礎となる重要なサポートを提供し、フレームワーク、OpenVINO™ ツールキット、ドライバーなどに対するインテルの投資によって補完されます。インテルは、AI をあらゆる場所に導入するお手伝いをします。

このリリースでは、多くの新しい最適化と改良が加えられています。最も注目すべきものをいくつか紹介します。

  • インテリジェントな Parallel STL 製品 (あらゆるシステムで動作し、CPU とアクセラレーター間の適切なバランスを支援する) への取り組みを継続し、インテル® oneAPI DPC++ ライブラリーは、ヒストグラム・アルゴリズムを使用して C++ 標準並列処理を拡張し、AI、科学、およびその他のデータ集約型アプリケーションを高速化します。

  • 大規模言語モデル (LLM) や Stable Diffusion などの複雑なモデルのパフォーマンスを向上するインテル® oneAPI ディープ・ニューラル・ネットワーク・ライブラリー (インテル® oneDNN) は、インテル® Arc™ GPU、インテル データセンター GPU、およびインテル® Xeon® スケーラブル・プロセッサーのパフォーマンスを向上します。

  • NVIDIA* デバイスのサポートを含む Data Parallel Control Library (dpctl) により、Python* Array API 標準に 100% 準拠します。新しい関数には、リダクション、統計、並べ替え、集合、要素単位、線形代数、およびインプレースの要素単位の演算の型が含まれます。

  • Data Parallel Extension for NumPy* (dpnp) ライブラリーにより、ドロップイン・アップグレードで NumPy* を簡単に高速化できます。パフォーマンスの機能強化には、線形代数、データ操作、数学、統計、データ型の関数が含まれます。キーワード引数のサポート拡張には、配列の作成、カウント、インデックス作成、線形代数、データ操作、数学、検索、ソート、統計の関数が含まれます。

  • dpnp ライブラリーの Numba アクセラレーションには、線形代数、データ操作、数学、統計、およびデータ型のパフォーマンスの機能強化/関数が含まれます。キーワード引数のサポート拡張には、配列の作成、カウント、インデックス付け、線形代数、データ操作、数学、検索、並べ替え、統計の関数が含まれます。

  • セキュリティーとパフォーマンスの大幅な強化により、Modin 向けインテル® オプティマイゼーションが進化しています。堅牢なセキュリティー・ソリューションは、脆弱性のプロアクティブな特定と修復を保証し、組織のデータ資産を保護します。このリリースには、非同期実行を最適化する多数のパフォーマンス強化が含まれています。

  • インテル® オープン・パス・ガイディング・ライブラリー (インテル® オープン PGL) の空間構造のビルドが進化し、完全にマルチスレッド化され、トレーニング時間を大幅に短縮してパス効率を最適化します。

  • インテル® oneAPI ディープ・ニューラル・ネットワーク・ライブラリー (インテル® oneDNN) が進化し、インテル® データセンター GPU およびインテル® Arc™ GPU のグラフィックス処理が改善され、LLM や Stable Diffusion などの複雑なモデルを最適に処理できるようになりました。また、インテル® Xeon® スケーラブル・プロセッサーのパフォーマンスを向上します。

  • インテル® oneAPI データ・アナリティクス・ライブラリー (インテル® oneDAL) が進化し、XGBoost、LightGBM、CatBoost における勾配ブースティング推論のパフォーマンスが強化されました。

  • インテル® oneAPI コレクティブ・コミュニケーション・ライブラリー (インテル® oneCCL) は、分散ディープラーニングやマシンラーニングのトレーニングおよび推論ワークロードのパフォーマンスをさらに向上します。すべての主要な通信パターンがさらに最適化され、メッセージの受け渡しが高速化されるだけでなく、メモリー効率も向上します。今回のリリースでは、特に推論のパフォーマンスが向上しています。

  • インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL) は、cuSolver、cuBLAS、および CUDA* Math Library で利用可能な関数と同等の関数を追加することで、NVIDIA* CUDA* アプリケーションの SYCL* への移行を容易にします。

必要な AI ツールを見つける

インテルは、AI Tools Selector (英語) と呼ばれる非常に便利なツールを提供しています。これは、AI ツールをダウンロードする際に表示されます。現在は、Linux* 向けの AI ツールでのみ利用できますが、将来的に拡大を望むフィードバックが多数寄せられています。AI Tools Selector をお試しいただき、この素晴らしいツールをどこに、どのように拡張すべきかについてフィードバックをお寄せください。

運用レベルに対応した取り組み

再現性を提供するインテルの取り組みは、10年以上にわたって開発者に歓迎されてきました。インテルは、新しいハードウェアとソフトウェアに対応するサポートを継続的に追加し、新しいパフォーマンスの最適化を提供しています。このリリースでは、操作がデータセンターの GPU にオフロードされる場合でも、BLAS 3 で条件付き数値再現性 (CNR) をサポートしています。インテルは、運用レベルのアプリケーションをデバッグおよびデプロイする際に、これらの機能が非常に重要であることを認識しており、このサポートに対して多くの開発者から寄せられた温かい言葉に感謝しています。

GDB の継続的なサポートには、いくつかの注目すべき更新が含まれています。

  • インテル® ディストリビューションの GDB は、最新の状態を維持し、効果的なアプリケーションのデバッグをサポートする最新の機能拡張に合わせて、GDB 14 をベースとするように変更されました。

  • インテルのディストリビューションには以下が追加されています。

    • GPU のオンライン・ページ・フォルト処理により、開発者はメモリーアクセスの問題をリアルタイムで監視してトラブルシューティングできるようになり、GPU ドライバーの動作に関する情報が得られるため、アプリケーションのパフォーマンスと信頼性が向上します。

    • GPU 用の大規模汎用レジスターファイル (GRF) デバッグモードのサポートにより、開発者は GPU の内部状態を詳しく把握できるようになり、GPU アクセラレーション・アプリケーションの包括的なデバッグと最適化が可能になります。このモードは、複雑なコードやパフォーマンスが重要なコードのデバッグに特に役立ちます。

先進的な標準サポートを提供

インテルは、オープン・スタンダードへの同社のコミットメントが比類のないものであると確信しています。オープンガバナンスのオープン・スタンダードは、コードへの投資とパフォーマンスを移植可能にし、ベンダーへの依存をなくす上で非常に価値があることをインテルは認識しています。標準的な並列処理は、オープン・エコシステムによってサポートされている場合に最適です。

インテルは、サポートする標準のあらゆる面を実装するため懸命に取り組んでいます。サポートする標準を列挙し、有用なヒントや既知の制限に関する注意事項を提供して、透明性の確保に努めています。以下の表に、サポート状況と役立つ情報へのリンクを示します。

インテルは、優れた Fortran コンパイラーを提供するため継続的に取り組んでおり、このアップデート・リリースでは Fortran プログラマー向けに多くの機能が追加されています。

  • 組込みモジュール ISO_C_BINDING の C コードと Fortran コード間の互換性と相互運用性に関する詳細なヘルプが追加されました。

  • 三角関数の計算では、引数を度として受け付ける組込み関数を使用できるようになり、サポートが簡素化されました。

  • 組込みモジュール ISO_FORTRAN_ENV で特定のサイズの事前定義されたデータ型がサポートされました。

  • OpenMP* オフロードでは、マップされたデータが現在割り当てられていない/関連付けられていない場合に開発者に警告するランタイムチェックが強化されました。

MPI の改善には、一方向通信による GPU リモート・メモリー・アクセス (RMA) の効率良い使用と、新しい MPI 4.0 Persistent Collective 機能のサポートが含まれます。開発者は、新しい MPI 4.0 の Large Counts 機能を使用してラージカウント操作を実装する際に、コードの変更が減り、生産性が向上します。

C/C++ ユーザーは、前述の SYCL* 2020 への準拠を含め、OpenMP* および SYCL* サポートに関する多くの機能強化を利用できます。

インテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) ライブラリーの暗号化サポートは、FIPS 140-3 セキュリティー要件を満たしました。

標準 サポート状況 詳細
SYCL* 2020 準拠 – Khronos のリスト (英語) を参照 SYCL* 2020 サポートの詳細
C++ C++20、C++17、C++14、C++11 に準拠し、多くの C++23 機能をサポート済み。LLVM サポート (LLVM ベースのコンパイラー・リリース) に合わせて古い C++ 標準もサポート C++23 およびその他の C++ 標準サポートの詳細
C LLVM サポート (LLVM ベースのコンパイラー・リリース) により、すべての C 標準をサポート C23 サポートの詳細 (英語)
Fortran 2018、2008、2003、95、90、77、および 66 標準に準拠し、Visual Fortran、DEC Fortran 90、および VAX FORTRAN 77 との高い互換性をサポート。

これには、Co-Array と DO CONCURRENT が含まれ、DO CONCURRENT は reduce 節と GPU オフロードをサポート
Fortran 標準サポートの詳細 (英語)
OpenMP* 1.x、2.x、3.x、4.x、5.0、5.1、5.2 をサポートし、TR12 (今後リリースされる 6.0) の多くの機能もサポート済み OpenMP* サポートの詳細
MPI MPI-1、MPI-2.2、MPI-3.1 仕様に準拠し、一部の MPI 4.0 サポートも実装済み MPI サポートの詳細 (英語)
FIPS 140-3 – 暗号化モジュールのセキュリティー要件 インテル® IPP Cryptography が FIPS 140-3 に準拠、機密データの管理に最適 FIPS 準拠の詳細 (英語)
UXL/oneAPI oneAPI の現在の仕様を完全にサポート インテルは UXL (英語) の創設メンバーであり、今後もインテル製品で技術的な貢献とサポートを継続して提供予定

最新のツールを使ってみましょう

インテル (英語) から直接、または主要リポジトリーから最新のツールをダウンロードできます。

各種ツールとライブラリーの詳細は、リリースノート (英語) を参照してください。

皆様の継続的なご利用とサポートに感謝します。ぜひ、インテル製品に関するフィードバックをお寄せください。


製品および性能に関する情報

1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。

タイトルとURLをコピーしました