1D配列に格納されている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固有の方法があるのでしょうか?これは非常に一般的な問題だと思いますが、これを行うためのより良い方法を見つけることができませんでした...
あなたのアイデアをありがとう!