Intel oneAPI使ってみた その2 (DPCT編)

おさらい

Intel oneAPI

似たような技術にNVIDIA CUDAAMD ROCmがある

Intel oneAPIにはCUDAソースから移行するためのツール Data Parallel C++ Compatibility Tool(DPCT) が用意されている

DPCTの使い方

DPCTは、開発・実行環境であるIntel oneAPI Base Toolkitに含まれている
DPCTを使うには移行したいアプリのCUDAソースの他に、CUDAランタイムヘッダーが必要

注意
2020/10/10現在最新のIntel oneAPI Base Toolkit beta09は、CUDA11.1に対応していません
以下ではCUDA10.2を使っています

VS2019での例

シンプルなCUDAプロジェクトをDPC++プロジェクトに移行する手順

  • プロジェクトウィザードでCUDAプロジェクトを作成

    f:id:Onswar:20201010012648p:plain
    CUDAプロジェクトの新規作成

  • Migrate Project to DPC++メニューを選択

    f:id:Onswar:20201010013059p:plain
    DPC++への移行メニュー

  • 移行したいCUDAプロジェクトファイルの指定

    f:id:Onswar:20201010013523p:plain
    移行するプロジェクトの指定

  • Additional optionsにCUDAランタイムヘッダーがあるディレクトリを指定

    f:id:Onswar:20201010013735p:plain
    コンフィグ設定

ex) --cuda-include-path="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include"

#include <CL/sycl.hpp>
#include <algorithm> /* INSERTED */
#include <dpct/dpct.hpp>

#include <stdio.h>

int addWithCuda(int *c, const int *a, const int *b, unsigned int size);
...
  • ビルド・実行
    f:id:Onswar:20201010015344p:plain
    kernel 実行結果