1
说我有CPU侧的数据的源,看起来像这样:由行填充二维AMP阵列行
vector< vector<int> > cpuBlobOData;
假定每行向量内具有相同的大小(锯齿状2D矢量是不锯齿)。
我想将它复制到一个数组中的单块GPU内存。有没有办法做到这一行一行?这样的事情:
array<int, 2> gpuArray(cpuBlobOData.size(), numColumns);
for(size_t i=0; i<cpuBlobOData.size(); ++i)
{
auto cpuRow = cpuBlobOData[i];
concurrency::copy(cpuRow.begin(), cpuRow.end(), &gpuArray[i]);
}
我知道这不会编译,它显示了我正在尝试做什么。有什么能够完成这个吗?我能找到的唯一解决方案是将cpu矢量复制到1D矢量中,并将其映射到array_view,或将其复制到数组中。
这是有效的,但这是浪费,对于一些算法,连续一维向量可能不适合剩余的内存空间。
任何建议是值得欢迎的,因为我正在努力弄清AMP。
谢谢。除了性能受到影响之外,这种方法很有效,所以我最终坚持使用大型的中间存储器块。 –