Cтраница 1
Глубина буфера ( число входных сообщений) в общем случае может быть и не ограничена. [1]
Глубина буферов процессов может быть ограничена. Тогда доминирует смещение модели в сторону аппаратной поддержки обмена сообщениями. [2]
Длина очереди, или глубина буфера, равна числу входных сообщений. Ширина буфера совпадает с числом токенов в компоненте сообщения. Число очередей ( буферов) равно числу компонентов входного сообщения для соответствующего процесса. Так, сообщения для процессов, обозначенных вершинами ti, г. 2, являются однокомпонентны-ми, а сообщения процессов, которым соответствуют вершины и3, г. 4, v - двухкомпонентными. Токены от процесса-производителя пересылаются сразу же по мере формирования в соответствующие каналы процессов-потребителей. Процесс-потребитель инициируется лишь тогда, когда переданы все необходимые компоненты сообщения от процессов-производителей. Однако при этом, в отличие от детерминированной модели Кана, допускаются различные последовательности формирования токенов в компонентах и самих компонентов входных и выходных сообщений. Дисциплина FIFO строго упорядочивает компоненты входных сообщений по глубине буферов, а каждый из токенов занимает свое определенное ему место по ширине соответствующего буфера. Таким образом, сообщение - это двумерный массив, положение любого из токенов в котором однозначно определяется двумя параметрами - принадлежностью к некоторому компоненту и местом в этом компоненте сообщения. Заполнение же этого двумерного массива токенами осуществляется так, что последовательность, в которой токены передаются от процессов-производителей, заранее не известна. Мы уже отмечали, что программную поддержку сложной структуры разнотипных данных, их упорядочение для сохранения целостности сообщений при наличии нескольких буферов у процесса, альтернатив в развитии вычислений целесообразно считать внутренней функцией процесса, а не пытаться реализовать ее средствами системы программирования, например MPI. Системы вроде MPI задают интерфейс, который должен соблюдать пользователь при разработке параллельных программ. В этом смысле функции MPI можно рассматривать как внешние по отношению к процессам, обменивающимся сообщениями. Рассмотрим примеры поддержки буферного обмена сообщениями на языке, подобном С. [3]
На шаге 5 определяется глубина буферов метаоператоров mi, rri2, причем в альтернативе z O ( см. табл. 3.3) свойства т 2 изменяются. Наконец, на шаге 8 определяются свойства уровня 1, и на этом процедура разметки заканчивается. [4]
Любое новое приведенное свойство вершины mi ( глубина буферов) требует изменения свойства вершины 7712, и наоборот. [5]
В М - сети функции приведения определяют глубину буферов, с учетом которой функции разметки переносят свойства выходов на входы или наоборот. Через приведение свойств дуг учитывается взаимное влияние вершин, находящихся в отношениях прямого или обратного транзитивного замыкания с вершиной v ( /), но не находящихся в этих отношениях друг с другом, что обеспечивает глобальный анализ сети. [6]
Метки вершин ( L /, ), каждая из которых суть глубина буферов соответствующего процесса, также частичны упорядочены и однозначно определяются свойствами смежных дуг. [7]
Процедура первого прохода завершается на шаге 4 разметкой уровня 3 - определением глубины буферов mi и То2 по меткам их выходов. [8]
Если множество тегов является упорядоченным, а сообщения процессов согласованы так, что глубина буферов всех процессов рассчитана на одно сообщение, то может быть реализовано так называемое событийное ( имитационное) моделирование. [9]
Шаги ПАСС 1 - 4 ( см. табл. 3.2. и табл. 3.3) представляют процедуру первого прохода от уровня 1 к уровню 3 с применением правила Д1, когда глубина буферов определяется по меткам исходящих дуг. [10]
Длина очереди, или глубина буфера, равна числу входных сообщений. Ширина буфера совпадает с числом токенов в компоненте сообщения. Число очередей ( буферов) равно числу компонентов входного сообщения для соответствующего процесса. Так, сообщения для процессов, обозначенных вершинами ti, г. 2, являются однокомпонентны-ми, а сообщения процессов, которым соответствуют вершины и3, г. 4, v - двухкомпонентными. Токены от процесса-производителя пересылаются сразу же по мере формирования в соответствующие каналы процессов-потребителей. Процесс-потребитель инициируется лишь тогда, когда переданы все необходимые компоненты сообщения от процессов-производителей. Однако при этом, в отличие от детерминированной модели Кана, допускаются различные последовательности формирования токенов в компонентах и самих компонентов входных и выходных сообщений. Дисциплина FIFO строго упорядочивает компоненты входных сообщений по глубине буферов, а каждый из токенов занимает свое определенное ему место по ширине соответствующего буфера. Таким образом, сообщение - это двумерный массив, положение любого из токенов в котором однозначно определяется двумя параметрами - принадлежностью к некоторому компоненту и местом в этом компоненте сообщения. Заполнение же этого двумерного массива токенами осуществляется так, что последовательность, в которой токены передаются от процессов-производителей, заранее не известна. Мы уже отмечали, что программную поддержку сложной структуры разнотипных данных, их упорядочение для сохранения целостности сообщений при наличии нескольких буферов у процесса, альтернатив в развитии вычислений целесообразно считать внутренней функцией процесса, а не пытаться реализовать ее средствами системы программирования, например MPI. Системы вроде MPI задают интерфейс, который должен соблюдать пользователь при разработке параллельных программ. В этом смысле функции MPI можно рассматривать как внешние по отношению к процессам, обменивающимся сообщениями. Рассмотрим примеры поддержки буферного обмена сообщениями на языке, подобном С. [11]
G ( см. § 2.3) соответствует модели распределенных вычислений, в которой процессы взаимодействуют посредством асинхронного обмена сообщениями через буферы. Как уже говорилось, процессы могут иметь как входные, так и выходные либо только входные буферы. Семантически обе модели эквивалентны. Проблема блокировки, или реализуемости потоковых моделей, заключается в таком согласовании параметров буферов ( очередей сообщений), чтобы учесть все допустимые истории процессов программы, когда ни один из них не блокируется из-за отсутствия входных сообщений. Исследование реализуемости вычислений может быть сведено к процедуре разметки М - сети. Напомним, маркировка входных и выходных позиций вершин М - сети соответствует ширине буфера ( см. рис. 2.6 и рис. 2.7), а метки дуг позволяют получить число сообщений ( или глубину буфера), гарантирующее отсутствие зависаний программы при любых допустимых историях процессов. [12]