Почему книги по параллельному программированию всегда игнорируют параллелизм данных?[закрыто]

StackOverflow https://stackoverflow.com/questions/1854054

Вопрос

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

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

Это было полезно?

Решение

Прежде всего отмечу, что параллельное программирование не обязательно является синонимом параллельного программирования.Параллельное программирование — это создание приложений из слабосвязанных задач.Например, в диалоговом окне взаимодействие с каждым элементом управления может быть реализовано как отдельная задача.С другой стороны, параллельное программирование явно подразумевает распространение решения некоторой вычислительной задачи на более чем одну часть исполнительного оборудования, по существу всегда из каких-либо соображений производительности (примечание:даже слишком мало оперативной памяти является причиной снижения производительности, когда альтернативой является замена.

Поэтому я вынужден спросить взамен:Какие книги вы имеете в виду?Они о параллельном программировании (у меня их несколько, там много интересной теории) или о параллельном программировании?

Если они действительно о параллельном программировании, я сделаю несколько замечаний:

  • CUDA является быстро меняющейся целью с момента ее выпуска.Книга, написанная об этом сегодня, к моменту выхода в печать будет наполовину устаревшей.
  • Стандарт OpenCL был выпущен чуть меньше года назад.Стабильные реализации вышли примерно за последние 8 месяцев.Просто еще не было достаточно времени, чтобы написать книгу, не говоря уже о ее редакции и публикации.
  • OpenMP описан по крайней мере в нескольких учебниках по параллельному программированию, которые я использовал.До версии 2 (только что была выпущена версия 3) по существу все сводилось к параллельному программированию данных.

Другие советы

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

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

«всегда» — это немного сильно;там есть ресурсы(пример), которые включают темы о параллелизме данных.

Классическая книга Хиллиса «Машина соединений» целиком посвящена параллелизму данных.Это один из моих любимых

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top