Параллелизм задач

редактировать

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

Содержание
  • 1 Описание
  • 2 Пример
  • 3 Поддержка языков
  • 4 См. Также
  • 5 Ссылки
Описание

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

В качестве простого примера, если система выполняет код в двухпроцессорной системе (ЦП " a "" b ") в параллельной среде, и мы хотим выполнять задачи" A "и" B ", можно указать CPU" a "выполнить задачу" A "и CPU" b " «выполнять задачу« B »одновременно, тем самым сокращая время выполнения выполнения. Задачи можно назначать с помощью условных операторов, как описано ниже.

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

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

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

Пример

псевдокод ниже иллюстрирует параллелизм задач:

программа:... если CPU = "a", то выполните задачу "A" else if CPU = "b", тогда выполнить задачу "B" end if... end program

Цель программы - выполнить некоторую чистую итоговую задачу ("A + B"). Если мы напишем код, как указано выше, и запустим его в двухпроцессорной системе, среда выполнения выполнит его следующим образом.

  • В системе SPMD (одна программа, несколько данных) оба CPU будут выполнять код.
  • В параллельной среде оба будут иметь доступ к те же данные.
  • Предложение "if" различает ЦП. ЦП «a» будет читать истину в «if», а ЦП «b» будет читать истину в «else if», таким образом имея свою собственную задачу.
  • Теперь оба процессора выполняют отдельные блоки кода одновременно, выполняя разные задачи одновременно.

Код, выполняемый ЦП "a":

программа:... выполнить задачу "A"... конечную программу

Код, выполняемый ЦП "b":

программа:... выполнить задачу "B"... завершить программу

Эта концепция теперь может быть обобщена на любое количество процессоров.

Языковая поддержка

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

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

См. также
Ссылки
Последняя правка сделана 2021-06-09 10:34:16
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте