~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ AD02DF779E82D5525C1E681D8BDC4E40__1717493100 ✰
Заголовок документа оригинал.:
✰ Data parallelism - Wikipedia ✰
Заголовок документа перевод.:
✰ Параллелизм данных — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Data_parallelism ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/ad/40/ad02df779e82d5525c1e681d8bdc4e40.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/ad/40/ad02df779e82d5525c1e681d8bdc4e40__translat.html ✰
Дата и время сохранения документа:
✰ 20.06.2024 18:25:25 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 4 June 2024, at 12:25 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Параллелизм данных — Википедия Jump to content

Параллелизм данных

Из Википедии, бесплатной энциклопедии
Последовательное и параллельное выполнение заданий

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

Параллельная работа с данными над массивом из n элементов может быть поровну разделена между всеми процессорами. Предположим, мы хотим суммировать все элементы данного массива, а время одной операции сложения составляет Ta единиц времени. В случае последовательного выполнения время, затрачиваемое процессом, будет составлять n ×Ta единиц времени, поскольку он суммирует все элементы массива. С другой стороны, если мы выполним это задание как параллельное задание по обработке данных на 4 процессорах, затраченное время уменьшится до ( n /4) × Ta + единиц времени накладных расходов на слияние. Параллельное выполнение приводит к ускорению в 4 раза по сравнению с последовательным выполнением. Важно отметить, что локальность ссылок на данные играет важную роль в оценке производительности модели параллельного программирования данных. Локальность данных зависит от обращений к памяти, выполняемых программой, а также от размера кэша.

История [ править ]

Использование концепции параллелизма данных началось в 1960-х годах с разработки машины Соломона. [1] Машина Соломона, также называемая векторным процессором , была разработана для ускорения выполнения математических операций за счет работы с большим массивом данных (операции с несколькими данными в последовательных временных шагах). Параллельность операций с данными также использовалась при одновременной работе с несколькими данными с использованием одной инструкции. Эти процессоры назывались «процессорами массива». [2] В 1980-е годы был введен термин [3] для описания этого стиля программирования, который широко использовался для программирования соединительных машин на языках с параллельными данными, таких как C* . Сегодня параллелизм данных лучше всего проявляется в графических процессорах (GPU), которые используют как методы работы с несколькими данными в пространстве, так и во времени с использованием одной инструкции.

Большинство аппаратных средств параллельного обмена данными поддерживают только фиксированное количество параллельных уровней, часто только один. Это означает, что в рамках параллельной операции невозможно рекурсивно запускать больше параллельных операций, а значит, программисты не могут использовать вложенный аппаратный параллелизм. Язык программирования NESL был первой попыткой реализовать вложенную модель параллельного программирования данных на плоскопараллельных машинах и, в частности, представил сглаживающее преобразование , которое преобразует вложенный параллелизм данных в плоский параллелизм данных. Эту работу продолжили другие языки, такие как Data Parallel Haskell и Futhark , хотя параллелизм произвольных вложенных данных не широко доступен в современных языках программирования с параллельными данными.

Описание [ править ]

В многопроцессорной системе, выполняющей один набор инструкций ( SIMD ), параллелизм данных достигается, когда каждый процессор выполняет одну и ту же задачу с разными распределенными данными. В некоторых ситуациях один поток выполнения управляет операциями со всеми данными. В других операциями управляют разные потоки, но они выполняют один и тот же код.

Например, рассмотрим умножение и сложение матриц последовательное , как описано в примере.

Пример [ править ]

Ниже приведен последовательный псевдокод для умножения и сложения двух матриц, результат которого сохраняется в C. матрице Псевдокод умножения вычисляет скалярное произведение двух матриц A , B и сохраняет результат в выходную C. матрицу

Если бы следующие программы выполнялись последовательно, время, затраченное на вычисление результата, было бы (при условии, что длины строк и столбцов обеих матриц равны n) и для умножения и сложения соответственно.

// Умножение матрицы 
 for   (  i   =   0  ;   i   <   row_length_A  ;   i  ++  ) 
 { 		
     for   (  k   =   0  ;   k   <   columns_length_B  ;   k  ++  ) 
     { 
         sum   =   0  ; 
          for   (  j   =   0  ;   j   <   column_length_A  ;   j  ++  ) 
         { 
             sum   +=   A  [  i  ][  j  ]   *   B  [  j  ][  k  ]; 
          } 
         C  [  я  ][  k  ]   знак равно   сумма  ; 
      } 
 } 
// Сложение массива 
 for   (  i   =   0  ;   i   <   n  ;   i  ++  )   { 
     c  [  i  ]   =   a  [  i  ]   +   b  [  i  ]; 
  } 

