Я прошу библиотеку c ++ для сортировки с ускорением на GPU (около 1 ГБ данных) и сортировки слиянием (скажем, около 100 ГБ данных — но размер не имеет значения, потому что слияние является потоковым алгоритмом). Лицензия должна быть LGPL, BSD или тому подобное. Я очень предпочитаю OpenCL из-за переносимости (но я также заинтересован в ссылках на библиотеки CUDA). Я ценю ссылки на статьи и сообщения в блоге на эту тему.
Двусторонняя сортировка слиянием 1 ГБ (т. Е. 128 000 000 8-байтовых сущностей) будет занимать примерно лог2(128 000 000) · 1 ГБ = 27 ГБ пропускной способности памяти, что составляет около 1 секунды на современном процессоре с последовательный пропускная способность памяти ~ 30 ГБ / с. (Кажется, что любая сортировка без слияния занимает намного больше времени, потому что непоследовательный доступ к памяти медленнее в 10-100 раз).
Хотя я не знаком с современными графическими процессорами, я подозреваю, что слияние 1 ГБ займет 0,2 секунды или даже меньше, поскольку типичная пропускная способность памяти графического процессора составляет около 150 ГБ / с, как у AMD / ATI 58xx (см., Например, http://en.wikipedia.org/wiki/Comparison_of_AMD_graphics_processing_units#Evergreen_.28HD_5xxx.29_series)
Это как минимум 5-кратное ускорение. (Время передачи 1 ГБ по 16-кратному PCI-E 2.0 составляет около 0,125 с, но представляется возможным выполнять передачу PCI параллельно с сортировкой; однако для этого может потребоваться 2 ГБ или 3 ГБ памяти видеокарты вместо 1 ГБ).
Я подозреваю, что еще большее ускорение из-за более чем двухсторонней сортировки или какой-то другой, подходящей для GPU.
Вы смотрели на осевая нагрузка ?
Со страницы проекта:
Thrust — это библиотека параллельных алгоритмов, напоминающая C ++
Стандартная библиотека шаблонов (STL). Высокоуровневый интерфейс Thrust
повышает производительность труда разработчиков и обеспечивает переносимость производительности
между GPU и многоядерными процессорами. Совместимость с установленными
технологии (такие как CUDA, TBB и OpenMP) облегчают интеграцию
с существующим программным обеспечением. Быстро разрабатывайте высокопроизводительные приложения
с тягой!
Лицензия Apache, поэтому она должна вам подойти.
Других решений пока нет …