我有一个 3D 数据,存储在 1D 数组中。我计算这样的一维索引:
index = i + j * WIDTH + k * WIDTH * HEIGHT
比我需要i,j,k
从index
. 这样做的明显方法是这样的:
k = index / (WIDTH * HEIGHT)
j = (index % (WIDTH * HEIGHT)) / WIDTH
i = index - j * WIDTH - k * WIDTH * HEIGHT
但我想知道,有没有更有效的方法来做到这一点?至少没有模...
这个问题的背景 - 我在 CUDA 中有一个内核,我可以在其中访问数据和计算i, j, k
索引(index
对应于唯一的线程 ID)。那么也许有一些特定于 CUDA 的方法可以做到这一点?我想这是一个很常见的问题,但我找不到更好的方法来做到这一点......
谢谢你的想法!