Параллельное программирование

         

Параллельное выполнение алгоритма


Предпочтительным способом распараллеливания здесь является распараллеливание по информации. Наиболее простая реализация его может быть основана на распределении между процессорами или станциями локальной сети строк матрицы S. И здесь самую простую реализацию предлагает принцип SPMD — "одна программа -- много потоков данных". Однако, как видно из примера, объем работ, связанных с разными строками, может быть весьма различным. Например, мы долго обрабатывали первую строку и быстро справились с такими строками, как 7, 8, 9. Значит, жесткое априорное распределение строк нежелательно. Оно обеспечивает неравномерную загрузку процессоров. Необходимо производить загрузку процессоров динамически, по мере их освобождения.

Здесь может быть эффективен тот же принцип, который используется при обработке баз данных, баз знаний и списковых структур.

Его реализация может быть следующей.

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

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

Сеть, в т.ч. транспортная, представляет собой параллельную структуру. Методы параллельного программирования предлагают эффективные средства для исследования сетей. Достоинством их является то, что сами эти методы допускают весьма простые способы распараллеливания. Это очень важно при обработке сетей большой размерности. Использование SPMD- технологии способствует эффективному применению многопроцессорных систем — внешних устройств персонального компьютера или множества станций локальной сети для решения задач высокой сложности.

Рассмотренные параллельные методы решения некоторых задач на транспортных сетях ориентированы на "прорыв в размерности", на выход на большие размерности задач, на задачи высокой, даже — экспоненциальной сложности. Только параллельные вычислительные системы могут решать такие задачи. Здесь очень важна концепция перспективных вычислительных средств: только ли разработка супер-ЭВМ призвана удовлетворить высокие требования по производительности? Не находятся ли на наших столах распределенные вычислительные комплексы РС, объединенные в локальные сети на основе современных, уже достаточно оперативных сетевых технологий? Именно для ответа на эти вопросы и должны критически перерабатываться и вновь создаваться параллельные алгоритмы решения сложных задач.


Содержание раздела