インテル® oneAPI DPC++/C++ コンパイラー 2025 リリースノートおよび動作環境

バージョン: 2025.0
最終更新日: 2024年11月1日

本資料は、インテルのウェブサイトで公開されている「Intel® oneAPI DPC++/C++ Compiler Release Notes」および「Intel® oneAPI DPC++/C++ Compiler System Requirements」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。


このドキュメントでは、新機能、変更された機能、注意事項、および製品ドキュメントに記述されていない既知の問題について説明します。

2025.0 の新機能

ハードウェア・サポート

  • Emerald Rapids (EMR)Granite Rapids (GNR)Battlemage (BMG)Lunar Lake (LNL) などの新しいインテルのハードウェア向けに最適化され、キャッシュヒントや AI アプリケーション向けの新しいデータ型などの機能により、効率と計算能力が向上します。

バインドレス・テクスチャー・サポート

  • インテル® Arc™ GPU 向けバインドレス・テクスチャーを実装し、コンパイル時に情報がなくても実行時に動的なテクスチャーを使用できるようにして、パフォーマンスとスケーラビリティーを強化します。

SYCL* コンパイラー

  • SYCL* オフロードモデル: --offload-new-driver を使用した新しい SYCL* オフロード・ドライバー・メカニズムを導入し、I/O と外部プロセスを削減することでインフラストラクチャーを改善し、リンク時間を短縮します。

  • 範囲の丸め制御: バイナリーサイズを削減するため完全な丸めを強制するなど、範囲の丸めを管理する -fsycl-range-rounding オプションを追加しました。さらに、実験的な -fsycl-exp-range-rounding オプションは、すべての次元にわたって丸めを実行します。

  • double 型のエミュレーション: インテル® GPU で double データ型の部分的なエミュレーションを行う -fsycl-fp64-conv-emu オプションを追加しました。

  • 動的リンク: 動的リンクの初期サポートを導入しました。kernel_bundle APIAOT mode などの一部の機能はまだサポートしていません。

SYCL* ライブラリー

  • 拡張: sycl_ext_oneapi_prodsycl_ext_oneapi_profiling_tagsycl_ext_oneapi_forward_progresssycl_ext_oneapi_private_alloca, syclext_codeplay_enqueue_native_commandsycl_ext_oneapi_enqueue_functions など、複数の拡張を実装しました。

  • グループロード/ストア: sycl_ext_oneapi_group_load_store をサポートし、該当する場合はネイティブ・ハードウェア・ブロックの読み取り/書き込み機能を有効にします。

  • フリー関数カーネル: 引数型と診断に関する既知の制限を伴う、sycl_ext_oneapi_free_function_kernels 拡張の初期サポートを導入しました。

  • Fused Multiply-Add (FMA): 確実に FMA 演算が実行される実験的な ESIMD 関数 fma を追加しました。

  • sycl_ext_oneapi_group_sort 拡張の改善: 仕様のリビジョン 2 に合わせて sycl_ext_oneapi_group_sort 拡張の実装を更新しました。以前のバージョン 1 は使用できなくなり、コードの変更が必要になる場合があります。

OpenMP*

  • -fopenmp-offload-mandatory コンパイラー・オプションのサポートにより、ホスト・フォールバック・コードの作成が省略され、デバイスへの OpenMP* オフロードが失敗した場合にランタイムエラーが生成されます。

  • OpenMP* 構造の最適化レポートのサポートが改善されました。

  • ループ・トリップ・カウントを考慮するため、入れ子のループ構造の変換スキームが強化されました。

  • match 節で device={arch(gen)} が指定されている場合に、インテル® Xe2 アーキテクチャーの GPU が含まれるようにディスパッチ構造の declare バリアントが更新されました。

  • target 構造の device_type(host|nohost|any) 節がサポートされました。

  • teams 構造に if 節が追加されました。

  • map-type プロパティーが「default」に変更され、map-type なしで map-type 修飾子を指定できるようになりました。例えば、map(always : x)map(always, tofrom : x) と同じです。

  • target 構造のインテル拡張である ompx_sub_group_size 節のサポートにより、カーネルの SIMD 幅を設定できます。

  • target 構造のインテル拡張である ompx_dyn_cgroup_mem 節のサポートにより、GPU オフロード向けに SLM で動的割り当てが可能になります。

  • 環境変数 OMP_THREAD_LIMITOMP_TEAMS_THREAD_LIMIT、および OMP_NUM_THREADS が拡張され、抽象名がサポートされます。例: OMP_THREAD_LIMIT=n_cores

  • 環境変数 OMP_PLACES の構文が拡張され、抽象名の境界とストライドがサポートされます。例: OMP_PLACES=threads(4:2)

  • 環境変数 OMP_AVAILABLE_DEVICES のホストランタイムがサポートされます。

  • 環境変数 OMP_DEFAULT_DEVICE が拡張され、特性によるデバイス選択がサポートされます。

