std::vector
在 SYCL中创建 2D 缓冲区的正确方法是什么?我有一个模板函数,它接收如下所示的参数:
template <typename T>
void MatrixMulParallelNaive(queue& q,
std::vector<std::vector<T>>& a,
std::vector<std::vector<T>>& b,
std::vector<std::vector<T>>& c){
// Is this a correct way?
buffer<T, 2> a_buf(a.data(), range<2>{a.size(), a[0].size()})
buffer<T, 2> b_buf(b.data(), range<2>{b.size(), b[0].size()})
buffer<T, 2> c_buf(c.data(), range<2>{c.size(), c[0].size()})
/* ... */
}
a
,b
并且c
是 2D std::vector
s
我已经能够为 2D C 风格的数组实现缓冲区,但是我尝试了多个文档和答案,但似乎没有一个与这个特定的用例相匹配。