3. Геометрическое и алгоритмическое распараллеливание
Грубо и приблизительно, можно выделить два вида распараллеливания:
геометрическое;
алгоритмическое.
Типичными задачами, поддающимися так называемому "геометрическому распараллеливанию", являются, к примеру, задачи анализа и синтеза изображений. Каждому процессору и работающему на этом процессоре программному процессу передаётся участок изображения, и соответственно - различные участки обрабатываются на разных процессорах, распределение нагрузки между процессорами естественным образом равномерное. Такое распараллеливание, достаточно часто, реализуется и относительно просто, и эффективно. По типу "геометрического распараллеливания", распараллеливаются и многие другие типы задач, такие, в которых равномерное распределение нагрузки между процессорами естественно и очевидно проистекает из особенностей самой задачи.
По типу "алгоритмического распараллеливания" распараллеливаются те задачи, в которых возможности и способы параллельного решения не присутствует в явном, очевидном виде. "Алгоритмическое распараллеливание" состоит в вычленении (и часто очень непростом) в алгоритме решаемой задачи, тех ветвей и операций, которые таки могут быть выполнены параллельно, и в соответствующем программировании задач. Искусство алгоритмического распараллеливания является отдельной дисциплиной в рамках предмета "технологии программирования", и требует особых навыков от программиста. Попытки реализации в компиляторах технологий так называемого "автоматического распараллеливания" (то есть создания компиляторов способных автоматически, без особых усилий со стороны программиста, находить в исходном нераспараллеленном коде - параллельные ветви и операции, и автоматически преобразовать не распараллеленное решение - в распараллеленное) пока не увенчались особыми успехами. Данные разработки находятся на стадии исследований.
Do'stlaringiz bilan baham: |