CUDA* から SYCL* への用語のマッピング・リファレンス #

このクイック・リファレンスでは、移行プロセスを始める際に役立つように、一般的な CUDA* 用語を SYCL* 用語に対応付けます。

アーキテクチャー用語のマッピング #

CUDA* 対応 GPU

インテルの SYCL* 対応 GPU

Xe-LP と以前の世代

Xe-HPG と Xe-HPC

CUDA* コア

実行ユニット (EU)

ベクトルエンジン & 行列エンジン (XVE & XMX)

ストリーミング・マルチプロセッサー (SM)

サブスライス (SS) またはデュアル・サブスライス (DSS)

Xe コア

プロセッサー・クラスター (PC)

スライス

Xe スライス

N/A

N/A

Xe スタック

実行モデルマッピング #

CUDA*

SYCL*

スレッド

ワーク項目

ワープ

sub-group

ブロック

work-group

グリッド

ND-range

メモリー・モデル・マッピング #

CUDA*

SYCL*

レジスター

プライベート・メモリー

共有メモリー

ローカルメモリー

定数メモリー

N/A

グローバルメモリー

グローバルメモリー

メモリー指定子のマッピング #

CUDA*

SYCL*

__device__

N/A

__shared__

N/A

__constant__

N/A

__managed__

N/A

関数実行空間指定子のマッピング #

CUDA*

SYCL*

__global__

必要なし

__device__

必要なし

__host__

必要なし

タスクのオフロードに使用される主要なホストタイプのマッピング #

CUDA*

SYCL*

device

sycl::device

stream

sycl::queue

event

sycl::event

カーネルの実行によるマッピングの構成 #

CUDA*

SYCL*

dim3

sycl::range<3>

Kernel<<<gridDim, blockDim>>>(...)

  1. parallel_for は、sycl::queue クラスのメンバー関数:

    
    sycl::queue q; 
    q.parallel_for(sycl::nd_range<3>(girdDim * blockDim, blockDim), [=](sycl::nd_item<3> item){ 
       kernel(...); 
    });
  2. submit は、sycl::queue クラスのメンバー関数:

    
    sycl::queue q; 
    q.submit([&](sycl::handler &cgh){ 
       cgh.parallel_for(sycl::nd_range<3>(gridDim * blockDim, blockDim), [=](sycl::nd_item<3> item){ 
          kernel(...); 
       }); 
    });

ビルトイン実行空間のインデックス・マッピング #

CUDA*

SYCL*

gridDim.x/y/z

sycl::nd_item.get_group_range(2/1/0)

blockDim.x/y/z

sycl::nd_item.get_local _range().get(2/1/0)

blockIdx.x/y/z

sycl::nd_item.get_group(2/1/0)

threadIdx.x/y/z

sycl::nd_item.get_local_id(2/1/0)

warpSize

sycl::nd_item. .get_sub_group().get_local_range().get(0)