错误:: SYCL对象在运行库关闭时仍处于活动状态

时间:2019-07-01 11:18:21

标签: sycl

我正在尝试使用Visual Studio在SYCL上实现一个简单的矢量加法示例。它可以成功构建,但在执行时会给我关闭运行时的SYCL对象仍然有效。。以下是示例代码,它是什么意思,我该如何解决。预先感谢

#include <CL/sycl.hpp>
using namespace cl::sycl;

#include <vector>
using std::vector;

vector<int> add_vectors(const vector<int>& a, const vector<int>& b);

int main() {
vector<int> a{ 1, 2, 3, 4, 5 };
vector<int> b{ 6, 7, 8, 9, 10 };
auto c = add_vectors(a, b);
return 0;
}
vector<int> add_vectors(const vector<int>& a, const vector<int>& b) {
const auto N = a.size();
buffer<int, 1> bufA(a.data(), range<1>{N});
buffer<int, 1> bufB(b.data(), range<1>{N});

vector<int> c(N);
buffer<int, 1> bufC(c.data(), range<1>{N});

queue myQueue;

myQueue.submit([&](handler& cgh) {
    auto A = bufA.get_access<access::mode::read>(cgh);
    auto B = bufB.get_access<access::mode::read>(cgh);
    auto C = bufC.get_access<access::mode::write>(cgh);

    cgh.parallel_for<class add>(
        range<1>{N},
        [=](id<1> i) {
        C[i] = A[i] + B[i];
    }
    );
});

return c;

}

1 个答案:

答案 0 :(得分:0)

可以编写包含错误和异常处理的SYCL代码。 ComputeCpp developer website上有一个指南。 此外,使用gdb收集回溯信息可能会提供一些有关哪里出问题的线索。

在这种情况下,代码为我们成功执行了,因此问题很可能出在OpenCL驱动程序中。