/ / Was bedeutet "am meisten" und "am wenigsten" signifikante Dimension? - c ++, c ++ - amp

Was bedeutet "am meisten" und "am wenigsten" signifikante Dimension? - c ++, c ++ - amp

Ich lese gerade ein Buch über C ++ AMP und verstehe die Terminologie nicht wirklich:

Wählen Sie Ihre Fliesengröße immer so, dass die Anzahl der Fäden in der am wenigsten signifikante Dimension ist mindestens 16, und verwenden Sie 32 oder 64 wenn Sie können.

Ich hatte eine ähnliche Terminologie in der Eigen-Dokumentation gesehen, daher vermute ich, dass dies durchaus üblich ist.

Nehmen wir an, ich habe einen 2D-Index, ein Array oder was auch immer:

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

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

Vergiss für einen Moment die Art von ArrayTypeund mehr über die Terminologie nachdenken, die das wäre die meisten und am wenigsten signifikante Dimension dieses Arrays?

Antworten:

4 für die Antwort № 1

Bei der logischen Zuordnung von Threads in mehrerenDimensionen gibt es im Allgemeinen eine Zuordnung von diesem N-dimensionalen Raum zu einem linearen Raum. Die Dimension, die den linearen Raum am wenigsten variiert, ist die niedrigste Dimension.

Abbilden eines 2-dimensionalen (X, Y)Koordinate zum linearen Raum kann mit dem Ausdruck (Y * width + X) bestimmt werden. Hier ist X die am wenigsten signifikante Dimension und Y ist die signifikanteste Dimension. Für einen dreidimensionalen Raum (X, Y, Z) könnte der Ausdruck (Z * Breite * Höhe + Y * Breite + X) sein. Hier ist X immer noch am geringsten, Z jedoch am signifikantesten. Ihr Layout ist möglicherweise nicht unbedingt gleich. Sie können beispielsweise linearen Abstand (Z * Breite * Höhe + X * Höhe + Y) zuordnen, wobei Y die niedrigste Dimension ist.