Почему именно ты направляешься в CUDA?Я имею в виду, пахнет, как будто твоя проблема не из тех, в которых CUDA очень хорош.Вы просто хотите отсортировать массив из 512 элементов и позволить некоторым указателям ссылаться на другое местоположение.В этом нет ничего особенного, для этого используйте простой последовательный алгоритм, например, Quicksort, Heapsort или Mergesort.
Кроме того, подумайте о накладных расходах, необходимых для копирования данных из вашей кучи / стека на ваше устройство CUDA.Использование CUDA имеет смысл, когда вычисления достаточно интенсивны, так что COMPUTING_TIME_ON_CUDA+COPY_DATA_FROM_HEAP_TO_CUDA_DEVICE+COPY_DATA_FROM_CUDA_DEVICE_TO_HEAP < COMPUTING_TIME_ON_HOST_CPU
.
Кроме того, CUDA невероятно мощен в математических вычислениях с большими векторами и матрицами и довольно простыми типами данных (числами), потому что этоОдна из проблем, которая часто возникает на GPU: вычисление графики.