对带有和不带有CUDA的DPC++目标GPU进行故障排除



我按照下面网站上的说明在电脑上测试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编译器。的简要说明

  1. 安装CUDA开发工具包,例如从这里安装

  2. 从以下来源构建和安装英特尔的llvm编译器:https://github.com/intel/llvm传递--cuda参数以配置命令(请参阅项目自述文件中的说明(

  3. 根据此指令使用编译器,例如:

    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
    

最新更新