Сортировка массива разделяемой памяти в куб
Я хочу использовать cub для сортировки массива в каждом блоке для меня. Я называю ядро с несколькими блоками, каждый из которых имеет 32 потока, и каждый поток имеет массив из 27 целых чисел. Стандартная сортировка по странице github cubs выглядит следующим образом:
__global__ void foo(...){
int cells[27];
typedef cub::BlockRadixSort<int, 32, 27> BlockRadixSort;
__shared__ typename BlockRadixSort::TempStorage temp_storage;
BlockRadixSort(temp_storage).Sort(cells);
...}
Я должен иметь ячейки в общей памяти позже, как это:
__global__ void foo(...){
__shared__ int cells[32 * 27];
...
}
Можно ли в cub сортировать массивы, уже находящиеся в разделяемой памяти? или я должен загрузить все массивы после сортировки в общую память.
Или есть возможность сохранить все ячейки в глобальной памяти и отсортировать их по функции устройства cub, но разделить на блоки определенного размера?