この記事は、インテルのサイトで公開されている「Intel® Compiler First to Achieve SYCL* 2020 Conformance」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
この記事の PDF 版はこちらからご利用になれます。
信頼性の高い効率性とオープンなマルチプラットフォーム C++ への取り組み
インテル® oneAPI DPC++/C++ コンパイラーが適合性テストを完了し、Khronos Group の完全な SYCL* 2020 仕様を正式にサポートする最初のコンパイラーになったことを嬉しく思います。この完全なリファレンス実装の提供は、インテルだけでなく、アクセラレーテッド・コンピューティング・ソフトウェア業界全体にとっても大きなマイルストーンです。
SYCL* は、C++ プログラミングに対するマルチプラットフォーム、マルチベンダーのアプローチを採用するオープン・スタンダードです。そのため、開発エコシステムの成長を続ける部門から支持を得ています。インテルは、SYCL* が提供するオープン・ソフトウェア・フレームワークに貢献し、oneAPI 仕様や、それを受けて設立された Unified Acceleration Foundation (UXL) などのイニシアチブをサポートできることを嬉しく思います。
開発者にとって、SYCL* 2020 準拠のコンパイラーは、コンパイルされた SYCL* コードが移植可能であり、長期的にさまざまな GPU 上で確実に動作するという確信につながります。SYCL* 2020 で開発されたアプリケーションは、プラットフォーム・アーキテクチャーの変化や、多様な新しいアクセラレーターの将来の世代に適応できます。この投資は、新しいアーキテクチャーが登場しても、長年にわたって開発と保守のコストを削減し、付加価値を与え続けるでしょう。
「SYCL* 2020は、今日の生産性の高いヘテロジニアス・コンピューティングを可能にし、複雑なソフトウェアとハードウェアの現実に対応するハイパフォーマンス並列ソフトウェアを記述するために必要な機能を提供します。SYCL* 2020 の Khronos Adopter になったことで、オープン・スタンダードを支持するインテルの取り組みが再び示されました。インテルは、SYCL* 2020 に準拠した最新のインテル® oneAPI DPC++/C++ コンパイラーで、ソフトウェア開発者が必要とするコードの移植性を保証します。さらに、インテルのオープン・スタンダードのサポートは、CPU、GPU、FPGA 上でのツール、ライブラリー、SYCL* 2020 サポートの活気に満ちたエコシステムの構築に役立っています。」
Khronos Group の SYCL* ワーキンググループ (作業部会) 議長兼
ブリストル大学先端コンピューター・システム講師
Tom Deakin 博士
この 10 年間、インテルのコンパイラー開発チームは、オープン・スタンダードへの取り組みを強化し、すべてのプロジェクトが前進できるよう、オープンソース開発者コミュニティーに技術的貢献を提供してきました。その目的は、ソフトウェア開発者がアプリケーションを一度設計したら、余分な労力をほとんどかけずに再コンパイルするだけで、さまざまなマルチプラットフォーム環境でパフォーマンスを維持できるようにし、より迅速な業界の革新を可能にすることです。
多種多様なアーキテクチャーとアクセラレーターに対応したソフトウェアの移植性と信頼性を実現するため、業界全体にわたる効率良くパフォーマンスに優れたソリューションが必要であることは、10 年以上前から明らかでした。SYCL* はそのニーズに応えるものです。SYCL* は、広く受け入れられているマルチプラットフォーム抽象化レイヤーであり、次のような共通のマルチベンダー C++ フレームワーク・メカニズムを提供します。
- 利用可能なコンピューティング・デバイスの管理と検索
- あらゆるプラットフォーム上の異なるコンピューティング・エンジン/コンピューティング・デバイス間のデータ交換
- 異なるアクセラレーター・コンピューティング・エンジンへのワークアイテムの割り当てと同時実行
その結果、多くのアプリケーションや AI ソリューションの全体的な実行速度が向上します。
図 1: オープンなスタンダードベースのマルチプラットフォーム開発ソフトウェア・スタックにおける SYCL* の役割
SYCL* は、oneAPI 仕様の基盤を形成しています。oneAPI の豊富なライブラリー群、オープンなバックエンド API、そして Linux Foundation と UXL は、オープンなスタンダードベースのアクセラレーション・コンピュート・ソフトウェア・エコシステムを推進しています。
SYCL* 2020 は最新の C++ にマルチプラットフォーム・プログラミングをもたらす
インテルは、SYCL* 2020 仕様の策定に積極的に貢献し、2021年の公開直後からインテル® oneAPI DPC++/C++ コンパイラーおよび oneAPI 仕様への統合を段階的に開始しました。
SYCL* 2020 では、以前の仕様バージョンに比べて 40 以上の改善と新機能が導入されました。
インテル® oneAPI DPC++/C++ コンパイラーは、これらの改善と新機能を設計に組み込み、LLVM Compiler Infrastructure Project と協力しました。過去数回のリリースで、SYCL* 2020 の採用により、コンパイラーを使用する開発者にもたらされた改善点の一部は次のとおりです。
- 統合共有メモリー (USM): さまざまなデバイスをターゲットとするヘテロジニアス・コードが、バッファーやアクセサーなしで標準の C++ ポインターで動作できます。
- 並列リダクション: 組込みリダクション操作の追加により、ハードウェアのパフォーマンスを最大限に引き出します。
- ワークグループとサブグループのアルゴリズム: 複数のワークアイテム間の効率良い操作が可能です。
- クラス・テンプレート引数推論 (CTAD) と推論ガイド: クラス・テンプレートのインスタンス化が簡素化されます。
- アクセサーの簡素化: 組込みリダクション操作の追加により、C++ パターンが簡素化されます。
- さまざまなバックエンドとの相互運用性の拡張: 独自のクローズドソース・ランタイムと連携したり、ハードウェア固有のラッパーを提供するインターフェイスなど、レベルゼロと OpenCL* 以外のバックエンドをサポートできます。
- ISO C++ アトミックに準拠したアトミック操作の改善により、より自由な並列プログラミングが可能になります。
詳細: SYCL* 2020 で追加された 5 つの優れた機能
SYCL* 2020 準拠のコンパイラー実装がもたらすメリット
Khronos Group によって SYCL* 2020 準拠と認定されたインテル® oneAPI DPC++/C++ コンパイラーは、SYCL* の進化と業界全体での採用を促進します。完全なリファレンス・コンパイラー実装により、アプリケーションの SYCL* コードの正当性を簡単に確認することができます。開発者は、コードベースがインテル® oneAPI DPC++/C++ コンパイラーで正常にコンパイルされれば、将来、別のハードウェア向けの SYCL* 準拠コンパイラーで同じソースコードを処理することができ、互換性の懸念は、コードの正当性ではなく、ハードウェア固有の最適化のみになるため、余裕を持ってソフトウェアを設計し、テストすることができます。
このように、C++ と SYCL* によるマルチプラットフォーム・コンピューティングに根ざしたソフトウェア・プロジェクトは、将来性があり AMD や NVIDIA などのクローズド・プロプライエタリー・ソリューション・プロバイダーも含め、新世代のアクセラレーターや GPU に適応する将来のハードウェア・プラットフォームのニーズに合わせて保守、進化させることができます。
これは、オープンなフレームワークとソフトウェア業界全体のコラボレーション、SYCL*、oneAPI 仕様、そして UXL への統合など、インテルの素晴らしい取り組みによるものです。
図 2: UXL が推進する SYCL* 上に構築された oneAPI ソフトウェア・スタック
SYCL* 2020 に準拠して構築されたコンパイラー、および UXL Foundation のメンバーによって開発されている API とソリューションの豊富なエコシステムにより、ソフトウェア開発者、データ・サイエンティスト、研究者は、ワークロードがエッジまたはスーパーコンピューターに存在するかを問わず、将来に向けてワークロードを拡張および調整できます。
「GROMACS のモットーは「高速、柔軟、無料」であり、SYCL* 標準の価値観と一致しています。2020年から GROMACS は、パフォーマンスと移植性のバックエンドとして SYCL* の利用を開始し、SYCL* 2020 の一部の機能を正式な標準化前から活用しています。
以前の SYCL* 1.2.1 と比較して、SYCL* 2020 標準には、アプリケーションのパフォーマンスと開発者の生産性の両方の向上に役立ついくつかの新機能が導入されています。インテル® oneAPI DPC++/C++ コンパイラーが SYCL* 2020 に完全に準拠した最初のツールチェーンとして認定されたことは、ハイパフォーマンス・コンピューティングのヘテロジニアス並列化におけるオープン・スタンダードの普及にとって、重要なマイルストーンです。」
SciLifeLab & スウェーデン王立工科大学
研究者
Andrey Alekseenko 氏
インテル® コンパイラーが LLVM ベースのパフォーマンスで前進
最新のインテル® oneAPI DPC++/C++ コンパイラーは、豊富な機能セットやオープンソース標準化団体との緊密な連携だけでなく、インテルの CPU と GPU 上での最適化とパフォーマンス向上を継続的に推進しています。
以下の図 3 は、異なるコンパイラーを使用してインテル® Core™ i9-12900K プロセッサーで実行された CoreMark-PRO ベンチマークの結果を比較したものです。
図 3: インテル® Core™ i9-12900K プロセッサー上でのインテル® コンパイラーの CoreMark-PRO ベンチマーク結果
継続的なパフォーマンスの向上だけでなく、コンパイラー開発チームは、バージョン 2024.1 のインテル® oneAPI DPC++/C++ コンパイラーに次のような新機能を追加しています。
- SYCL* の Graph 拡張機能により、開発者はアプリケーションでハードウェア・リソースを効率良く管理し、マルチスレッドのワーク生成とスレッドセーフな関数をシームレスに使用できます。複数の SYCL* バックエンドで利用できるようになり、多様なソフトウェアおよびハードウェア・スタックに適応できるようになりました。
- LLVM サニタイザー・サポートが拡張されました。
- OpenMP* 5.x 標準への準拠が強化されました。
インテル® oneAPI DPC++/C++ コンパイラーは、信頼性が高く、オープンで、標準ベースの、移植性に優れた高性能コンパイラー技術により C/C++ アプリケーションの構築を支援します。
マルチプラットフォームの並列コードに SYCL* 2020 準拠のパフォーマンスの移植性を追加し、独自の CUDA* 実装から簡単に移行できます。
- インテル® DPC++ 互換性ツールまたはオープンソース版の Sylcomatic を利用できます。
- 移行したコードをインテル® oneAPI DPC++/C++ コンパイラーでコンパイルして、SYCL* 2020 への準拠を確保します。
オープンなマルチプラットフォーム・コンピューティングへの旅を一緒に進めましょう!
コンパイラーのダウンロード
インテル® oneAPI DPC++/C++ コンパイラーは、インテル® ソフトウェア開発ツールのページからダウンロードできます。
また、基本ツール、ライブラリー、解析、デバッグ、コード移行ツールの高度なセットとともに、インテル® oneAPI ベース・ツールキットにも含まれています。
LLVM コンパイラー・プロジェクトへの貢献は、GitHub* (英語) を参照してください。
関連情報
- インテル® ソフトウェア開発ツール 2024.1 機能アップデートの概要
- 1 時間で C++ with SYCL* を学ぶ [1:01:37] (英語)
- Reinders, James ほか著、『Data Parallel C++: Programming Accelerated Systems Using C++ and SYCL, 2nd Edition』 (英語)
- インテル® oneAPI DPC++/C++ コンパイラーでサニタイザーを使用してバグを素早く検出
- CUDA* と oneAPI 間の変換を可能にする SYCL* の相互運用性を深掘り
- CUDA* から C++ with SYCL* への移行
- インテルの LLVM ベースのプロジェクト (英語)
著者紹介
Steve Hikida は非常に好奇心を大切にし、生涯学習に情熱を注ぐ、熟練したテクノロジーの専門家であり、企業幹部でもあります。インテル コーポレーションの副社長兼コンパイラー・エンジニアリング部長として、CPU と GPU のコンパイル・テクノロジーを担当するワールドワイドのエンジニアリング組織を率いています。前職は、IBM で戦略、製品管理、研究開発、ソフトウェア設計を担当し、エンタープライズ製品とコンパイラーを率いていました。
法務上の注意書き
性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。結果は異なることがあります。
性能の測定結果はシステム構成の日付時点のテストに基づいています。また、現在公開中のすべてのセキュリティー・アップデートが適用されているとは限りません。
インテルの最適化機能は、インテルのコンパイラーまたはその他のインテル製品を対象としたものであり、他社製品に同等の最適化を行えないことがあります。
絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。実際の費用と結果は異なる場合があります。
インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。
インテルは、サードパーティーのデータについて管理や監査を行っていません。ほかの情報も参考にして、正確かどうかを評価してください。
© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。SYCL* は Khronos Group の登録商標です。
Khronos および Khronos Group ロゴは、Khronos Group の登録商標です。
製品および性能に関する情報
1 性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。