機能強化

  • AI および HPC の最適化: AI フレームワークHPC アプリケーション向けにパフォーマンスをチューニングしました。

  • OpenMP* の機能強化: TARGET 構造の DEVICE_TYPE 節や mandatory オフロードのサポートなど、OpenMP* 6.0 機能の早期サポートを導入しました。また、OpenMP* ループ・ローテーションの問題も修正しました。詳細は、「インテル® コンパイラーによる高度な OpenMP* デバイスオフロード」 (英語) を参照してください。

  • コンパイラー・レポート: 強化された opt-report によりユーザー・エクスペリエンスを向上します。OpenMP* オフロードに関する詳細情報と、オープンソースの最適化コメント・フレームワークとの統合を提供します。最新の機能強化の詳細は、「コンパイラーの最適化レポートを使用して高度に最適化されたアプリケーションを迅速に開発」 (英語) を参照してください。

  • デバイスコードのサニタイザー: デバイスコードで LLVM サニタイザーがサポートされ、開発中に問題を検出して解決できるようになりました。コンパイラー・インストルメンテーション・モジュールとランタイムサポートが含まれており、USM、SYCL* バッファー、ローカルメモリー、デバイスグローバルでの境界外メモリーアクセス、不正な解放、使用後解放、不正なコンテキストなどの問題を検出できます。このリリースでは、Linux* で Ponte Vecchio (PVC) GPU と CPU がサポートされます。サニタイザーの使用方法は、「インテル® oneAPI DPC++/C++ コンパイラーでサニタイザーを使用してバグを素早く検出」を参照してください。

  • 総合的なパフォーマンス・データ: アップグレードされた最適化レポートは、SYCL*OpenMP*、および AOT コンパイルをカバーし、開発者にアプリケーション・パフォーマンスに関する詳細な情報を提供します。

  • ハードウェア・プロファイルに基づく最適化 (HWPGO): 主な改善点には、精度を向上させるプロファイル伝播の強化、パフォーマンスをさらに向上させる追加のプロファイルに基づく最適化、DWARF の代わりに Windows* で「疑似プローブ」を使用したプロファイルの早期サポートなどがあります。さらに、HWPGO では選択的な関数アウトラインが導入され、プロファイル・データに基づいて特定の関数を最適化できるようになり、実行時の効率がさらに向上します。

改善点

SYCL* コンパイラー

  • コンパイルフローの改善: サードパーティーのホスト・コンパイラーが使用されていない場合に統合フッターを生成するプロセスが最適化されたことで、一時ファイルの数が少なくなり、コンパイル時間が短縮します。

  • 追加の数学関数のサポート: C-CXX-StandardLibrary 拡張の一部として、SYCL* カーネルの truncfsinpifrsqrtfexp10fceilfcopysignfcospiffmaxffminf などの数学関数を新たにサポートしました。インテルの数学関数 (IMF) の統合を拡張し、インテルのデバイスのデバイスコードで ::rand::srand を利用できるようにしました。

  • エラーメッセージの強化: カーネルでの暗黙的な this キャプチャーや、複数のターゲットが -fsycl-targets オプションに渡されるとアーキテクチャー情報が欠落するシナリオのエラーメッセージを改善しました。

  • コンパイルフローの最適化: -MD オプションで依存関係を生成するのに必要なコマンドの数が削減され、ビルドプロセスが合理化されました。

  • セキュリティーとデバッグ: ライブラリーとツールのセキュリティー関連のコンパイラー・オプションを強化し、Linux* 環境と Windows* 環境の両方でデバッグ・エクスペリエンスを改善します。

SYCL* ライブラリー

  • ESIMD 関数のサポート: ESIMD の double データ型の sqrt 関数と rsqrt 関数をサポートしました。

  • キューブマップとサンプル画像配列のサポート: キューブマップ画像とサンプル画像配列をサポートするため sycl_ext_oneapi_bindless_images 拡張を更新しました。

  • ESIMD の名前付きバリア割り当て: 名前付きバリアを動的に割り当てる ESIMD API を導入しました。

  • 実行可能コマンドグラフの更新: executable_command_graph::update によるグラフ全体の更新をサポートしました。

  • 非推奨の警告: 非推奨の <CL/sycl.hpp> ヘッダーの使用に関する警告を追加しました。

  • アクセサーの改善: local_accessor::get_pointerlocal_accessor::get_multi_ptr は、ホストで呼び出された場合、無効な例外をスローするようになりました。

  • キュー操作の検出: 入れ子のキュー操作の検出を拡張し、ショートカット・メソッドをサポートしました。

  • ESIMD API インターフェイスの簡素化: さまざまな ESIMD API (atomic_updateblock_loadblock_store など) のオーバーロードを追加し、一部のテンプレート引数を省略できるようにしました。

  • bfloat16 数学関数: bfloat16 のベクトルを数学関数に渡せるようにするため、sycl_ext_oneapi_bfloat16_math_functions を更新しました。

  • sycl::vec::as の最適化: sycl::detail::memcpy の実装を最適化することで sycl::vec::as のパフォーマンスを改善しました。

  • SYCL* 2020 例外の更新: 従来の SYCL* 1.2.1 例外ではなく、SYCL* 2020 例外をスローするように実装全体を更新しました。

  • sycl::vec::convert サポート: vec<bfloat16, N> との間の sycl::vec::convert をサポートしました。

  • 非推奨: 非デバイスアクセサーの marray<bool, n>::operator++/--accessor::get_multi_ptr は非推奨となりました。

  • ESIMD 名前付きバリア: ESIMD 名前付きバリア API が実験的な名前空間から移動されました。

  • SYCL* 拡張と API の機能強化:

    • sycl_ext_oneapi_free_function_queries の最新リビジョンを実装しました。

    • sycl-ls --verbose を拡張し、UUID やアーキテクチャーなどの詳細なデバイス情報を出力できるようにしました。

    • copy_tocopy_from ESIMD API でコンパイル時のプロパティーをサポートしました。

  • 非可変長 printf インターフェイス:: 浮動小数点値を出力する際の使いやすさを向上するため、experimental::printf を非可変長インターフェイスに切り替えました。

  • ESIMD API 検証の強化: テンプレート引数の静的アサーションを使用し、rdregion および wrregion API の検証を改善しました。

  • SYCL* 2020 仕様との整合: SYCL* 2020 仕様に合わせて vec の変異スウィズル演算子とスカラー変換を更新しました。

  • ESIMD のその他の改善点:

    • ESIMD プリフェッチ API で 1 バイトおよび 2 バイトのデータ型をサポートしました。

    • 第 6 世代インテル® Xeon® スケーラブル・プロセッサー (開発コード名 Granite Rapids) を搭載したデバイスで ext_intel_matrix をサポートしました。

    • コンパイル時のプロパティーを持つ load_2dstore_2dprefetch_2d ESIMD API の新しいオーバーロードを導入しました。

    • 不均一グループ向けのグループ・シフト・アルゴリズム (shift_group_leftpermute_group_by_xor など) をサポートしました。

    • ESIMD block_store API の制限解除と slm_atomic_update API の拡張により、fsubfadd をサポートしました。

  • グラフとセマフォーのサポート:

    • バインドレス・イメージ拡張で値によるグラフ更新機能と外部セマフォー待機/シグナル操作をサポートしました。

    • image_device_handle のデバイス間コピーを導入しました。

  • 統合ランタイム: プラグイン・インターフェイスを削除し、統合ランタイムに置き換えたことで、再配布可能なライブラリーの数とサイズが削減されます。

  • パフォーマンスの改善: SYCL* JIT コンパイラーをスタンドアロン・ライブラリーにアウトライン化し、初回使用時に動的にロードすることで、libsycl.so の起動オーバーヘッドを削減しました。

