Насколько хорошо общие задачи программирования переводятся в графические процессоры? - PullRequest
5 голосов
/ 05 сентября 2008

Я недавно начал работать над проектом, чтобы определить, как наилучшим образом использовать вычислительную мощность, доступную в современных видеокартах для общего программирования. Кажется, что полевое программирование GPU общего назначения (GPGPU) имеет большой уклон к научным приложениям с большим количеством математики, поскольку это хорошо согласуется с вычислительной моделью GPU. Это все хорошо и хорошо, но большинство людей не тратят все свое время на работу программного обеспечения для моделирования и тому подобного, поэтому мы подумали, что можно создать общую основу для простого создания программного обеспечения с поддержкой графического процессора для масс.

Это приводит к вопросу, который я хотел бы задать; Каковы наиболее распространенные виды работ, выполняемых программами? Не требуется, чтобы работа очень хорошо переводилась в программирование на GPU, поскольку мы готовы принять небольшое улучшение производительности (лучше, чем ничего, верно?).

Мы уже имеем в виду несколько предметов:

  • Управление данными. Управление большими объемами данных из баз данных. и иначе.
  • Программы типа электронных таблиц (в некоторой степени связано с вышеизложенным).
  • Программирование в графическом интерфейсе (хотя получить доступ к соответствующий код).
  • Распространенные алгоритмы, такие как сортировка и поиск.
  • Общие коллекции (и их интеграция с манипулированием данными алгоритмы)

Какие другие задачи кодирования очень распространены? Я подозреваю, что большая часть написанного кода относится к категории управления запасами и, в противном случае, отслеживания реальных «объектов».

Поскольку у меня нет опыта работы в отрасли, я полагал, что может быть несколько базовых типов кода, который делается чаще, чем я понимаю, но который просто не материализуется как внешние продукты.

Будут оценены как задачи программирования высокого уровня, так и конкретные операции низкого уровня.

Ответы [ 6 ]

3 голосов
/ 05 сентября 2008

Общее программирование ужасно переводится на GPU. Графические процессоры предназначены для выполнения довольно простых задач с потоками данных с огромной скоростью и массивным параллелизмом. Они плохо справляются с богатыми структурами данных и управления в общем программировании, и нет смысла пытаться втиснуть это в них.

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

3 голосов
/ 05 сентября 2008

Общее программирование ужасно переводится на GPU. Графические процессоры предназначены для выполнения довольно простых задач с потоками данных с огромной скоростью и массивным параллелизмом. Они плохо справляются с богатыми структурами данных и управления в общем программировании, и нет смысла пытаться включить это в себя.

2 голосов
/ 05 сентября 2008

Вещи, которые современные компьютеры делают много, где небольшое преимущество может иметь большое значение? Посмотрим ...

  • Управление данными: управление реляционными базами данных может выиграть от более быстрых реляционных объединений (особенно объединений, включающих большое количество отношений). Включает массивные однородные наборы данных.
  • Токенизация, лексирование, разбор текста.
  • Компиляция, генерация кода.
  • Оптимизация (запросов, графиков и т. Д.).
  • Шифрование, дешифрование, генерация ключей.
  • Верстка страницы, набор текста.
  • Полнотекстовая индексация.
  • Сборка мусора.
1 голос
/ 05 сентября 2008

Возможно, вы захотите взглянуть на март / апрельский выпуск журнала ACM Queue , в котором есть несколько статей о графических процессорах и о том, как лучше всего их использовать. их (кроме графики, конечно).

0 голосов
/ 05 сентября 2008

Другая вещь, которую следует учитывать при использовании графического процессора, - это скорость шины. Большинство графических карт имеют более высокую пропускную способность при передаче данных из ЦП в графический процессор, поскольку именно это они делают большую часть времени. Пропускная способность от графического процессора до резервного процессора, которая необходима для возврата результатов и т. Д., Не такая быстрая. Поэтому они лучше всего работают в конвейерном режиме.

0 голосов
/ 05 сентября 2008

Я много упрощаю настройку. То есть я обертываю генерацию / управление значениями конфигурации внутри пользовательского интерфейса. Основное преимущество заключается в том, что я могу контролировать рабочий процесс и презентацию, чтобы неопытным пользователям было проще настраивать приложения / сайты / службы.

...