如何使用2d数组在c ++ AMP中声明array_view或数组对象

时间:2011-12-17 21:22:16

标签: c++ parallel-processing gpgpu c++-amp

我正在尝试使用int myarray[2][3]之类的数组来初始化array_view对象。我试过array_view<int, 2> a(2,3, myarray);然而这不起作用。我也希望能够用矢量做同样的事情。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Baltram的方法是正确的。 你可以替换

array_view<int, 2> a(2, 3, &my_composed_vector.front()); 

通过

array_view<int, 2> a(2, 3, my_composed_vector); 

使其更简单。

这是一种更简单的方法:

int myarray[2][3];
int *p = &myarray[0][0];
array_view<int, 2> a(2, 3, p);

谢谢,

答案 1 :(得分:2)

尝试array_view<int, 2> a(2, 3, *myarray);

编辑:

(固定大小)向量的向量不能直接用于初始化array_view对象。

但是你可以这样做:

vector< vector<int> > my_multi_vector; // Fill my_multi_vector with data
vector<int> my_composed_vector;
for(int i = 0, ie = my_multi_vector.size(); i != ie; ++i)
    my_composed_vector.insert(my_composed_vector.end(), my_multi_vector[i].begin(), my_multi_vector[i].end());
array_view<int, 2> a(2, 3, &my_composed_vector.front());