微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在SYCL中为2D std :: vector创建缓冲区

如何解决在SYCL中为2D std :: vector创建缓冲区

在SYCL中创建2D std::vector缓冲区的正确方法是什么? 我有一个模板函数,可接收如下所示的参数:

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()})
    
    /* ... */
}

abc是二维std::vector s

我已经能够为2D C样式的数组实现缓冲区,但是我尝试了多个文档和答案,但是似乎没有一个与此特定用例相匹配。

解决方法

不。 vector<vector<T>>不会创建连续的内存块。您需要使用vector<T>并将其解释为二维数据块。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。