С какими проблемами обработки данных может помочь CUDA? - PullRequest
3 голосов
/ 01 июня 2010

Я работал над многими проблемами сопоставления данных, и очень часто они сводятся к быстрому и параллельному запуску многих реализаций ресурсоемких алгоритмов, таких как расстояние Хэмминга / Редактирования. Это та вещь, для которой CUDA была бы полезна?

Какие проблемы обработки данных вы решили с ним? Действительно ли есть повышение по сравнению со стандартным четырехъядерным настольным ПК Intel?

Chris

Ответы [ 5 ]

5 голосов
/ 01 июня 2010

Я думаю, что вы ответили на свой вопрос. В общем, CUDA / OpenCL ускоряет массово параллельные операции. Мы использовали CUDA для выполнения различных операций DSP (FFT, FIR) и видели ускорения на порядок величины. Порядка ускорения с парой сотен долларов - это воровство. В то время как специализированные библиотеки ЦП, такие как MKL и OpenMP, значительно увеличили скорость, CUDA / OpenCL намного быстрее.

Проверьте здесь для примеров использования CUDA

1 голос
/ 18 февраля 2011

Обычно существует два типа параллелизма: параллелизм задач и параллелизм данных. Процессоры ускоряются на первом и графические процессоры на втором. Причина этого заключается в том, что процессоры имеют сложное предсказание ветвлений, аппаратные средства исполнения с неупорядоченным порядком и многоступенчатые конвейеры, которые позволяют им выполнять независимые задачи параллельно (например, 4 независимых задачи на четырехъядерном процессоре). С другой стороны, графические процессоры убрали большую часть логики управления и вместо этого имеют много ALU. Таким образом, для задач с параллелизмом данных (простое, например, добавление матрицы) графический процессор может использовать преимущества множества ALU для параллельной работы с этими данными. Что-то вроде расстояния Хэмминга было бы здорово для графического процессора, так как вы просто подсчитываете количество различий между двумя строками, где каждый символ отличается только в зависимости от позиции и не зависит от любого другого символа в той же строке.

1 голос
/ 01 июня 2010

CUDA используется для значительного улучшения скоростей в компьютерной томографии. Например, проект FASTRA работает наравне с суперкомпьютерами (а не только с четырехъядерными рабочими столами!) Во время сборки потребительского оборудования за несколько тысяч евро.

Другие известные мне темы исследований - оптимизация роя и обработка звука в реальном времени.

В общем: метод может использоваться в каждом домене, где все данные должны обрабатываться одинаковым способом, поскольку все ядра будут выполнять одну и ту же операцию. Если ваша проблема сводится к такого рода операциям, вы можете пойти :). Жаль, что не все попадают в эту категорию ...

1 голос
/ 01 июня 2010

да, это основной домен CUDA. Его эффективность максимальна, если выполняются следующие условия:

  1. Обработка элемента не зависит от результатов обработки других.
  2. Нет разветвления. Или, по крайней мере, соседние элементы разветвляются одинаково.
  3. Элементы равномерно распределены в памяти.

Конечно, действительно есть немного задач, которые попадают в эти условия. В зависимости от того, насколько далеко вы от них отойдете, эффективность будет снижаться. Иногда вам нужно полностью переписать свой алгоритм, чтобы максимально использовать его.

1 голос
/ 01 июня 2010

Например, в SIGGRAPH '09 они показали CUDA-реализацию Vray для Maya . Трассировка лучей в режиме реального времени и качество предварительного просмотра со скоростью 20 кадров в секунду с картой за 200 долларов? Я думаю, что это очень помогает.

...