OpenCL - взаимозаменяемы ли оси рабочих групп?
Я пытался найти лучший размер рабочей группы для проблемы, и я понял, что я не могне оправдывает себя.
Вот мои результаты:
GlobalWorkSize {6400 6400 1}, WorkGroupSize {64 4 1}, время (миллисекунды) = 44,18GlobalWorkSize {6400 6400 1}, WorkGroupSize {4 64 1}, время (миллисекунды) = 24,39Смена осей вызвала вдвое более быстрое выполнение. Зачем !?
Кстати, я использовал 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];
}