本資料は、インテルのウェブサイトで公開されている「Intel® DPC++ Compatibility Tool Release Notes」および「Intel® DPC++ Compatibility Tool System Requirements」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
インテル® 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 ベンチマークとサンプルの測定結果に基づいています。結果は異なることがあります。)
手動でコードを移行する作業が必要な場合は、警告メッセージがコマンドライン出力に表示され、生成されたコードにインライン化されます。
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 アセンブリー移行の問題を修正しました。
その他の複数の問題を修正および改善しました。
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」を実行してコンパイル・データベースのセットを生成し、生成したコンパイル・データベースでソースファイルを移行できます。
詳細は、「インテル® DPC++ 互換性ツール導入ガイド」 (英語) を参照してください。
ここでは、インテル® DPC++ 互換性ツールのハードウェア、オペレーティング・システム、ソフトウェア要件を説明します。
以下のディストリビューションがサポートされています。
特定の CUDA* ヘッダーファイルはツールからアクセスできる必要があります (サポートされている CUDA* のバージョン: 8.0、9.x、10.1、10.2、11.0 ~11.8、12.0 ~ 12.6)。
インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。
絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。
実際の費用と結果は異なる場合があります。
© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。
本資料は、(明示されているか否かにかかわらず、また禁反言によるとよらずにかかわらず) いかなる知的財産権のライセンスも許諾するものではありません。
本資料で説明されている製品には、エラッタと呼ばれる設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みのエラッタについては、インテルまでお問い合わせください。
インテルは、明示されているか否かにかかわらず、いかなる保証もいたしません。ここにいう保証には、商品適格性、特定目的への適合性、および非侵害性の黙示の保証、ならびに履行の過程、取引の過程、または取引での使用から生じるあらゆる保証を含みますが、これらに限定されるわけではありません。
性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。