¿Hacer CUB blockradixsort en chip por completo?

Estoy leyendo las documentaciones y ejemplos de CUB:

#include <cub/cub.cuh>   // or equivalently <cub/block/block_radix_sort.cuh>
__global__ void ExampleKernel(...)
{
    // Specialize BlockRadixSort for 128 threads owning 4 integer items each
typedef cub::BlockRadixSort<int, 128, 4> BlockRadixSort;
    // Allocate shared memory for BlockRadixSort
__shared__ typename BlockRadixSort::TempStorage temp_storage;
    // Obtain a segment of consecutive items that are blocked across threads
int thread_keys[4];
...
    // Collectively sort the keys
BlockRadixSort(temp_storage).Sort(thread_keys);
...
}

En el ejemplo, cada hilo tiene 4 claves. Parece que 'thread_keys' se asignarán en la memoria local global. Si solo tengo 1 clave por hilo, ¿podría declarar "int thread_key;" y hacer esta variable solo en el registro?

BlockRadixSort (temp_storage) .Sort () está tomando un puntero a la clave como parámetro. ¿Significa que las claves deben estar en la memoria global?

Me gustaría usar este código, pero quiero que cada subproceso mantenga una clave en el registro y lo mantenga en el chip en el registro / memoria compartida después de que se ordenen. ¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta