我正在阅读一本关于C ++ AMP的书,并且不太了解一些术语:
始终选择您的磁贴大小,以便在其中的线程数 最低有效维度至少为16,如果使用32或甚至64 你可以。
我在Eigen文档中看到了类似的术语,所以我怀疑这是很常见的用法。
因此,假设我有一个2D索引,数组,无论如何:
// construct it:
ArrayType my2DArray(rows,columns);
// now index it:
float element = my2DArray[rowIdx,colIdx];
暂时忘记ArrayType
的类型,并更多地考虑术语,即最和至少该阵列的重要维度?
答案 0 :(得分:4)
当在多个维度上逻辑地分配线程时,通常存在从该N维空间到线性空间的映射。最小线性空间变化的维度是最不重要的维度。
作为示例,可以使用表达式(Y * width + X)来确定将2维(X,Y)坐标映射到线性空间。这里,X是最不重要的维度,Y是最重要的维度。同样,对于三维(X,Y,Z)空间,表达式可以是(Z *宽度*高度+ Y *宽度+ X)。在这里,X仍然是最不重要的,但Z是最重要的。您的布局可能不一定相同,例如您可以选择将线性空间映射到(Z *宽度*高度+ X *高度+ Y),在这种情况下,Y是最不重要的维度。