2025.0 での API/ABI に関する重大な変更

このリリースでは ABI に関して重大な変更があります。古いバージョンのツールチェーンでビルドされたアプリケーションを新しいバージョンの SYCL* ランタイム・ライブラリーで実行するには、再コンパイルする必要があります。

  • SYCL* ランタイム・ライブラリーのメジャーバージョンが 8 に上がりました。

  • SYCL* ランタイム・ライブラリーからエクスポートされたシンボルのリストをクリーンアップし、一部のレガシーシンボルを削除し、エクスポートすべきでないシンボルを非表示にしました。

  • ライブラリー・インターフェイスで std::string やその他のオブジェクトを使用しないように、いくつかの関数とメソッドの ABI を更新し、C++11 より前の ABI でビルドされたアプリケーションで SYCL* RT を使用できるようにしました。

  • 実験的な sycl_ext_oneapi_bindless_images 拡張の ext_oneapi_copy API を変更し、Src パラメーターで const 修飾型を使用できるようにしました。

すでに非推奨となっている API のサポート廃止や、一部のクラスの実装をプレビュー実装へ切り替えるなど、API に関していくつかの重大な変更が行われました。

  • 浮動小数点引数を受け付ける sycl::abs オーバーロードを削除しました。

  • sycl::host_ptrsycl::device_ptr を削除しました。

  • queue::discard_or_return を削除しました。

  • sycl::make_unique_ptr を削除しました。

  • 以前に削除されたホストデバイスに関連する use_primary_context プロパティーとメソッドを削除しました。

  • runtime_errornd_range_errorinvalid_parameter_errordevice_errorfeature_not_supported などの SYCL* 1.2.1 例外サブクラスを削除しました。

  • pi_mem_advice を受け付ける queue::mem_advice オーバーロードを削除しました。

  • いくつかの非推奨の ESIMD API を削除しました。

  • 非標準の sycl::id -> sycl::range 変換演算子を削除しました。

  • sycl_ext_oneapi_bindless_images 拡張の実装から非推奨の API を削除しました。

  • sycl_ext_oneapi_bindless_images 拡張の実験的な destroy_external_semaphore API の名前を release_external_semaphore に変更しました。

  • 実験的な sycl_ext_oneapi_bindless_images 拡張で image_descriptor 構造体の image_channel_order フィールドをチャネル数に置き換えました。

  • parallel_for(range)parallel_for(nd_range) に渡されるラムダ/関数の第 1 引数の制限を強化しました。

  • いくつかの厳密なエイリアシング・ルール違反を修正するため、異なるストレージタイプを使用するプレビューバージョンに sycl::vec 実装を切り替えました。

  • vec<std::byte, N> で使用できる数学演算を、std::byte に適用可能なものに制限しました。

  • sycl::exception 実装をプレビューバージョンに切り替えました。

  • 数学組込み実装をプレビューバージョンに切り替えました。

  • bfloat16 実装をプレビューバージョンに切り替えました。

  • sycl::nd_item 実装をプレビューバージョンに切り替えました。

  • バッファーの要素タイプはデバイスコピー可能でなければならないという制限を強化しました。

  • SYCL* ヘッダーを再構築し、<cmath><complex> を除外しました。

  • SYCL_DEVICE_FILTER 環境変数のサポートを廃止しました。

  • accessor::get_pointer インターフェイスを更新して、global_ptr<value_type> を返すようにしました。global_ptr<value_type> は、アクセサーのデータ型が const 修飾されている場合、またはアクセサーが読み取り専用の場合、const 修飾できます。

  • sycl_ext_oneapi_free_function_queries に関連する非推奨の API を削除しました。

  • slm_allocator ESIMD API を実験的な名前空間に移動しました。

  • 非推奨の usm_system_allocator アスペクトを削除しました。

  • 実験的な sycl_ext_oneapi_root_group 機能から get_child_group API を削除しました。

  • 多くの ESIMD API の simd_view に関連するテンプレート引数を簡素化しました。

  • ESIMD atomic_op::predec を削除しました。

  • 実験的な sycl_ext_oneapi_group_sort 拡張のリビジョン 1 のインターフェイスを廃止しました。

  • 実験的な sycl_ext_oneapi_graph 拡張で command_graph::begin_recordingcommand_graph::end_recording の戻り型を void から bool に変更しました。

