GPUでIDCTを実行するコードがいくつかあります。変換行列を事前に計算して定数メモリに入れるよりも、GPUでIDCT行列を生成する方が速いように思われることに気づきました。
問題は、IDCTマトリックスを生成するコードに、GPUにうまく適合しないブランチがあることです。
GPUでより高速なIDCTマトリックスを生成する別の方法があるかどうか疑問に思っていますか?
// Old way
// local_idct[x][y] = idct[x][y]; // read from precalculated matrix in constant memory
// New way
local_idct[x][y] = cos((x+x+1)*y * (PI/16.0f)) * 0.5f * (y == 0 ? rsqrt(2.0f) : 1);