1
我有一些代码在GPU上执行IDCT。我注意到,在GPU上生成IDCT矩阵似乎更快,而不是预先计算变换矩阵并将其放入常量内存中。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);
该代码是不太可能产生任何分支指令。它可能会做一个选择,所以不会有线程分歧。这个代码没有理由不能像GPU那样“适合”。 @Paul R的建议是潜在有用的优化。 – harrism