コンパイラー・オプションに関しても重大な変更が行われました。

  • 非推奨の -fsycl-link-huge-device-code-fsycl-[add|link]-targets-foffload-static-lib-foffload-whole-static-lib-fsycl-disable-range-rounding-sycl-std コンパイラー・オプションが削除されました。

その他の変更点

SYCL* コンパイラー

  • コンパイルステップでは -fsycl オプションを使用せず、リンクステップでは -fsycl オプションを使用するコンパイルシナリオをサポートするため、Windows* で以前に導入された変更を元に戻しました。コンパイラーはリンクステップでリンクする標準ライブラリーのバージョンを認識しないため、このシナリオはサポートされなくなりました。

問題の修正

SYCL* コンパイラー

  • -fsycl-link-targets オプションを使用すると、意図せずに追加のデバイス・コード・リンク・ステップがトリガーされる問題を修正しました。

  • インテル® GPU の AOT コンパイルで、ターゲットデバイスが Ponte Vecchio (PVC) でない場合でも PVC 固有のコンパイラー・オプションが渡される問題を解決しました。

  • --save-temps の使用時に AOT コンパイルで誤ったファイル拡張子が出力される問題を修正しました。

  • -fsycl-link を使用して別々にコンパイルおよびリンクを実行すると、リンクステップで「number of output files and targets should match in unbundling mode (アンバンドル・モードでは、出力ファイルとターゲットの数が一致する必要があります)」というエラーが発生する問題を修正しました。

  • 汎用アドレス空間内のポインターを特定の組み込み数学関数に渡すとコンパイルが失敗する問題を解決しました。

  • -fsycl-device-code-split=none を使用して異なる reqd_work_group_size 属性を持つカーネルをコンパイルすると、work-group サイズの不一致に関するランタイム例外が発生する問題を修正しました。

  • reqd_work_group_size 属性を 3 つ未満の引数で使用するとクラッシュする問題を解決しました。

  • half データ型で shift_group_[right|left]permute_by_xor、および select_from_group アルゴリズムを使用すると無効な値を返す問題を修正しました。

SYCL* ライブラリー

  • sycl::ext::oneapi::experimental::info::device を照会すると、空のベクトルが返される代わりに例外が発生する状況を修正しました。

  • -ffast-math オプションでの esimd::atan 実装を修正しました。

  • キューの作成時にコンポーネント・デバイスが複合デバイスの子孫として正しく識別されない問題を修正しました。

  • 複合デバイスの照会で重複したエントリーが返される問題に対処しました。

  • コンパイルエラーを引き起こす config_2d_mem_access ESIMD クラスのコピー・コンストラクターの問題を修正しました。

  • atomic64 アスペクトを使用する atomic_ref<T*> が正しく検出されず、エラーが発生する問題を解決しました。

  • ctanhcexp がエッジケースで誤った値を返す問題を修正しました。

  • build_options を介して -Xs オプションに渡された値がデバイス・コンパイラーに渡されない問題を修正しました。

  • -fno-sycl-unnamed-lambda の使用時にカーネルを名前付き関数として定義すると、コンパイルエラーが発生する問題を修正しました。

  • windows.h のマクロとの競合によって発生する -fpreview-breaking-changes オプションのコンパイル問題を修正しました。

  • sycl::vec<sycl::half, N>::operator[] の実装でエラーを引き起こす厳密なエイリアシング違反を解決しました。

  • ホストタスクと一緒にコマンドキューに投入されたバリアが無視される問題を修正し、ホストタスクとバリアの同期を改善しました。

  • コンパイラーがビット反転でサポートされていない SPIR-V* 命令を出力する問題を修正しました。

  • デフォルトで構築された local_accessor 引数が、特に Windows* と -O0 最適化を指定した Linux* でランタイムエラーになる問題に対処しました。

  • ONEAPI_DEVICE_SELECTOR に無効な値が渡されるとハングする問題を解決しました。

  • 特定の設定で必要なディレクトリーが作成されないという永続キャッシュ機能の問題を修正しました。

  • カーネルバンドルからカーネルを名前で照会するとプログラムがクラッシュする問題を修正しました。

  • 非ブロッキング・パイプ操作が誤って例外をスローするエラー処理の問題を修正しました。

  • marrayvec で不均一グループ組込み関数を使用する際のコンパイルの問題を解決しました。

  • device_global 変数の型として使用される struct に適用されたメモリー属性が無視される問題を解決しました。

  • 不足していた value_typevector_t メンバー型エイリアスをスウィズルに追加しました。

  • カスタム・シャットダウン・プロセスを持つアプリケーションやライブラリーで SYCL* RT が使用されたときのシャットダウン・シーケンスの問題を修正しました。

  • 不正な形式の ONEAPI_DEVICE_SELECTOR を持つ環境で、デフォルトで構築されたイベントで event::get_backend() を呼び出すとクラッシュする問題を修正しました。

  • --ignore-device-selectors を指定した sycl-ls が環境変数を適切に無視しない問題を修正しました。

  • ネイティブ CPU バックエンドによって返されるメモリー順序を修正しました。

  • sycl::ext::oneapi::experimental::properties の可変引数コンストラクターを拡張仕様に一致するように修正しました。

  • load_2dstore_2dprefetch_2d などの ESIMD 関数を使用するとビルドプログラムに失敗する問題を修正しました。

  • インテルの統合 GPU の空きデバイスメモリーを照会すると、サポートされていない機能に対して例外がスローされる代わりに、0 が返される問題を解決しました。

  • sycl_ext_oneapi_kernel_compiler_opencl 拡張の実装におけるヒープ・バッファー・オーバーフローに対処しました。

  • sycl_ext_oneapi_graph 拡張がアクセサーのアクセスモードを無視し、不要なグラフエッジを作成する問題を修正しました。

  • バリアを含むグラフの送信によってランタイムエラーやリソースリークが発生する問題を修正しました。

  • 依存関係のないカーネルがインオーダー・キューに送信されるとパフォーマンスが低下する問題に対処しました。

  • Level Zero バックエンドのプロファイルでインオーダー・キューのタイムスタンプがゼロになったり、正しくない問題を修正しました。

  • 即時コマンド・リスト・プロパティー (immediate_command_list および no_immediate_command_list) を持つ複数のキューを使用するとクラッシュする問題を解決しました。

  • info::kernel_device_specific::work_group_sizeLevel Zero バックエンドのカーネルを無視してデバイス固有の制限を返す問題を修正しました。

