問題に最適な作業グループのサイズを見つけようとしていたところ、自分では正当化できないものを見つけました。
これらは私の結果です:
- GlobalWorkSize {6400 6400 1}、WorkGroupSize {64 4 1}、時間 (ミリ秒) = 44.18
- GlobalWorkSize {6400 6400 1}、WorkGroupSize {4 64 1}、時間 (ミリ秒) = 24.39
軸を入れ替えると、実行速度が 2 倍速くなりました。どうして !?
ちなみに、AMD GPUを使用していました。
ありがとう :-)
編集: これはカーネルです(単純な行列転置):
__kernel void transpose(__global float *input, __global float *output, const int size){
int i = get_global_id(0);
int j = get_global_id(1);
output[i*size + j] = input[j*size + i];
}