Граф-схемное потоковое параллельное программирование (Граф-схемное потоковое параллельное программирование 2), страница 3
Описание файла
Файл "Граф-схемное потоковое параллельное программирование" внутри архива находится в папке "Граф-схемное потоковое параллельное программирование 2". PDF-файл из архива "Граф-схемное потоковое параллельное программирование 2", который расположен в категории "". Всё это находится в предмете "параллельные системы и параллельные вычисления" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "параллельные системы и параллельные вычисления" в общих файлах.
Просмотр PDF-файла онлайн
Текст 3 страницы из PDF
При этом все данные с данным тегом уничтожаются в буфернойпамяти КГВх с тем, чтобы исключить повторное занесение одного и того же процесса всписок готовых для выполнения процессов. Исключение делается для данных, заданных наустановочных ИС, они постоянно хранятся в буферной памяти соответствующей КГВх. Еслиоказывается, что в буферной памяти КГВх есть несколько данных с одним и тем же тегом, тоэти процессы различаются (см. также раздел 3) добавлением к их идентификаторупорядкового номера (который определяется порядком их занесения в буферы) в спискеготовых процессов.Различные теги идентифицируют различные данные, к которым одновременноприменяется ГСПП, точнее, подпрограммы, отнесенные к соответствующим КГВх еемодулей (таким образом реализуется параллелизм множества данных, см. пример 2 ГСПП вприложении).Не накладывается каких-либо ограничений на порядок проверки готовности модулейдля выполнения, в принципе, контроль готовности модулей для выполнения можетосуществляться одновременно при соответствующей реализации управляющих процессомвыполнения программ, осуществляющих запись данных в буферы и контроль их состояния(см.
далее).Также не фиксируется порядок выполнения готовых процессов, в принципе, всеготовые процессы ГСПП могут выполнятся одновременно.Считается, что модули, у которых КГВх не имеют входов (этим КГВх сопоставляютсяподпрограммы с пустым множеством параметров), готовы для выполнения по этим КГВх смомента инициализации выполнения ГСПП (см. раздел 3), но индуцируемые ими процессы7порождаются только один раз.
Также считается, что подпрограммы, сопоставленные КГВх спустым множеством входов, работают как генераторы, они либо сами вырабатывают данные,либо считывают их с некоторого носителя.2. При выполнении процесса в его подпрограмме могут использоваться специальныесистемные команды (реализуемые посредством обычного обращения к специальнымфункциям) WRITE (запись), READ (чтение), OUT (выход) – позволяющие осуществлятьмежмодульное взаимодействие, т.е. строить различные схемы взаимодействия по данныммежду подпрограммами различных модулей путем чтения данных из буферов или записиданных в буферы, сопоставляемые входам КГВх модулей.Команда WRITE имеет формат: WRITE(<номер КГВых>,<тег>,<списоквыходов><список переменных>), где список выходов есть перечисление номеров выходовКГВых, на которые передаются значения, присвоенные переменным в списке переменныхпри выполнении процесса-подпрограммыПорядок записи выходов и переменных в списках определяет соответствие междуними.При выполнении команды WRITE сохраняется контекст подпрограммы, точнеепроцесса, где она была инициализирована, а после ее выполнения процесс продолжает своевыполнение в прерванном контексте (обычный механизм возврата после вызова процедуры).Команда OUT имеет аналогичный формат аргументов, однако после ее выполненияпроцесс, в котором она возникла, считается завершенным и его контекст может бытьуничтожен.Команда READ имеет формат: READ (<номер КГВх>,<тег>,<список входов>,<списокпеременных>).При ее выполнении также сохраняется контекст процесса, а после ее завершенияпроцесс продолжает свое выполнение в старом контексте.
Команда READ позволяетпроцессу читать данные с указанным тегом из буферов, сопоставленных КГВх, по которойпроцесс был инициирован. Считываемые из перечисленных входов КГВх данные суказанным тегом присваиваются переменным в списке переменных команды READ(возвращаемые процессу значения). При выполнении команды READ, если запрашиваемыеданные еще не поступили в буферную память, ее выполнение задерживается, пока этиданные не поступят. Момент поступления контролируется при всякой записи данных вбуферную память соответствующей КГВх.
После выполнения команды READзапрашиваемые данные стираются из буферной памяти, происходит возвращение в контекстподпрограммы, где команда READ была индуцирована. Команда READ позволяет, вчастности, организовывать потоковозависимый режим работы запущенного процесса,последовательно считывая и обрабатывая данные, поступающие на входы КГВх, по которойон был инициирован (см.
пример 3 ГСПП в приложении 1).Отметим, что в описанной семантике выполнения ГСПП (и ее реализации)предполагается, что для хранения данных, поступающих по информационным связям междумодулями, буферы сопоставляются (организуются при выполнении) только для КГВхмодулей, а не КГВых, поскольку каждая информационная связь берущая начало в КГВыхлюбого модуля непременно приводит на вход одной из КГВх некоторого модуля ГСПП.Для более “тонкой” работы с поступающими на КГВх модулей данными, в частностиработы с сопоставляемыми им буферами, предусмотрена команда:CHECK(<номер КГВх>.<тег>,<список входов>,<переменная>)Команда CHECK проверяет наличие данных с указанными тегами на указанныхвходах КГВх.
Эта команда позволяет процессу самому принимать решение в выборе своихдействий в зависимости от наличия или отсутствия поступающих данных. Результатом еевыполнения является присваивание переменной общего количества данных с указаннымтегом на входах КГВх, номера которых перечислены в списке входов.3. Хотя команды WRITE и OUT позволяют сохранять или уничтожать контекствыполняемого процесса, ГСПП может быть организованна так, что выполнение ряда8процессов может осуществляться с забеганием вперед (с упреждением), а необходимостьрезультатов их выполнения может быть определена позже после выполнения другихпроцессов.
Рассмотрим пример фрагмента ГСПП на рис.5,M1M3M212M5M4Рис. 5. Пример фрагмента ГСППв котором модули М1 и М3 могут выполнятся с упреждением, однако вопрос о том, результатвыполнения какого из них потребуется, может быть решен только после выполнения модуляМ2, который осуществляет выход только по одной из своих КГВых. Если выход осуществленпо КГВых1, то результат выполнения модуля М3 не потребуется далее; аналогично непотребуется результат выполнения модуля М1, если выход из модуля М2 будетосуществляться по КГВых2.Для того, чтобы уничтожить процессы (удалить их контексты), которые оказываютсяненужными, в подпрограммах модулей может использоваться команда KILL – уничтожитьпроцесс. Ее форма: KILL(<список имен уничтожаемых процессов>), где в списке именуничтожаемых процессов указывается идентификатор процесса в виде четверки:<имя модуля>.<номер КГВх>.<имя подпрограммы>.<имя тега>(см.
введенную ранее идентификацию процесса)Имя тега в этом составном идентификаторе процесса необходимо в связи сосказанным выше об организации теговой обработки.4. Отметим еще ряд существенных элементов операционной семантики языка ГСПП,которые также важны при его реализации на параллельных системах.1) Порядок выполнения множества процессов, существующих на каждом шагевыполнения ГСПП, не существенен, по крайней мере, программист должен позаботится отом, чтобы порядок выполнения процессов не влиял на правильность выполнения ГСПП,Вместе с тем, планирование выполнения процессов может оказать существенное влияние насокращение времени выполнения ГСПП на параллельной системе.2) Определение готовых для выполнения процессов следует дисциплине FIFO:проверка на наличие в буферной памяти КГВх данных с одним и тем же тегом на всех еевходах осуществляется в порядке занесения этих данных в буферную память.Аналогично, при выполнении команды READ необходимые данные ищутся буфереданных в порядке занесения в нее данных; при выполнении команд WRITE и OUT данныезаписываются в буферную память в порядке поступления (в «хвост» очереди данных).3) Поскольку с одним и тем же буфером данных могут одновременно работатьнесколько процессов (чтения или записи), поэтому в реализации нужно обеспечить взаимноеисключение одновременных подобных действий.Примеры 1÷3, приведенные в приложении 1, иллюстрируют технологиюпрограммирования и описание различных форм параллелизма средствами языка ГСПП.В примере 1 присутствует только пространственный параллелизм, пример 2иллюстрирует использование тегирования при описании SIMD-параллелизма, в примере 3показано, как описывается потоковая обработка.2.
Инструментальная среда разработки ГСППИнструментальная среда предназначена для разработки граф-схемных параллельныхпрограмм и устроена таким образом, что программист может разделять аспекты припроектировании программы, последовательно переходя от чисто графического еепредставления к содержательному, используя многооконную организацию. Например, вотдельном окне для каждой КГВх модуля можно задать связанную с ней подпрограмму,отредактировать текст самой подпрограммы, а также автоматически проверить правильность9согласования типов входов КГВх с типами связанных с ними выходов КГВых. Такжепредусмотрена возможность переходить в новое окно в тот момент, когда пользовательдобавляет к ГС подсхему, с целью концентрирования основного внимания пользователя наразработке подсхемы.При необходимости пользователь может перейти к окну текстового представленияпрограммы, причем, поскольку существует взаимно-однозначный переход между текстовыми графическим представлением программы, любое изменение в графическом представленииприводит к соответствующим изменениям в текстовом представлении и наоборот.Основные блоки инструментальной среды представлены на рис.