OpenMP*

  • dispatch 構造の device 節が OpenMP* の default-device-var ICV を更新しない問題を修正しました。

  • dispatch 構造の declare バリアントが adjust_args 節を指定しない場合の内部コンパイラー・エラーを解決しました。

  • トリップカウントが大きい OpenMP* for ループと simd ループの最適化の問題を修正しました。

  • team 構造内に task 構造を記述するとコンパイラー・エラー・メッセージがトリガーされる回帰問題を修正しました。

  • target と team の両方に thread_limit が指定されている場合、コンパイラーは target に指定されたものを常に使用するのではなく、それらの最小値を正しく選択するようになりました。

  • GPU の SLM に割り当てられたグローバル変数の初期化に関連する内部コンパイラー・エラーを修正しました。

  • declare mapper を使用してマップされた変数の参照カウントが正しく減分されないオフロードランタイムの問題を解決しました。

  • リダクション変数の一時コピーによって L1 キャッシュが影響を受けることに関連する GPU オフロード・パフォーマンスの問題を修正しました。

  • ユーザー定義のリダクション変数が適切に構築または破棄されない問題を解決しました。

既知の問題

SYCL*

  • Windows* では、Unified Runtime の Level Zero リークチェックは、デフォルトのコンテキストでは正しく機能しません。これは、プラグイン DLL の解放が、デフォルトのコンテキストなどの静的グローバル変数の解放と競合するためです。

  • インテル® グラフィックス・コンパイラーの Vector Compute バックエンドは、特定の最適化レベルをサポートしておらず、頻繁に誤った結果を生成したり、クラッシュします。この問題は、ESIMD コードに直接影響します。一時的な回避策として、影響を受けるモードであっても ESIMD コードを最適化してください。

  • sycl_ext_oneapi_matrix 拡張を使用する場合、特に half データ型を使用する行列演算では、プログラムを実行するデバイスに応じた適切な設定を使用することが重要です。

  • インオーダー・キューでキュー・ショートカット関数を使用する場合、異なるキューに送信されたコマンド間の依存関係が無視されることがあります。回避策は、.wait() を明示的に呼び出すことです。この問題は次のリリースで修正される予定です。以下の例では、最初のカーネルが実行を完了する前に、2 番目のカーネルが実行を開始します。

    // q1 実行時間の長いタスク
    sycl::event e = q1.single_task([=](){ /* ... */ });
    // q2 タスク
    q2.single_task(e, [=](){ /* ... */ });
  • C/C++ の数学組込み関数は、SYCL* カーネルから呼び出された場合、一部のエッジケース入力に対して誤った結果を返すことがあります。

  • Unified Runtime Level Zero Adapter を使用してインテル® GPU 上でパフォーマンスを向上させるため、バージョン 2025.0 ではドライバー最適化インオーダー・リストがサポートされました。sycl::property::queue::enable_profiling を使用してワークロードを実行する場合、これらのリストはパフォーマンス・オーバーヘッドを生じることが予想されますこのオーバーヘッドがパフォーマンスに悪影響を与える場合は、UR_L0_USE_DRIVER_INORDER_LISTS=0 を設定してドライバー・インオーダー・リストを無効にすることで軽減できます。

  • OpenCL* 3.0 を必要とする Windows* 上の DPC++ コンパイラーとの互換性を確保するには、システム上の古いバージョンの opencl.dll によって発生する可能性のある問題に対処する必要があります。古い opencl.dll がシステム・ディレクトリーに存在するか、ライブラリー・パスで優先される場合、特定の OpenCL* 3.0 機能の使用時に、SYCL* 関連の問題を含む障害が発生したり、インテル® VTune™ プロファイラーやインテル® Advisor などのツールがクラッシュする可能性があります。推奨される解決策は、古い opencl.dll を DPC++ パッケージにインストールされている opencl.dll に置き換えることです。これを行うには、$oneAPI_Install_Folder\compiler\latest\bin から新しい opencl.dll をシステムフォルダーにコピーします。ほかのアプリケーションで必要になる場合に備えて、コピーする前に元の opencl.dll を必ずバックアップしてください。

  • sycl_ext_oneapi_free_function_kernels には、次のような制限があります。

    • フリー関数カーネルは、ファイルスコープで定義されている場合にのみサポートされます。

    • フリー関数カーネルを定義するには、SYCL_EXTERNALSYCL_EXT_ONEAPI_FUNCTION_PROPERTY と一緒に使用する必要があります。

    • 拡張仕様の制限に違反した場合、コンパイラーは診断を出力しません。

    • フリー関数カーネルの引数は、構造体などの複合データ型や、accessor などの SYCL* クラスにすることはできません。

    • -fsycl-dead-args-optimization (デフォルトで有効) を使用すると、エラーが発生する可能性があります。

    • info::kernel::num_args は、フリー関数カーネルに対して正しい結果を返しません。

