インテル® DPC++ 互換性ツール 2025.1 リリースノート

バージョン: 2025.1.0
最終更新日: 2025年3月24日

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


インテル® DPC++ 互換性ツール (インテル® DPCT) は、可能な限り開発者向けの SYCL コードを生成することにより、コード移行時間を最小限に抑えて、CUDA で記述されたプログラムから SYCL で記述されたプログラムへの移行を支援します。

このツールのバージョン管理スキーマについては、こちら (英語) を参照してください。

主な機能

  • CUDA カーネル、ホストおよびデバイスの API 呼び出し (メモリー管理、イベント、数学など) とライブラリー呼び出し (cuBLAS、cuSPARSE、cuSolver、cuRand、cuFFT、cuDNN、NCCL、NVIDIA Thrust、CUB) の移行をサポートします。通常、このツールにより CUDA コードの 90%~95% が DPC++ コードに移行されます。(2024年9月現在のインテルによる推定。llama.cpp、stable-diffusion、SqueezeLLM、Rodinia、SHOC、PENNANT、Velocity-Bench などの、オープンソース・アプリケーション、HPC ベンチマークとサンプルの測定結果に基づいています。結果は異なることがあります。)
  • 手動でコードを移行する作業が必要な場合は、警告メッセージがコマンドライン出力に表示され、生成されたコードにインライン化されます。

既知の問題と制限事項

  • Fortran コードはサポートされていません。
  • ccache が有効な一部の Linux 環境では、ターゲット・オブジェクトがすでにキャッシュにある場合、一部のコンパイルコマンドがスキップされる可能性があるため、intercept-build は完全なコンパイル・データベースを生成できません。この場合は環境変数 CCACHE_DISABLE=1 を設定してください。
  • インテル® DPCT の古いバージョンで移行したプロジェクトをインテル® oneAPI の最新リリースに切り替えるときに、"no template named 'vector_class' in namespace 'sycl' " メッセージが表示されてビルドエラーが発生することがあります。詳細は、こちらの記事 (英語) を参照してください。
  • インテル® DPCT は、NCCL を使用するプロジェクトを Windows で利用できないインテル® oneAPI コレクティブ・コミュニケーション・ライブラリー (インテル® oneCCL) を使用するように移行するため、移行されたプロジェクトは Windows プラットフォームでビルドできません。
  • インテル® DPCT を使用して、コマンドラインで入力ファイルを指定しないでコンパイル・データベース (compile_commands.json) を含むプロジェクトを移行すると、インテル® DPCT はコンパイル・データベースにリストされているすべてのソースファイルをまとめて移行しようとします。同じシグネチャーを持つカーネル関数が、オリジナル・プロジェクトで異なるバイナリーまたはライブラリー・ターゲットのビルドに使用される複数のファイルで再定義されている場合、移行結果が正しくない可能性があります。この問題を回避するには、1 つのバイナリーまたはライブラリー・ターゲットのビルドに使用されるソースファイルをまとめて移行し、ほかのバイナリーやライブラリー・ターゲットのビルドに使用されるソースファイルと混在しないようにします。インテル® DPC++ 互換性ツールのコマンドラインでまとめて移行する入力ファイルを指定するか、毎回異なるサブターゲットで「intercept-build make sub-target」を実行してコンパイル・データベースのセットを生成し、生成したコンパイル・データベースでソースファイルを移行できます。

2025.1.0 リリース

新機能

  • CUDA 12.x SIMD 組込み API の移行をサポートしました。
  • Vulkan API と相互運用する CUDA 外部リソース相互運用性 API の初期移行サポートを追加しました。
  • CUDA バージョン 12.8 ヘッダーファイルをサポートしました。
  • ユーザーの API 使用状況情報を収集するテレメトリー・ツールを統合しました。

変更点

  • DPCT ヘルパー関数ファイルを改良しました。
  • cuSparse、cuBlas、CUB、thrust、ドライバー API および PTX 命令の移行を改良しました。
  • Cmake スクリプトの移行と Pytorch CUDA 拡張機能の移行を改良しました。
  • SYCL バインドレス・テクスチャー API を使用した CUDA テクスチャーの移行を改良しました。
  • 解析モードの機能を改良しました。

問題の修正

  • llama.cpp、autoGPTQ、Lit、llm.c および Maxon の移行プロセス中に発生していた問題を修正しました。
  • Ubuntu で <cmath> ヘッダーが見つからない問題を修正しました。
  • CUDA テクスチャー API の移行に関する問題を修正しました。
  • SYCLcompat ヘッダーファイルのサポートに関する問題を修正しました。
  • intercept-build およびuser-defined ルールファイルに関する問題を修正しました。
  • WMMA API の移行に関する問題を修正しました。
  • その他の複数の問題を修正および改善しました。

2025.0.0 リリース

新機能

  • CUDA DirectX (安定バージョン 12 Ultimate API) 相互運用 API の移行をサポートしました。
  • SYCLcompat (英語) ライブラリーを使用した CUDA コードの移行をサポートしました。ユーザーは、新しいオプション '--use-syclcompat' を使用して、このライブラリーを使用することを明示的に選択できます。
  • ユーザー定義移行ルールで C++ テンプレート関数をサポートしました。
  • 「ピアツーピア」メモリーコピー用の新しい DPCT ヘルプ関数を追加しました。
  • CUDA バージョン 12.5 および 12.6 ヘッダーファイルをサポートしました。

変更点

  • Visual Studio および Eclipse 用の IDE プラグインは、このリリースには含まれていません。前回のリリースで提供されたプラグインを引き続き使用してください。
  • 新しい SYCL バインドレス画像拡張機能により CUDA テクスチャーの移行を改善しました。
  • インストルメントされたコードのパフォーマンス向上と大規模なベンチマーク向けのデータフロー・グラフの生成により、CodePin 機能のユーザー・エクスペリエンスが強化されました。
  • CUDA に関連する CMake キーワードを増やすように CMake スクリプトの移行を改善しました。
  • SYCL root_group 拡張機能により協調グループ API の移行を改善しました。
  • cuBLAS と CUB API の移行を改善しました。

問題の修正

  • RELION、GROMACS、NAMD、bitsandbytes、tiny-cuda-nn、TransformerEngine などの大規模なワークロードの移行プロセス中に発生していた多数の問題を修正しました。
  • '--gen-build-script' オプションを指定して生成した Makefile で '--whole-archive' オプションが省略される問題を修正しました。
  • CodePin 機能に関連する問題を修正しました。
  • Thrust、ドライバー、ランタイム API の移行に関連する問題を修正しました。
  • Makefile で '-arch' および '--gpu-architecture' オプションを解析するときに intercept-build がクラッシュする問題を修正しました。
  • '--report-diags-content=transformation' オプションが機能しない問題を修正しました。
  • SYCL 数学 API の変更により発生する PTX アセンブリー移行の問題を修正しました。
  • その他の複数の問題を修正および改善しました。

以前の 2024.x リリース

動作環境

インテル® DPC++ 互換性ツールの動作環境」を参照してください。

インテル® DPC++ 互換性ツールの使用方法

詳細は、「インテル® DPC++ 互換性ツール導入ガイド」 (英語) を参照してください。

法務上の注意書き

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

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

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

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

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

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

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


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

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