Подсчет количества вхождений чисел в массиве CUDA

У меня есть массив беззнаковых целых чисел, хранящийся на графическом процессоре с помощью CUDA (обычно 1000000 элементов). Я хотел бы подсчитать появление каждого числа в массив. Есть только несколько различных чисел (около 10 ), но эти числа могут варьироваться от 1 до 1000000 . Примерно 9/10 -го числа числа 0 , мне не нужно их количество. Результат выглядит примерно так:

58458 -> 1000 occurrences
15 -> 412 occurrences

У меня есть реализация, использующая atomicAdd s, но она слишком медленная ( много потоков пишут на один и тот же адрес). Кто-нибудь знает о быстром / эффективном методе?

7
задан Cœur 10 July 2019 в 12:05
поделиться