Мы можем использовать параллелизм данных в предыдущем коде, чтобы выполнить его быстрее, поскольку арифметика не зависит от цикла. Распараллеливание кода умножения матриц достигается с помощью OpenMP . Директива OpenMP «omp Parallel for» предписывает компилятору выполнять код в цикле for параллельно. Для умножения мы можем разделить матрицы A и B на блоки по строкам и столбцам соответственно. Это позволяет нам рассчитывать каждый элемент матрицы C индивидуально, тем самым делая задачу параллельной. Например: A[mxn] точка B [nxk] можно закончить за вместо при параллельном выполнении с использованием процессоров m*k .

Параллелизм данных при умножении матриц
// Параллельное умножение матриц 
 #pragma omp параллельный for Schedule(dynamic,1) коллапс(2) 
 for   (  i   =   0  ;   i   <   row_length_A  ;   i  ++  ) { 
     for   (  k   =   0  ;   k   <   columns_length_B  ;   k  ++  ) { 
         сумма   =   0  ; 
          for   (  j   =   0  ;   j   <   columns_length_A  ;   j  ++  ) { 
             sum   +=   A  [  i  ] [  j  ]   *   B  [  j  ] [  k  ]; 
          } 
         C  [  я  ][  k  ]   знак равно   сумма  ; 
      } 
 } 

Из примера видно, что процессоров потребуется много, поскольку размеры матриц продолжают увеличиваться. Сохранение низкого времени выполнения является приоритетом, но по мере увеличения размера матрицы мы сталкиваемся с другими ограничениями, такими как сложность такой системы и связанные с ней затраты. Следовательно, ограничивая количество процессоров в системе, мы все равно можем применить тот же принцип и разделить данные на более крупные фрагменты для вычисления произведения двух матриц. [4]

Для добавления массивов в реализацию параллельного анализа данных давайте предположим, что это более скромная система с двумя центральными процессорами (ЦП) A и B, где ЦП А может добавлять все элементы из верхней половины массивов, а ЦП Б может добавлять все элементы из нижняя половина массивов. Поскольку два процессора работают параллельно, операция сложения массива займет вдвое меньше времени, чем выполнение той же операции последовательно с использованием только одного ЦП.

Программа, выраженная в псевдокоде ниже, который применяет некоторую произвольную операцию, foo, для каждого элемента массива d— иллюстрирует параллелизм данных: [номер 1]

если  ЦП = "а"  , то 
      нижний_предел:= 1 
      верхний_предел: = раунд (d.длина / 2) 
  иначе, если  CPU = «b»  , тогда 
      нижний_предел: = раунд (d.длина / 2) + 1 
      верхний_предел:= d.длина 

  для  меня от нижнего_предела до верхнего_предела на 1  сделать 
      фу(д[я]) 
 

В системе SPMD , работающей на двухпроцессорной системе, оба ЦП будут выполнять код.

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

Шаги к распараллеливанию [ править ]

Процесс распараллеливания последовательной программы можно разбить на четыре отдельных этапа. [5]

Тип Описание
Разложение Программа разбита на задачи — наименьшую единицу параллелизма, которую можно использовать.
Назначение Задачи назначаются процессам.
оркестровка Доступ к данным, связь и синхронизация процессов.
Картирование Процессы привязаны к процессорам.

Параллелизм данных параллелизм задач и

Параллелизм данных Параллелизм задач
Одни и те же операции выполняются с разными подмножествами одних и тех же данных. Различные операции выполняются с одними и теми же или разными данными.
Синхронные вычисления Асинхронные вычисления
Ускорение больше, поскольку со всеми наборами данных работает только один поток выполнения. Ускорение меньше, поскольку каждый процессор будет выполнять отдельный поток или процесс с одним и тем же или другим набором данных.
Степень распараллеливания пропорциональна размеру входных данных. Объем распараллеливания пропорционален количеству независимых задач, которые необходимо выполнить.
Разработан для оптимального баланса нагрузки в многопроцессорной системе. Балансировка нагрузки зависит от доступности оборудования и алгоритмов планирования, таких как статическое и динамическое планирование.

Параллелизм данных параллелизм моделей и

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

[6]

Смешанные данные задач параллелизм и

Параллелизм данных и задач можно реализовать одновременно, объединив их для одного приложения. Это называется параллелизмом смешанных данных и задач. Смешанный параллелизм требует сложных алгоритмов планирования и программной поддержки. Это лучший вид параллелизма, когда обмен данными медленный и количество процессоров велико. [7]

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

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

параллельного Среды данных программирования

