エクセルソフトでは、CUDA* から C++ with SYCL* への移行支援ツール「インテル® DPC++ 互換性ツール」が同梱されたインテル® oneAPI ベース・ツールキット向けに、有償サポートサービス製品を提供しています。有効なサポートサービスをお持ちのお客様は、技術サポートを日本語でご利用いただけます。
こちらのページで紹介しているソフトウェア・ツールの使用方法やサンプルの実装方法、実際のコード移行時に発生した問題点やコードの移行支援に関するご相談などがございましたら、以下のフォームよりお気軽にお問い合わせください。
インテル® DPC++ 互換性ツールは、既存の CUDA* コードから C++ with SYCL* への移行を支援するソフトウェアです。ローカルマシン上でインタラクティブな JupyterLab* 環境にアクセスして、このツールの使用方法について学びましょう。詳細は、自己学習向けに提供されている Jupyter* ノートブックのチュートリアルを参照してください。
Jupyter* ノートブックのチュートリアルでは、以下について学ぶことができます。
チュートリアルを利用するには、事前にインテル® oneAPI ベース・ツールキットをインストールする必要があります。日本語での無料サポートサービス (14日間限定) 付きのダウンロードのお申込みはこちら。
移行方法のサンプル紹介動画 (英語) では、以下について学ぶことができます。
以下のエンドツーエンドの移行サンプルでは、実際に CUDA* アルゴリズムをヘテロジニアス・プログラミング言語である C++ with SYCL* へ移行する方法を紹介します。
数値線形代数における対角優位な連立一次方程式 Ax=b の近似数値解を求めます。
グラフをトラバースするソーティング・ネットワークです。小規模から中規模の (キーと値の) 配列ペアのバッチをソートするのに適したアルゴリズムです。
オプティカル・フローとは、物体やカメラの移動によって生じる、隣接フレーム間の画像オブジェクトの動きの見え方のパターンです。
MonteCarloMultiGPU サンプルの CUDA* から SYCL* への移行
モンテカルロ法を使用して、指定された一連のヨーロピアン・オプションの公正なコール価格を評価します。このサンプルは、1 つの CPU スレッドを使用して複数の GPU を制御します。
ConcurrentKernels アプリケーションの CUDA* から SYCL* への移行
GPU 上で複数のカーネルを同時に実行する SYCL* キューの使用を実証します。
SimpleCUDAGraphs の CUDA* から SYCL* への移行
Taskflow プログラミング・モデルを使用して、単純な明示的 CUDA* グラフ API を SYCL* の同等の API へ移行します。
QuasirandomGenerator の CUDA* から SYCL* への移行と最適化
標準正規分布を生成するニーダーライター準乱数列ジェネレーターと逆累積正規分布関数を実装します。
分離可能な畳み込みの CUDA* から SYCL* への移行と最適化
分離可能な畳み込みとは、1 つの畳み込みを 2 つ以上の畳み込みに分割して、同じ出力を生成する処理です。
C++ with SYCL* で既存の CUDA* コードをマルチプラットフォーム対応のプログラムに移行するには、以下の 2 とおりの方法があります。
インテル® DPC++ 互換性ツールは、インテル® oneAPI ベース・ツールキットに含まれるコンポーネントです。このツールは、CUDA* 言語カーネルとライブラリー API 呼び出しを移行し、CUDA* コードの約 80% から 90% を C++ with SYCL* に移行します。さらに、コードの記述とチューニングに役立つインライン・コメントを生成します。
以下のガイドを参照して、CUDA* コードの移行を開始しましょう。
開発者のご要望にお応えし、インテル® DPC++ 互換性ツールがオープンソースのプロジェクト「SYCLomatic」としてリリースされました。このプロジェクトのソースコードは、GitHub* (英語) で公開されており、インテルが提供するツールと同等の移行機能を備えています。コミュニティーによる貢献も歓迎します。
CUDA* 開発環境における SYCLomatic インストール手順
$ mkdir syclomatic; cd syclomatic
$ wget <ステップ 3 でコピーした linux_release.tgz へのリンクアドレス>
$ tar -cvf linux_release.tgz
$ export PATH="/home/$USER/syclomatic/bin:$PATH"
$ c2s --version
以下のエンドツーエンドの移行サンプルでは、実際に CUDA* アルゴリズムをヘテロジニアス・プログラミング言語である C++ with SYCL* へ移行する方法を紹介します。
HIPCL とインテル® DPC++ 互換性ツールによる CUDA* の移行
オークリッジ国立研究所 (ORNL) の研究者である Zheming Jin 氏は、複数のベンチマーク・アプリケーションを移行して DPC++ を評価しています。
インテル® oneAPI を使用した CUDA* 最適化カーネルのインテル® GPU への移行
NASA の研究科学者である Eric Nielson 氏とオールド ドミニオン大学のコンピューター・サイエンスの教授である Mohammad Zubair 博士が、CUDA* 向けに最適化されたカーネルを oneAPI に移行した経験を共有しています。
DPC++ for CUDA* により SYCL* をエクサスケール以前のスーパーコンピューティングに導入
Codeplay の主任ソフトウェア・エンジニアの Gordon Brown 氏が、SYCL* を使用して移行したカーネルをエクサスケール以前のマシンにスケーリングすることについて述べています。
ストックホルム大学で GROMACS を研究している生物物理学の教授である Erik Lindahl 氏は、インテル® DPC++ 互換性ツールを使用して CUDA* コードを SYCL* に移行し、コードをクロスアーキテクチャー対応にした経験を紹介しています。
エクセルソフトでは、インテル® ソフトウェア開発製品を利用して、インテルの CPU、GPU、FPGA をはじめとする多様なアクセラレーターのほか、NVIDIA* GPU や AMD* GPU 向けに最適化されたコードの開発を支援するための最新情報をお届けするメールニュースを定期配信しています。
下記フォームに必要事項をご記入の上、[お問い合わせ] ボタンをクリックしてください。弊社より折り返しご連絡いたします。
NVIDIA* GPU および AMD* GPU 向け Codeplay プラグインは、SYCL* で記述したコードを NVIDIA* や AMD* のターゲット GPU で実行するために、インテル® oneAPI ベース・ツールキットのインテル® oneAPI DPC++/C++ コンパイラーを補完する無料バイナリーです。エクセルソフトでは、SYCL* アプリケーションをコンパイルする際の疑問点に関して、優先サポートを利用するための有償サポートサービス製品を提供しています。