Случайный доступ к большому набору данных облагается налогом на GPU. Я бы не позволил бы всем ядрам произвольно записывать в одну главную таблицу. Это, вероятно, приведет к ухудшению производительности по сравнению с последовательным процессором.
Вместо этого, я бы, вероятно, дал каждому ядру свой кусок памяти для работы. Возможно, каждый из них должен собрать часть матрицы, используя небольшой список координат с кортежами (строка, столбец, значение). Каждое ядро должно просто работать на своем собственном куске памяти при сборке данных матрицы, а затем я перетаскиваю эти данные обратно в ЦП, чтобы отсортировать их и переконфигурировать в более эффективный формат.
Если вам нужно продолжить работу с отсортированными матричными данными, было бы лучше создать второе ядро. Ядра работают лучше всего при выполнении простых задач.