Сегодня доступны различные среды параллельного программирования данных, наиболее широко используемые из которых:

  1. Интерфейс передачи сообщений : это кроссплатформенный программный интерфейс передачи сообщений для параллельных компьютеров. Он определяет семантику библиотечных функций, позволяющую пользователям писать переносимые программы передачи сообщений на C, C++ и Fortran.
  2. Открытая многопроцессорная обработка [8] (Open MP): это интерфейс прикладного программирования (API), который поддерживает модели программирования с общей памятью на нескольких платформах многопроцессорных систем. Начиная с версии 4.5, OpenMP также может работать с устройствами, отличными от типичных процессоров. Он может программировать FPGA, DSP, графические процессоры и многое другое. Это не ограничивается графическими процессорами, такими как OpenACC.
  3. CUDA и OpenACC : CUDA и OpenACC (соответственно) — это платформы API параллельных вычислений, разработанные для того, чтобы инженер-программист мог использовать вычислительные блоки графического процессора для обработки общего назначения.
  4. Threading Building Blocks и RaftLib : обе среды программирования с открытым исходным кодом, которые обеспечивают параллелизм смешанных данных и задач в средах C/C++ на гетерогенных ресурсах.

Приложения [ править ]

Параллелизм данных находит свое применение в самых разных областях: от физики, химии, биологии, материаловедения до обработки сигналов. Наука подразумевает параллелизм данных для моделирования таких моделей, как молекулярная динамика, [9] анализ последовательности данных генома [10] и другие физические явления. Движущими силами обработки сигналов для параллелизма данных являются кодирование видео, обработка изображений и графики, беспроводная связь. [11] назвать несколько.

данных с интенсивным использованием Вычисления

Вычисления с интенсивным использованием данных — это класс приложений параллельных вычислений , которые используют параллельный подход к обработке данных для обработки больших объемов данных, обычно размером в терабайты или петабайты и обычно называемых большими данными . Вычислительные приложения, которые посвящают большую часть времени выполнения вычислительным задачам, считаются ресурсоемкими, тогда как приложения, требующие больших объемов данных, требуют больших объемов данных и посвящают большую часть своего времени обработке операциям ввода-вывода и манипулированию данными. [12]

См. также [ править ]

Примечания [ править ]

  1. ^ Некоторые входные данные (например, когда d.length оценивается как 1 и round округление в сторону нуля [это всего лишь пример, никаких требований к тому, какой тип округления используется]) приведет к lower_limit быть больше, чем upper_limit, предполагается, что цикл завершится немедленно (т. е. произойдет ноль итераций), когда это произойдет.

Ссылки [ править ]

  1. ^ «Компьютер Соломона» .
  2. ^ «SIMD/Вектор/ГП» (PDF) . Проверено 7 сентября 2016 г.
  3. ^ Хиллис, В. Дэниел и Стил, Гай Л. , Коммуникации по параллельным алгоритмам данных ACM, декабрь 1986 г.
  4. ^ Барни, Блейз. «Введение в параллельные вычисления» . Computing.llnl.gov . Архивировано из оригинала 10 июня 2013 г. Проверено 7 сентября 2016 г.
  5. ^ Солихин, Ян (2016). Основы параллельной архитектуры . Бока-Ратон, Флорида: CRC Press. ISBN  978-1-4822-1118-4 .
  6. ^ «Как распараллелить глубокое обучение на графических процессорах. Часть 2/2: Параллелизм моделей» . Тим Деттмерс . 09.11.2014 . Проверено 13 сентября 2016 г.
  7. ^ «Netlib» (PDF) .
  8. ^ «ОпенМП.орг» . openmp.org . Архивировано из оригинала 5 сентября 2016 г. Проверено 7 сентября 2016 г.
  9. ^ Бойер, Л.Л; Поли, Г.С. (1 октября 1988 г.). «Молекулярная динамика кластеров частиц, взаимодействующих с парными силами, с использованием массово-параллельного компьютера». Журнал вычислительной физики . 78 (2): 405–423. Бибкод : 1988JCoPh..78..405B . дои : 10.1016/0021-9991(88)90057-5 .
  10. ^ Яп, ТК; Фридер, О.; Мартино, РЛ (1998). «Параллельные вычисления в анализе биологических последовательностей». Транзакции IEEE в параллельных и распределенных системах . 9 (3): 283–294. CiteSeerX   10.1.1.30.2819 . дои : 10.1109/71.674320 .
  11. ^ Сингх, Х.; Ли, Минг-Хау; Лу, Гуанмин; Курдахи, Ф.Дж.; Багерзаде, Н.; Фильо, Э.М. Чавес (1 июня 2000 г.). «MorphoSys: интегрированная реконфигурируемая система для приложений с параллельными данными и интенсивными вычислениями» . Транзакции IEEE на компьютерах . 49 (5): 465–481. дои : 10.1109/12.859540 . ISSN   0018-9340 .
  12. ^ Справочник по облачным вычислениям , «Технологии с интенсивным использованием данных для облачных вычислений», А.М. Миддлтон. Справочник по облачным вычислениям. Спрингер, 2010.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: AD02DF779E82D5525C1E681D8BDC4E40__1717493100
URL1:https://en.wikipedia.org/wiki/Data_parallelism
Заголовок, (Title) документа по адресу, URL1:
Data parallelism - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)