Смекни!
smekni.com

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

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

синхронные обмены по виртуальным линкам (Send, Recv, SendLink, RecvLink, Select);

асинхронные (точнее на GCel 1/64 псевдоасинхронные) обмены по виртуальным линкам (AInit, ASend, ARecv, ASync);

случайные синхронные обмены между транспьютерами (SendNode и RecieveNode);

для оптимальной работы транспьютеров с точки зрения обменов можно построить т.н. топологию (линия, круг, куб, гиперкуб, дерево и т.д.). Построить топологию можно с помощью стандартных процедур (MakeTorus, MakeTree и др.) и с помощью процедур построения топологии (newtop, addnewlink, freetop и др.) Последние позволяют динамически перестраивать и менять топологию;

можно запустить параллелизм (подчиненные параллельные ветви) на одном транспьютере (только в "С", но не в FORTRANе);

для реализации паралллельных алгоритмов используются обычные с точки зрения входного языка стандартные компиляторы C ANSY и FORTRAN-77, никаких дополнительных "параллельных" операторов они не содержат. Весь параллелизм достигается использованием специальных "параллельных" процедур, о некоторых таких процедурах уже говорилось выше (nomproc, nproc, execute, send, и т.д.).

На наш взгляд модель PARIX для программиста достаточно естественна. Программист имеет один общий листинг программы, что облегчает отладку. И необходимо лишь привыкнуть к некоторой специфике программистского мышления, которая заключается в том, что отдельные части программы, ветви условного оператора, например, могут исполняться не на одном процессоре, а на разных. Особо следует продумать стратегию ввода-вывода исходных данных и конечного результата. При этом надо помнить, что внешний ввод-вывод связан с работой D-Server'а, аппарата RPC и поэтому протекает довольно медленно (секунды или даже десятки секунд против миллисекунд для внутренних обменов между транспьютерами).

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

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


ЛИТЕРАТУРА

Корнеев В.В. Вычислительные системы. М. Гелиос АРВ, 2004.

Шнитман В.З. Современные высокопроизводительные компьютеры. http://www.citforum.ru.

Шнитман В.З., Кузнецов С.Д. Аппаратно-программные платформы корпоративных информационных систем. http://www.citforum.ru.

Ясинский Ф.Н., Чернышева Л.П. Многопроцессорные вычислительные системы. Архитектура. Математическое моделирование. Учебное пособие. Иваново, ИГЭУ, 1998 г. – 108 с.

Эндрюс Г.Р. Основы многопоточного, параллельного и распределенного программирования. – М.: Издательский дом «Вильямс», 2003. – 512 с.