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。
謝謝。除了性能受到影響之外,這種方法很有效,所以我最終堅持使用大型的中間存儲器塊。 –