1

这不一定是 CUDA 特定的。

基本上,在 GPU 上我有一个 1D 数组,但在 C 代码中,我有一个 3d 数组。我需要来回复制这个数组,并且我需要能够正确地线性化索引。这意味着我选择了正确的编号方案,如 (1, 0, 0) 线性化为 1,或者是 (0, 1, 0) 或 (0, 0, 1),形式为(x,y,z)?

3d 数组被声明为 array[X][Y][Z]。当我将该 3D 数组复制到相同大小的 1d 数组中时,计算机将如何自然地对其进行编号?但是计算机崩溃了 3d 数组,当我尝试在两者之间进行转换时,我需要做同样的事情。我希望我能说清楚我想说的话,但是如果您有任何问题,请提出。谢谢你。

4

1 回答 1

3

C 中的数组以行优先顺序保存,有关详细信息,请参阅this 。

所以第一个元素是array[0][0][0],第二个是array[0][0][1],等等。

于 2012-06-06T00:22:48.627 回答