1
GPU에서 IDCT를 수행하는 코드가 있습니다. 변환 매트릭스를 미리 계산하고이를 상수 메모리에 저장하는 것보다 GPI에서 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);
그 코드가 어떤 분기 명령이 발생할 가능성이 없습니다. 아마도 select를 대신 수행 할 것이므로 스레드의 분기가 발생하지 않을 것입니다. 이 코드가 GPU에있는 그대로 "적합"하지 않을 이유는 없습니다. @ Paul R의 제안은 잠재적으로 유용한 최적화입니다. – harrism