我按照下面网站上的说明在电脑上测试DPC++。
https://github.com/intel/llvm/blob/sycl/sycl/doc/GetStartedGuide.md#build-dpc工具链
$ ./simple-sycle-app.exe
The results are correct!
然后我修改了第23行以瞄准我的gpu
// Creating SYCL queue
sycl::queue Queue( sycl::gpu_selector{} );
[18:49]ec2-user$ ./simple-sycl-app-gpu.exe
terminate called after throwing an instance of 'cl::sycl::runtime_error' what(): No device of requested type available. -1 (PI_ERROR_DEVICE_NOT_FOUND) Aborted (core dumped)
我需要在启用CUDA的情况下构建我的dpc环境来访问我的K80 Nvidia GPU吗?我没有启用它,因为CUDA的支持显然仍然是实验性的。我认为使用DPC++的全部目的是为了让我不需要使用CUDA。我应该只使用Nvidia驱动程序而不是CUDA来使用我的Nvidia gpu吗?
您需要构建支持CUDA的llvm编译器。的简要说明
-
安装CUDA开发工具包,例如从这里安装
-
从以下来源构建和安装英特尔的llvm编译器:https://github.com/intel/llvm传递
--cuda
参数以配置命令(请参阅项目自述文件中的说明( -
根据此指令使用编译器,例如:
export DPCPP_HOME=~/sycl_workspace export PATH=$DPCPP_HOME/llvm/build/bin:$PATH export LD_LIBRARY_PATH=$DPCPP_HOME/llvm/build/lib:$LD_LIBRARY_PATH clang++ -fsycl -fsycl-targets=nvptx64-nvidia-cuda simple-sycl-app.cpp -o simple-sycl-app-cuda.exe