ここでは、外部ホスト・コンパイラー (G++) をインテル® oneAPI DPC++/C++ コンパイラーととも使用するために必要な手順を説明します。
この例では、ホスト・コンパイラーを使用してホスト・オブジェクトを生成し、最終的なリンクを実行します。ホスト・コンパイラーは、必要なヘッダーとライブラリーの場所を知っておく必要があります。例の手順に従って、ホストコードに G++ コンパイラー (g++) および DPC++ コードにインテル® oneAPI DPC++/C++ コンパイラー (dpcpp) を使用してデータ並列 C++ (DPC++) プログラムをビルドします。
この例は次のコードを含みます。
「インテル® oneAPI ベース・ツールキット入門 (Linux* 版)」 (英語) に従ってビルド環境を設定します。
source /opt/intel/oneapi/setvars.sh
export LIBDIR=<Location of libsycl.so> export INCLUDEDIR=<Location of SYCL headers>
dpcpp -c a.cpp -fPIC -o a.o dpcpp -c b.cpp -fPIC -o b.o
dpcpp -fsycl-device-only -Xclang -fsycl-int-header=a_host.h a.cpp dpcpp -fsycl-device-only -Xclang -fsycl-int-header=b_host.h b.cpp
g++ -std=c++17 -c a.cpp -o a_host.o -include a_host.h -fPIC -I$INCLUDEDIR g++ -std=c++17 -c b.cpp -o b_host.o -include b_host.h -fPIC -I$INCLUDEDIR
g++ -std=c++17 main.cpp -c -fPIC -I$INCLUDEDIR
dpcpp -fPIC -fsycl -fsycl-link a.o b.o -o device.o
必要なホスト・オブジェクトとデバイス・オブジェクトを含むアーカイブ libuser.a を作成します。
ar -rcs libuser.a a_host.o b_host.o device.o
g++ main.o a_host.o b_host.o device.o -L$LIBDIR -lOpenCL -lsycl -o finalexe.exe
アーカイブを使用して final.exe をビルドします。
g++ main.o -Wl,--whole-archive libuser.a -Wl,--no-whole-archive -L$LIBDIR -lOpenCL -lsycl -o finalexe.exe
このリリースでは Windows* はサポートされていません。