Параллелизм задач |
Автор: admin Просмотров: 2275 Комментарии:
Добавлен: 17 апреля 2016
Обновлено: 17.04.2016 - 12:22
Параллелизм задач (также известный как функции параллелизма и управление параллелизмом) является одной из форм распараллеливания компьютерного кода в нескольких вычислительных узлах. Параллелизм задач сосредоточен на распределении конкретных процессов или потоков задачи на различных процессорах. Это контрастирует с параллелизмом данных в другой форме параллельности.
В многопроцессорной системе, параллелизм задач достигается, когда каждый процессор выполняет другой поток (или процесс) на тех же или на других данных. Могут выполняться одни и те же потоки или другой код. В общем случае, выполнение различных потоков взаимодействует. Связь обычно происходит путем передачи данных от одного потока к другому в рамках рабочего процесса.
В качестве простого примера, если мы запускаем код на системе двух процессорах ( CPUs "a" и "b") и хотим выполнять задачи A и B, нужно сказать процессору A делать задачу A и процессору B чтобы делать задачу B параллельно. Задачи можно назначать с помощью условных операторов.
Параллелизм задач подчёркивает распределённый (параллельный) характер обработки потоков, в отличает от данный (параллелизм данных). Большинство реальных программ находятся где-то между параллелизмом задач и параллелизмом данных.
Параллелизм на уровне потоков (TPL) - параллелизм на уровне приложения, которое запускает несколько потоков сразу. Этот тип параллелизма встречается в основном в приложениях, написанных для коммерческих серверов, таких как базы данных. Выполняя несколько потоков одновременно, эти приложения способны переносить высокие объёмы I/O. В то время как один поток задерживается в ожидании доступа к памяти или диску, другие потоки могут выполнять полезную работу.
Параллелизм потоков пришёл на настольные компьютеры с появлением многоядерных микропроцессоров. Это происходит потому что по разным причинам становиться нецелесообразным увеличивать или частоту или инструкции на такт одного ядра. Если эта тенденция сохранится, новые приложения должны будут уметь использовать несколько потоков, чтобы извлечь выгоду из увеличения потенциальной вычислительной мощности. Это контрастирует с предыдущими микропроцессорными инновациями, в которых существующий код автоматически ускорялся, запускаясь на более новых и быстрых компьютерах.
Примеры
Этот псевдокод демонстрирует параллелизм задач:
program:
...
if CPU="a" then
do task "A"
else if CPU="b" then
do task "B"
end if
...
end program
Цель программы - сделать некоторую общую задачу ( "A + B"). Если мы пишем код как описано выше, и запускаем его на системе с двумя процессорами, то среда выполнения будет выполнять его следующим образом.
- В SPMD системе, оба ЦП будет выполнять код.
- В параллельной среде, оба будут иметь доступ к тем же данным.
- "if" отличает процессоры. CPU "a" будет читать true на "if" и CPU "b" будет читать true на "else if".
- Теперь центральный процессор выполнит отдельные блоки кода одновременно, выполняя различные задачи одновременно.
Код, выполняемый с помощью процессора "A":
program:
...
do task "A"
...
end program
Код, выполняемый с помощью CPU "B":
program:
...
do task "B"
...
end program
Сейчас это можно обобщить на любом количестве процессоров.
Поддержка языков
Языки с распаралелливанием задач. Примеры таких языков можно найти в области языков описания аппаратуры, таких как как Verilog и VHDL с парадигмой статического кода, где программа имеет статическую структуру а данные меняются. Напротив, в статической модели данных данные не меняются или медленно меняются.
https://en.wikipedia.org/wiki/Task_parallelism
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Компьютерные советы
Комментарии |