我刚刚开始研究 SYCL 并在我的系统上运行 ComputeCpp_info 并显示了 3 台设备上的以下数据
ComputeCpp 信息 (CE 1.1.0)
SYCL 1.2.1 修订版 3
设备 1(GeForce GTX 1050 = NO - 设备不支持 SPIR)
设备 2(Intel(R) HD Graphics 630 = UNTESTED - 设备未在此操作系统上测试)
设备 3(Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz = UNTESTED - 设备运行未经测试的驱动程序)
现在我的问题是我可以在这些设备上工作吗,因为 2 未经测试而 1 是不可能的?还是我缺少一些驱动程序?
我也实现了一个简单的例子,但它给了我 CL/cl.h not found 错误
#include <CL/sycl.hpp>
#include <array>
#include <numeric>
#include <iostream>
int main() {
const size_t array_size = 1024 * 512;
std::array<cl::sycl::cl_int, array_size> in, out;
std::iota(begin(in), end(in), 0);
cl::sycl::queue device_queue;
cl::sycl::range<1> n_items{ array_size };
cl::sycl::buffer < cl::sycl::cl_int, 1> in_buffer(in.data(), n_items);
cl::sycl::buffer < cl::sycl::cl_int, 1> out_buffer(out.data(), n_items);
device_queue.submit([&](cl::sycl::handler &cgh) {
constexpr auto sycl_read = cl::sycl::access::mode::read;
constexpr auto sycl_write = cl::sycl::access::mode::write;
auto in_accessor = in_buffer.get_access<sycl_read>(cgh);
auto out_accessor = out_buffer.get_access<sycl_write>(cgh);
cgh.parallel_for<class VecScalMul>(n_items,
[=](cl::sycl::id<1> wiID) {
out_accessor[wiID] = in_accessor[wiID] * 2;
});
});
}