“最”和“最小”重要维度是什么意思?

时间:2013-11-06 23:47:32

标签: c++ c++-amp

我正在阅读一本关于C ++ AMP的书,并且不太了解一些术语:

  

始终选择您的磁贴大小,以便在其中的线程数   最低有效维度至少为16,如果使用32或甚至64   你可以。

我在Eigen文档中看到了类似的术语,所以我怀疑这是很常见的用法。

因此,假设我有一个2D索引,数组,无论如何:

// construct it:
ArrayType my2DArray(rows,columns);

// now index it:
float element = my2DArray[rowIdx,colIdx];

暂时忘记ArrayType类型,并更多地考虑术语,即至少该阵列的重要维度?

1 个答案:

答案 0 :(得分:4)

当在多个维度上逻辑地分配线程时,通常存在从该N维空间到线性空间的映射。最小线性空间变化的维度是最不重要的维度。

作为示例,可以使用表达式(Y * width + X)来确定将2维(X,Y)坐标映射到线性空间。这里,X是最不重要的维度,Y是最重要的维度。同样,对于三维(X,Y,Z)空间,表达式可以是(Z *宽度*高度+ Y *宽度+ X)。在这里,X仍然是最不重要的,但Z是最重要的。您的布局可能不一定相同,例如您可以选择将线性空间映射到(Z *宽度*高度+ X *高度+ Y),在这种情况下,Y是最不重要的维度。