Я ищу примеры алгоритмов общего назначения (т.е. не связанных с графикой), которые, как было доказано, работают на порядок быстрее на GPU, чем на CPU. Я буду использовать эти примеры, чтобы творчески подумать о других алгоритмах, которые я мог бы реализовать на GPU.
algorithms
performance
gpu
Дэвид
источник
источник
Ответы:
Несколько вещей сразу приходят на ум:
Был написан специализированный биткойн-клиент для использования графического процессора для выполнения криптографических хэшей. Клиент GPU обычно работает более чем в 10 раз лучше, чем клиент CPU SMP в типичной 4-ядерной системе. Биткойн зависит от вычисления большого количества несвязанных криптографических хэшей, которые могут быть вычислены параллельно.
Проект Folding @ Home предлагает клиент GPU для моделирования молекулярной динамики. Эти вычисления выполняются для отдельных связей между атомами в различных средах и условиях. Математика относительно проста, но для каждой связи должна вычисляться миллиарды раз, чтобы имитировать простые наносекунды активности.
Популярный «игрушечный» пример, используемый сторонниками вычислений на GPU, - это проблема n-body .
Что общего у этих вещей, так это то, что они смущающе параллельны . Таким образом, проблема может быть разложена на небольшое количество дискретных вычислений, которые выполняются много раз над большим набором данных. Это тот тип вычислений, который хорош в GPU.
Сложные вычисления, которые зависят от результатов предыдущих вычислений, плохо подходят для графического процессора.
источник
Видео и аудио транскодирование является отличным примером. Это преобразование из одного формата файла в другой. Примером является MPEG-2 до H.264.
Обратите внимание, что транскодирование видео не связано с трехмерной графикой. Вы не можете кодировать видео, используя вершинный и пиксельный шейдеры.
источник
Майнинг биткойнов с использованием графического процессора стал очень популярным.
Другое приложение на финансовых рынках для торговли в реальном времени с использованием таких моделей, как Блэк-Шоулз .
источник
Игра жизни Конвея - хороший академический пример.
источник
Задачи, которые требуют много математики, которые могут быть выполнены одновременно. Там, где я работал, мы хотели поиграть с графическими процессорами, чтобы сложить / вычесть / умножить 2 матрицы для определения генетической корреляции. Первый раз, когда я услышал о графических процессорах, было то, что они использовались финансовым центром программного обеспечения для некоторых моделей (Монте-Карло и так далее). Было бы полезно при взломе кода.
Вероятно, графические процессоры мало помогут в ваших более обычных задачах программирования, когда достаточно пары процессорных ядер, потому что большинству обычных программ нужно всего лишь запустить несколько параллельных процессов. (может отличаться от памяти / диска, который намного быстрее, чем у нас)
источник
Может быть, я очень специализируюсь на математических, естественных и инженерных вычислениях, но на ум приходит алгоритм FFT.
Я уже видел этот тест FFT, и хотя ему уже несколько лет, я думаю, что он был хорошо сделан для того, что он есть: http://www.sharcnet.ca/~merz/CUDA_benchFFT
источник