Смекни!
smekni.com

По курсу впкс «Ввод-вывод в транспьютере. Передача данных по линку» (стр. 3 из 4)

На физическом уровне каждый транспьютер без использования С004 может быть максимально связан только с 4-мя другими транспьютерами. На логическом уровне, благодаря использованию С004, при соответствующей программной настройке, возможно иметь практически неограниченное число виртуальных логических каналов. В GCel на каждом кластере имеется 4 х С004, и каждый, из 4-х физических линков транспьютера, выходит на разные С004. С004 поддерживает скорость 20 Мбит/сек.

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

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

производства начальных установок для куба (процедура reset);

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

конфигурирование связей между узлами через загрузку канальных переключателей (C004) на каждом кластере.

Если система имеет несколько кубов (максимально 256), то управляющие процессорные узлы образуют управляющую сеть.

Ввод-вывод на GC осуществляется с каждого транспьютерного узла по обычным линкам. В рамках PARIX определены конкретные логические линки для ввода-вывода на каждом узле. Информация ввода-вывода передается между GC и внешней машиной по специальным линиям связи, называемым ENTRY USER или просто ENTRY. Количество таких ENTRY может быть различным и определяется в частности специальным интерфейсом, устанавливаемым на материнскую плату внешней машины. В нашем случае, мы имеем интерфейс BBK-S4, который имеет 3 ENTRY (1,2,3) и еще одну линию (0), связывающую внешнюю машину с управляющим узлом GC. Ниже мы увидим, что количество ENTRY для PARIX определяет количество одновременно решаемых задач на GC. По каналам ENTRY осуществляются операции ввода-вывода между GC и периферийными устройствами рабочих станций ЛВС ВЦ РАН.

В заключении этого раздела несколько слов о производительности вычислительной системы GCel 1/64. Физические характеристики GCel 1/64 следующие. Максимальная производительность каждого процессорного узла с транспьютером T805(30Mгц) оценивается разработчиком в 4.3 MFLOPS и 30 MIPS, максимальная скорость обмена между узлами по линкам 20Mбит/сек (2.35 Mбайт/сек). Это значит, что максимальная производительность для GCel 1/64 может быть 0.28 GFLOPS и 1.9 GMIPS. Реальная производительность GCel 1/64, естественно, меньше, она зависит от характера конкретной задачи, от качества распараллеливания данного алгоритма, от объема и характера обменов по линкам, от качества системного программного обеспечения.

PARIX -- аббревиатура от PARallel unIX. Это системное программное обеспечение, построенное на базе стандартного программного обеспечения внешней машины (в нашем случае это Solaris 1.1) и дополненное программами, обеспечивающими функционирование GCel.

PARIX -- распределенная программная система. Часть программ исполняется на внешней машине (SPARCstation 2), другая -- в транспьютерных узлах.

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

Для ЛВС ВЦ РАН мы имеем 2 компилятора голландской фирмы ACE EXPERT -- FORTRAN-77 и C ANSY. Компиляторы на выходе порождают объектный код в соответствии с промышленным стандартом COFF/T800.

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

программы обмена по линкам;

другие программы, использующие модель программирования PARIX;

стандартные численные подпрограммы.

Иными словами, для каждого транспьютерного узла на внешней машине подготавливается к исполнению программа в кодах транспьютера, содержащая коды алгоритма пользователя и коды тех программ из USER RUNTIME LIBRARY, которые используются данным алгоритмом.

Программа, исполняемая в процессорном узле, может запросить процедуру ввода-вывода (диск, экран, принтер). Эти процедуры реализуются через стандартный аппарат UNIXа -- RPC, о котором уже подробно говорилось выше. Процессорный узел (транспьютер) выполняет роль клиента, а в качестве сервера исполняется специальный процесс на внешней машине -- т.н. D-Server. На внешней машине может работать несколько D-Server'ов -- максимально столько, сколько мы имеем USER ENTRY (в нашем случае -- 3). Процесс "D-Server" на внешней машине образуется, когда пользователь выдает команду RUN. Внешняя машина от D-Server'а через управляющую сеть (в нашем случае, как говорилось выше, мы имеем один управляющий узел), передавая информацию через ENTRY USER 0, производит:

инсталляцию пользовательской партиции;

загрузку исходного кода в каждый узел партиции;

инициализацию пользовательских процессов на каждом процессорном узле.

В дальнейшем D-Server вступает в работу, когда через механизм RPC ему передается заказ на ввод-вывод (внешний) или возникают аварийные ситуации (ошибки в программах, нарушение внешней среды и т.д.). D-Server при исполнении соответствующих функций может порождать подчиненные процессы на внешней машине, которые в свою очередь могут быть процессами-клиентами по отношению к процессам-серверам на других машинах сети. Следует обратить внимание, что обмены по линкам между транспьютерными узлами реализуются непосредственно командами синхронных обменов транспьютера и D-Server не участвует в их реализации. Это способствует повышению общей эффективности решения задачи. То есть транспьютеры между собой обмениваются не средствами UNIX'а, а непосредственно с помощью команд обмена транспьютера Т805. D-Server в режиме RPC "разговаривает" не с самими процессами задачи, а с ядрами (kernel) PARIX'а, которые загружены в каждый процессорный узел.

Следует отметить, что архитектуры PARSYTEC и PARIX появились в реальной практике пользователей, когда уже был некоторый опыт использования транспьютеров INMOS в других архитектурах, например, вместе с обычными персональными компьютерами (PC). Для таких архитектур получили распространение свои модели программирования (Hellios с языком спецификаций CDL, MEIKOS, MACH, LINDA, EXPRESS и др.). Были разработаны специальные языки программирования для параллельной обработки (например, OCCAM).

Фирма PARSYTEC на GCel в принципе имеет возможность для поддержки большинства из сред (environment) ранних архитектур. Явно поддерживается CDL, в отношении других сред требуется программная системная настройка. Однако фирма PARSYTEC в большей мере рекомендует использование своей среды -- т.н. модель PARIX, которая предполагает программирование на языках высокого уровня (без OCCAM'а) для некоторой виртуальной среды с соблюдением определенных правил. Представители фирмы PARSYTEC утверждают, что модель PARIX станет стандартом при использовании параллельной обработки для процессов с локальной памятью.

Приведем краткое описание модели PARIX. Фактически это описание дает пользователю, разработчику программ, использующему PARSYTEC GCel 1/64, методику разработки своих параллельных алгоритмов. Следует иметь ввиду следующие особенности модели PARIX:

разрабатываемый параллельный алгоритм будет исполняться на множестве транспьютеров, называемом партицией (здесь под термином транспьютер понимается не физический процессор, как элемент транспьютерного узла с 4-мя линками, а некоторый виртуальный транспьютер с практически неограниченным числом линков). Для GCel 1/64 может быть партиция из 16 транспьютеров -- p16 или lowerleft, или lowerright, партиция из 32 транспьютеров -- p32 или upperhalf, или lowerhalf, партиция из 64 транспьютеров -- p64 или GCel, или all; в GCel 1/64 нельзя использовать партиции другой длины (кроме 16, 32, 64);

программист имеет возможность писать универсальные программы в смысле количества используемых транспьютеров (16, 32, 64), для этих целей есть стандартная процедура NPROC (), выдающая число используемых транспьютеров;

каждый транспьютер партиции имеет свою собственную память (4 Мбайта), реальный объем памяти в значительной мере зависит от числа используемых виртуальных линков;

в память каждого транспьютера будет загружена одна и та же программа. Это, пожалуй, главная особенность модели PARIX. Есть различные способы заставить исполнять различные программы на процессорах партиции при таком способе загрузки кода. Для этих целей имеются специальные процедуры: NOMPROC (), дающая ответ в виде номера транспьютера (для партиции длиной N -- номера транспьютеров от 0 до N-1), на котором выполняется данная программа. Следовательно, можно используя обычный условный оператор, реализовать работу разных ветвей программы на разных транспьютерах. С помощью NOMPOC (), а также процедуры EXECUTE, динамически загружающей предварительно скомпилированную программу, можно построить собственный план загрузки каждого узла;

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