OpenMP*

  • parallel 領域の終わりにある暗黙的なバリアは、target nowait 構造と dispatch nowait 構造に関連付けられたタスクの同期ポイントとして機能しません。これにより、誤った結果が生成されたり、クラッシュする可能性があります。回避策としては、parallel 領域の終わりで #pragma omp taskwait を使用して、parallel 領域の暗黙的なバリアにより発生するはずの target/dispatch nowait 領域の同期を確実に実行することです。

その他の既知の問題と制限事項

  • Visual Studio* IDE との統合: 「インテル® C++ コンパイラー 2025」を使用して Win32 プラットフォーム向けに C++ プロジェクトをビルドすると、エラーが発生します。「インテル® C++ コンパイラー 2025」は Win32 プラットフォームをサポートしていないため、x64 プラットフォーム向けにプロジェクトをビルドする必要があることに注意してください。Win32 プラットフォームを選択すると、ICX コンパイラーが見つからないというエラーが発生します。

  • インテル® oneAPI ベース・ツールキット、インテル® HPC ツールキット、または oneAPI スタンドアロン・コンポーネント・ページからインテル® コンパイラーをインストールした場合、その環境向けの適切なパッチをインストールしてください。

    oneAPI 2023.2 の一部として公開されたインテル® C++ コンパイラー向けに 1 つ、インテル® Fortran コンパイラー向けに 1 つ、合計 2 つのパッチが利用できます。

    * インテル® oneAPI DPC++/C++ コンパイラーおよびインテル® コンパイラー・クラシック
    * インテル® Fortran コンパイラー・クラシックおよびインテル® Fortran コンパイラー

    パッチのバージョンは 2023.2.1 です。

    これらのパッチは Linux* および Windows* に適用されます。

    これらのパッチは、環境モジュール・ユーティリティーのモジュールファイルが見つからない問題やその他の問題を解決します。

    パッチは、インテル® レジストレーション・センター、APT や YUM などのディストリビューション・チャネル、およびスタンドアロン・コンポーネント・ページから入手できます。

  • インテル® oneAPI ツールキット 2022.1.3 以前およびインテル® Parallel Studio XE (すべてのバージョン) は Microsoft* Visual Studio* 2022 をサポートしていません。Microsoft* Visual Studio* 2022 がインストールされているシステムでインテル® oneAPI およびインテル® Parallel Studio XE のインストーラーを実行すると、インストール、アップグレード、変更、アンインストールに失敗します。詳細は、こちらの記事 (英語) を参照してください。

サポート

ハードウェア・サポート

  • -march=lunarlake
  • -march=graniterapids

-march の使用に関する詳細は、こちら (英語) を参照してください。


インテル® プラットフォームのツールチェーン・サポート

開発コード名 Granite Rapids

開発コード名 Granite Rapids-D

開発コード名 Lunar Lake

GCC13.1

GCC13.1

GCC14.1

Binutils 2.40

Binutils 2.41

Binutils 2.42

Glibc2.37

Glibc2.37

Glibc2.39

LLVM 16.0

LLVM 17.0

LLVM 18.0

ICX 2023.1

ICX 2023.2

ICX 2024.0


C/C++ 標準サポート

  • インテル® oneAPI DPC++/C++ コンパイラー 2025.0 は、Clang 19 (英語) フロントエンドを通じて C/C++ 標準をサポートします。

  • C++23 の次の C++ 標準である C++2c と、C23 の次の C 標準である C2y のサポートに取り組み始めました。

  • 「deducing this」の実装を完了しました (C++23)。

  • 一部の constexpr 制限を緩和しました (C++23)。

  • [[assume]] 属性を実装しました (C++23)。

  • Concepts のサポートを完了しました (C++20)。

  • char8_t をサポートしました (C23)。

  • オブジェクト宣言の constexpr キーワードを実装しました (C23)。

  • ソースにバイナリーリソースを埋め込む #embed を実装しました (C23)。

終了予定のサポート

  • 2022.2 リリースから、第 6 世代から第 10 世代インテル® Core™ プロセッサー、および同世代の Intel Atom® プロセッサー、インテル® Pentium® プロセッサー、インテル® Celeron® プロセッサーに内蔵されているグラフィックス・プロセッサー向け Windows* ドライバーのサポートはメンテナンス・モードに移行しました。セキュリティー問題および重大な問題の修正のみ行われます。前述のプロセッサーの既存の統合グラフィックス・プロセッサー機能を使用する oneAPI のツールは引き続き動作する可能性はありますが、サポートされなくなります。これらのプロセッサーの CPU 機能は引き続きサポートされます。詳細は、oneAPI フォーラム (英語) およびリリースノートを参照してください。

