Открыт код, позволяющий использовать GPU для оптимизации сортировки
В рамках проекта back40computing подготовлен работающий механизм сортировки большого объема данных, использующий для ускорения технологию CUDA (Compute Unified Device Architecture), позволяющую вынести некоторые вычислительные задачи на плечи графического процессора.Разработка интересна прежде всего, тем, что представленный алгоритм SRTS Radix Sorting опровергает бытующее мнение о низкой эффективности использования GPU для оптимизации задач, связанных с сортировкой. На обычном компьютере с современной видеокартой NVIDIA GeForce GTX480 представленный код обеспечивает производительность, позволяющую сортировать несколько миллиардов 32-разрядных целых чисел в секунду, что в несколько раз превышает скорость работы самых быстрых алгоритмов сортировки, работающих с привлечением обычного CPU.
Из ограничений алгоритма отмечается возможность сортировки только ключей фиксированной длины. В частности поддерживается сортировка всех численных типов C/C++, таких как signed char, float, unsigned long long, а также структурированных типов по ключу фиксированной длины. Примечательно, что алгоритм обеспечивает до 80% экономии ресурсов при сортировке близких ключей, содержащих одинаковый набор цифр (например, 1112 и 1115). При сортировке чисел с плавающей точкой или знаковых типов (float, int, double и т.п.) замедление относительно беззнаковых целых той же длины составляет всего 0.5-1.5%.
© OpenNet