Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KS_LK_AllInOne.docx
Скачиваний:
175
Добавлен:
23.11.2019
Размер:
28.78 Mб
Скачать

1. Суть проблемы и основные понятия

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

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

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

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

Естественно возникла и задача программирования множества одновременно протекающих и заимодействующих друг с другом процессов.

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

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

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

1.1 Главные этапы распараллеливания задач

П одготовка вычислительных задач от момента их постановки до записи параллельных программ проходит несколько нетри-виальных этапов. Основные шаги такой подготовки отображены на рисунке 1.1.

Рисунок 1.1. Основные этапы подготовки параллельной программы.

После распределения процессов по процессорам выполняется традиционное программирование всех модулей.

1.2 Сведения о вычислительных процессах

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

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

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

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

Это смещение определяется разностью частот тактовых генераторов и является непрерывной функцией времени и не кратно ни одному из периодов двух тактовых генераторов. В таких случаях говорят, что два процесса асинхронны.

На рисунке 1.2 показана асинхронная временная развертка двух одинаковых циклических процессов, протекающих на разных процессорах.

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

В описанных ситуациях естественно ожидать совпадения в заранее не предсказуемых фазах интервалов, в течение которых выполняются помеченные действия. В правом верхнем углу рисунка 1.2 двумя толстыми

протяженными отрезками на оси текущего времени (/) изображены интервалы медленного (М) и быстрого (Б) процессов в двух фазах: интервал "Б" начинается раньше интервала "М" или интервал "(Б)" начинается позже интервала "(М)".

Рисунок 1.2. Временная развертка двух циклических процессов с различными квантами времени.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]