インテル® oneAPI DPC++/C++ コンパイラーの入手方法

このサイトから手順に従ってツールキットをダウンロードし、インストール手順に従ってツールキットをインストールします。

インテル® oneAPI DPC++/C++ コンパイラーの使用方法

インテル® oneAPI DPC++/C++ コンパイラーの動作環境

このコンパイラーおよびライブラリーのハードウェア、オペレーティング・システム、ソフトウェア要件を説明します。

ハードウェア要件

CPU (プロセッサー) の要件

次のインテル® 64 アーキテクチャー・ベースのシステムは、ホスト・プラットフォームとターゲット・プラットフォームの両方としてサポートされています。

  • インテル® Core™ プロセッサー・ファミリー以降
  • インテル® Xeon® プロセッサー・ファミリー
  • インテル® Xeon® スケーラブル・プロセッサー・ファミリー

アクセラレーターの要件

  • GPU
    • インテル® UHD グラフィックス (第 11 世代以降のインテル® Core™ プロセッサーに搭載)
    • インテル® Iris® Xe グラフィックス
    • インテル® Arc™ グラフィックス
    • インテル® データセンター GPU フレックス・シリーズ
    • インテル® データセンター GPU マックス・シリーズ
  • FPGA (次のいずれか):
ターゲット - インテル® FPGA デバイス インテル® Quartus® Prime 開発ソフトウェアのエディション

インテル® Quartus® Prime 開発ソフトウェア・プロ・エディション (英語) バージョン 22.3 から 24.2

インテル® Quartus® Prime 開発ソフトウェア・スタンダード・エディション (英語) バージョン 23.1std

注: 各バージョンのインテル® Quartus® Prime 開発ソフトウェアのオペレーティング・システムのサポートについての詳細は、インテル® Altera® FPGA プロ・エディションのソフトウェア・バージョンの OS サポートおよびインテル® Altera® FPGA スタンダード・エディションのソフトウェア・バージョンの OS サポートを参照してください。

メモリー要件

  • 16GB (CPU および GPU 開発)
  • 64GB (インテル® FPGA 開発)

注: インテル® FPGA 開発では、デザインを処理するために必要な (推奨) 物理メモリーと同等の仮想メモリーを提供するようにシステムを構成することを推奨します。

ソフトウェア要件

注: これらの OS ディストリビューションはインテルによってテストされたもの、または動作が確認されているものです。その他のディストリビューションは、動作する場合としない場合があり、推奨されません。質問がある場合は、インテル・コミュニティー・フォーラム (英語) でサポートを受けることができます。商用サポート (英語) を利用可能な場合は、サポートチケットを作成してください。

Linux*

オペレーティング・システム

CPU ホスト/ターゲット

  • Red Hat* Enterprise Linux* 8.x、9.x
  • SUSE* Linux* Enterprise Server (SLES*) 15 SP4、SP5、SP6
  • Ubuntu* 22.04、24.04
  • Rocky Linux* 9
  • WSL2 Via Ubuntu* 22.04
  • WSL2 Via SLES* 15sp5
  • Fedora* 38、39、40
  • Debian* 12

インテル® インテグレーテッド・グラフィックス (GPU)

  • RHEL (Red Hat*) 8.8、8.10、9.2、9.4
  • SLES* 15 SP4、SP5、SP6
  • Ubuntu* 22.04、24.04
  • Linux* カーネル 4.11 以降

FPGA‡

  • RHEL* 8.6、9.0、9.1
  • Ubuntu* 22.04 LTS
  • SLES* 15 SP4

注: インテル® Quartus® Prime 開発ソフトウェアの各バージョンでの OS サポートは、これらの要件と異なる場合があります。詳細は、インテル® Altera® FPGA プロ・エディションのソフトウェア・バージョンの OS サポートおよびインテル® Altera® FPGA スタンダード・エディションのソフトウェア・バージョンの OS サポートを参照してください。

GPU ドライバー (Linux*)

  • レベルゼロおよび OpenCL* グラフィックス・ドライバーをインストールする必要があります。
    • Linux* 汎用インテル® GPU (GPGPU) ドライバーをインストールするには、インストールガイド (英語) の手順に従ってください。
    • 2025.0 の推奨ドライバーのバージョン - LTS ドライバー: agama-ci-devel-803.103 (LTS_803.103_20240925)、ローリングドライバー: agama-ci-devel-992.26 (英語)
    • Linux* 汎用インテル® GPU (GPGPU) ドライバーをインストールするには、インストールガイド (英語) の手順に従ってください。

注: FPGA でハードウェアをコンパイルするには、インテル® Quartus® Prime 開発ソフトウェア・プロ・エディションと BSP を個別にダウンロードする必要があります。詳細は、インテル® FPGA 開発用ソフトウェアのインストールのフロー (英語) を参照してください。

開発ツール

インテル® インテグレーテッド・グラフィックス (GPU) 開発のサマリー

  • インテル® ソフトウェア開発ツールは、第 11 世代以降のインテル® Core™ プロセッサーに内蔵されているグラフィックス・プロセッサーをサポートします。第 6 世代から第 10 世代インテル® Core™ プロセッサー、および同世代の Intel Atom® プロセッサー、インテル® Pentium® プロセッサー、インテル® Celeron® プロセッサーに内蔵されているグラフィックス・プロセッサーのサポートは 2023.1 リリースで終了しました。
  • サポートしている Linux* カーネル: 4.11 以降のデプロイメントが必要
  • サポートしている Linux* OS: Ubuntu* 20.04.3 LTS、RHEL 8.x、SUSE* 15.x
  • コンパイラーがビルドされる分散ライブラリーの最小サポートバージョン: GCC - 7.5.0、BINUTILS- 2.30、GLIBC-2.28、G++ - 7.5.0。使用している GNU* gcc の最新バージョンに同等の g++ パッケージがインストールされていない場合、エラーが発生します。詳細は、「Fatal Error: 'C++ Header' File Not Found with Intel® oneAPI DPC++/C++ Compiler (致命的なエラー: インテル® oneAPI DPC++/C++ コンパイラーで「C++ ヘッダー」ファイルが見つかりません)」 (英語) を参照してください。
  • Linux* オペレーティング・システム向け汎用 GPU ドライバーの最新のインテル® GPU ドライバー
  • ハードウェアにアクセスするには、「video」グループに属している必要があります。次のコマンドを使用して追加します。
    $ usermod -a -G video $USER

Windows*

オペレーティング・システム

CPU ホスト/ターゲット

  • Windows* 10、11 (Pro および Enterprise) (64 ビット)
  • Microsoft* Windows Server* 2019、2022

GPU

  • Windows* 10、11 (Pro および Enterprise) (64 ビット)
  • Microsoft* Windows Server* 2019、2022

FPGA✝

  • Windows* 10、11 (64 ビット)
  • Microsoft* Windows Server* 2019

注: FPGA でハードウェアをコンパイルするには、インテル® Quartus® Prime 開発ソフトウェア・プロ・エディションと BSP を個別にダウンロードする必要があります。詳細は、インテル® FPGA 開発フロー (英語) を参照してください。

注: インテル® Quartus® Prime 開発ソフトウェアの各バージョンでの OS サポートは、これらの要件と異なる場合があります。詳細は、インテル® Altera® FPGA プロ・エディションのソフトウェア・バージョンの OS サポートおよびインテル® Altera® FPGA スタンダード・エディションのソフトウェア・バージョンの OS サポートを参照してください。

GPU ドライバー (Windows*)

  • レベルゼロおよび OpenCL* グラフィックス・ドライバーが必要です。各デバイスのインストール手順に従ってください。
    • インテル® Iris® Xe MAX グラフィックス (DG1) および第 11 世代から第 13世代インテル® Core™ プロセッサー・グラフィックスの手順 (英語)
    • インテル® データセンター GPU フレックス・シリーズ (開発コード名 Arctic Sound-M、略称 ATS-M) インテル® グラフィックス・ドライバー: 31.0.101.5522 (英語)

開発ツール

インテル® oneAPI 2023.1 は、Windows* および Linux* で検証を行っています。
Windows* インテル® グラフィックス・ドライバー
ドライバーをインストールするには、次の手順に従ってください。
インテル® Iris® Xe MAX グラフィックス (開発コード名 DG1) および第 10 世代から第 13世代インテル® Core™ プロセッサー・グラフィックス
インテル® Arc™ A シリーズ・グラフィックス (開発コード名 DG2)
インテル® データセンター GPU フレックス・シリーズ (開発コード名 Arctic Sound-M、略称 ATS-M)
Linux* 汎用インテル® GPU (GPGPU) ドライバー
すべてのインテル® GPU は、この記事 (英語) の手順に従ってください。

インテル® レジストレーション・センターのアクセス方法は、日本語マニュアルをご参照ください。

その他の開発ツール

インテル® oneAPI ツールキット向け Visual Studio* Code (VS Code) 拡張

インテル® oneAPI ツールキット向け VS Code 拡張 (英語) は、oneAPI アプリケーションを作成、デバッグ、およびプロファイルする開発者を支援します。詳細は、「Visual Studio* Code とインテル® oneAPI ツールキットの使用ユーザーガイド」 (英語) を参照してください。

VS Code Marketplace (英語) から以下の VS Code 拡張を利用できます。

  • インテル® oneAPI ツールキット向けサンプルブラウザー
  • インテル® oneAPI ツールキット向け環境コンフィグレーター
  • インテル® oneAPI ツールキット向け解析コンフィグレーター
  • インテル® oneAPI ツールキット向け GDB GPU サポート
  • インテル® oneAPI ツールキット向けインテル® DevCloud コネクター

Codeplay のプラグイン

ドキュメント

以前のインテル® oneAPI リリース

法務上の注意書き

インテルの最適化機能は、インテルのコンパイラーまたはその他のインテル製品を対象としたものであり、他社製品に同等の最適化を行えないことがあります。

インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。

絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。

実際の費用と結果は異なる場合があります。

© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
✝開発コード名

本資料は、(明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず) いかなる知的財産権のライセンスも許諾するものではありません。

本資料で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。

インテルは、明示されているか否かにかかわらず、いかなる保証もいたしません。ここにいう保証には、商品適格性、特定目的への適合性、および非侵害性の黙示の保証、ならびに履行の過程、取引の過程、または取引での使用から生じるあらゆる保証を含みますが、これらに限定されるわけではありません。


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

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