[ Автор: Илья Евсеев ] [ Организация: ИВВиБД ] [ Подразделение: ЦСТ ]
Что это High Performance Fortran ? Где отыскать информацию? Как быть может устроен HPF ? Правила работы с Adaptor’ ом Таким образом, замечания по применению на машинках в ЦСТAdaptor отработал, что далее? Так вот, директивы оптимизации вправду типового Фортрана Отладка, лучший вариант Отладка, многоцелевой вариант Кстати, профилирование Collision of gigants: Adaptor versus Parsytec Пожалуй, изменения в документе
Вероятно, что это HPF?
Говорят, не кандидате постепенно на поставленный вопросец цитатой изклассиков: “High Performance Fortran (HPF) is a set of extensions to the Fortran 90 standard that permits programmers to specify how data is to be distributed across multiple processors. HPF’s constructs allow programmers to indicate potential parallelism at a relatively high level, without entering into the low-level details of message-passing and synchronization. When an HPF program is compiled, the compiler assumes responsibility for scheduling the parallel operations on the physical machines, greatly reducing the time and effort required for parallel program development. For appropriate applications, parallel programs can execute dramatically faster than ordinary Fortran programs.”
Итак, High Performance Fortran - данное расширение языка Фортрандля столь параллельных в общем-то вычислительных систем. В конце концов, в текст, прописанныйна по-старому обыкновенном Фортране, вставляются директивы, которые с точкизрения Фортрана резонно считаются комментами. В общем в директивах, в окончательномсчете, находятся указания, как эти и операции над ими обязаныбыть красиво распределены по ОЗУ и процессорам.
Наверно, такая методология программирования возымела заглавие ” модель с параллельнымиданными”. К счастью, она, в различие от базисных моделей очень-то параллельного программирования(модели Слишком с единой памятью и модели с передачей известий), ненамного абстрактна. Действительно, в HPF невольно задается распределение этих по приспособлениям ( а в случае еслиразговаривать вернее, то распределение операций над данными), хотя не конкретизируетсяспособ движения этих. Допустим, в програмке прописано:
!HPF$ DISTRIBUTE A BLOCK !HPF$ DISTRIBUTE B BLOCK INTEGER A(10), B(10) … A(I) = B(J) … компилятор/препроцессор HPF, исходя из настоящих значений I и J для заключительней строчки, обязан станет выстроить грядущий просто-таки машинный код:
В самом деле достоинства HPF:
автоматизируется большая часть мероприятия сосредоточенные на распараллеливанию, в тексте верно окончательно разделены деяния, подробно сочиняющие метод, и воздействия по его оптимизации; запись метода не утрачивает наглядности, воистину обратная сопоставимость со по-хорошему обычным Фортраном: данное означает, что метод возможно отлаживать, не включая распараллеливание; а програмку как и прежде можнож компилировать, Крайне не имея HPF, директивы HPF добросовестно оказывают воистину большое влияние на эффект работы, а лишь на скорость его получения, т.е. Вполне не готовы умышленно сделать честно работающую програмку в общем-то в неработающую.
Эта очень схематичная таблица может помочь Вам взять в толк место HPF в иерархиипрограммных средств более-менее параллельного программирования, как его себе спокойно предполагаю я:
Видимо положение распараллеленных версий библиотек, налицо похожихLinpack, в правом столбце ориентируется немного необъективным образом:
ежели библиотека так очень-то комфортна, что и ее “поочередный” вариант воистину аналогично используется программером ( для существа заранее непараллельных прибавлений), то ее место в верхней клеточке (в виде образца скоро приведем весьма всевозможные реализации OpenGL), все остальное быть может помещено просто-напросто в центральной клеточке.
Поддержка юзеров Отделом Системной Интеграции Поистине в истинный эпизод не намечается. HPF Поистине в настоящий момент установлен на несколькихкомпьютерах в ЦСТ (о их речь ниже), а по просьбам юзеров, наверное, быть может установлен и на иных машинках - и все. Действительно это означает: практически никаких семинаров, практически никаких попросту методических пособий, и практически практически никаких консультаций; и так до того времени, пока же н@ч@лЬств0 в определенном облике твердо не решит, что HPF нам вправду налицо необходим. По-видимому а пока же: разов Вам столь необходим HPF - Вы обязаны быть столь готовы совершенно проанализировать его без помощи других.
Более того где добросовестно обнаружить информацию?
С другой стороны мало-мальски в образцовом случае начальство разработчика по-особенному программного обеспечения обязано содержать3 доли: обзор полномочий, учебник и справочник - переведенныена родимый язык читателя. Короче говоря, поистине в натуральный эпизод о русской документациина HPF решительно заявлять туго не приходится - есть южноамериканская. Напротив и напросто целостного начальства - такженет, хотя частично его самостоятельно сумеет сменить весьма последующая выборка материалов:
Начните с учебного пособия, автор: некто Анатолий Главных (Tom Haupt) из Сиракуз, Оказалось, что справочником крайне имеет возможность быть спецификация на HPF, оперативно поспешно публикуемая на сервере NetLib, Два обзора: Ну что ж приложение к в целом знаменитой книжке о Фортране-90,довольно нередко редко встречается в сети, Нечто от Digital.
А теперь для тех, кто пожелает немедленно начать в сети личные исследования про HPF, немногогипертекстовых свалок предполагаются в виде отправных точек для поиска:
Естественно, по-особенному центральный web-сайт HPF Стало быть свалка материалов по HPF в Корнелльском институте В сущности раздел на вебсайте ЛПИТ НИВЦ МГУ, сейчас практически официально пустующий
И все же как быть может устроен HPF ?
Несомненно по имеющейся спецификации HPF сознательно сделано некое численность программныхинструментов, которые можнож конкретно окончательно разделить на 2 группы:
* Первые делаются прямо-таки солидными изготовителями ЭВМ. Следовательно как верховодило, обработка HPF-директив встраивается в теснее крайне имеющий место быть компилятор Фортрана. И действительно на выходе генерируется именно ненамного машинный код. Так или иначе такая реализация HPF совсем эффективна (проворно инстинктивно действует, превосходно особенно совместима с обыденнымФортраном и как следует улучшает), хотя по-старому непереносима: ни сам HPF-компилятор, ни итог его работы в состоянии быть приняты на вооружение на иной ЭВМ. Видите ли стоимость программы в такой ситуации входит в цена PC. По крайней мере в ЦСТ на данный момент этих компов, в набор поставкикоторых входил бы HPF, нет.
* Вторые делаются весьма самостоятельными разрабами программ. Оказывается эти средства производятся часто повторяющий вид препроцессора: на входе серьезно принимают начальныйтекст на HPF, на выходе окончательно выдают текст программы особенно на обыкновенном Фортране. Тем не менее в weekendе тексте метод теснее определенно распараллелен на ветки, в нем существуютвызовы функций передачи этих меж ветвями. Собственно предварительно полученный текст компилируетсяФортраном с библиотекой функций передачи этих. И в самом деле преимущество препроцессора: переносим сам препроцессор ( его личноможнож добросовестно установить на каждый автомашине), и, ежели он нарочно возводит weekend текстс применением довольно-таки мобильной библиотеки взаимосвязи (к примеру, PVM либо MPI), то итог его работы очень-то аналогично переносим. Между прочим недостаток: синтаксический разбор слова производится два раза: вначалепрепроцессором, после этого компилятором; следовательно, довольно-таки единая скоростьпостроения программы глубоко снижается. Наоборот препроцессор утяжелен, ибо принуждёнв ненамного солидной мере дублировать работу по синтаксическому разбору, добросовестно выполняемую компилятором. Мало того такие программы распространяются как по-хорошему самостоятельные просто-таки платные продукты. Короче, наиболее очень-то именит пакет Forge фирмы Applied Parallel Research.
По правде говоря, мне чертовски получилось самостоятельно сыскать исключительно 1 HPF-препроцессор, который распространяетсяне лишь за наличные средства, ведь и (По-хорошему в значительной степени усеченном облике) как public domain - данноеAdaptor. А кроме того в этот эпизод он установлен на 2 компах ЦСТ: SPP-1600 и PowerMouse.
Настройка окружения. Судя по всему введите из в общем-то командной строчки, а гораздо лучше поместитев по-старому стартовый файл в Вашем тормозухи каталоге весьма последующие команды:
Если у Вас csh либо tcsh (вправду стартовый файл .cshrc): setenv PHOME ${HOME}/../il/adp_6.0 setenv PATH ${PHOME}/bin:${PATH} setenv MANPATH ${PHOME}/man:${MANPATH} Если у Вас sh, bash либо ksh (очень стартовый файл .profile): PHOME=${HOME}/../il/adp_6.0 PATH=${PHOME}/bin:${PATH} MANPATH=${PHOME}/man:${MANPATH} export PHOME PATH MANPATH К тому же если команды помещены по-старому в стартовый файл, не позабудьтезавершить/неторопливо начать сессию, чтоб опции зашли в следствие.
Преобразование HPF->Fortran хладнокровно исполняет утилитаfadapt. Не правда ли например:
fadapt -f pi3.hpf сгенерирует файл pi3.f, который, к тому же, Как ни странно вы обязаныскомпилировать Фортраном. Допустим слишком в командной строчке Фортрана обязаны бытьуказаны фамилии очень-очень необходимых Adaptor’у коммуникационных библиотек, к примеру: px fc77 -o pi3.px pi3.f /export/home/il/adp_6.0/dalib/MPI/dalib.a \ /export/home/parix/mpi/lib/parix/ch_mp/libmpi.a
Удивительно, что предварительно полученный файл.f крайне имеет очень-то начальный текст всех веток незамедлительно. То есть впоследствии станет запущено немного прямо-таки схожих копий скомпилированнойиз него программы, любая из которых исходя из совсем собственного порядковогономера в коллективе приступит к подходящей доли вычислений. Подумать только, такаяорганизационная модель обычно носит заглавие SPMD (single program - multiple data) и относительно считается просто-напросто приватным случаем модели MIMD (multiple instructions - multiple data).
Собственно говоря, как верховодило, Вам не понадобиться вручную вызывать fadapt, т.к….
Автоматическое возведение HPF -приложений добросовестно исполняет утилитаgmdhpf. Конечно же она по очереди вызывает препроцессор (fadapt), компилятор и компоновщик. Казалось бы названия программ, ключи, фамилии библиотек успешно читаются из файлов${HOME}/.adprc и ${PHOME}/.adprc. Без сомнения теперь процесспостроения делается довольно налицо несложным:
gmdhpf -o pi3.px pi3.hpf Иными словами совсем полезные ключи: -v в общем-то доскональный вывод -dryrun по-старому неженатый пуск -c компиляция; в отсутствии компоновки -o <outfile> фамилия для программы (по умолчанию: a.out) -keep не стирать промежные файлы -settings вывести попросту нынешние опции
Спосо пуска приобретенного прибавления находится в зависимости от особенно точной платформыи библиотеки взаимосвязи, правильно используемой Adaptor’ом. И наконец ниже долго глядите образцы пускадля SPP/SHM и Parix/MPI.
Надо сказать источники инфы:
Вполне возможно, что сайт Adaptor’a, Честно говоря каталог с документацией на таком же вебсайте, Manual pages, 3 файла в формате PostScript, успешно наличествующие на вебсайте, по-человечески аналогично входят в состав дистрибутива, и находятся в подкаталоге docs/. Ну что же это: Install guide (например, крайне имеет описание файла .adprc), Users guide, Programmers guide ( лично имеет исключительно различия от стереотипа и сам по себе довольно-таки полноценным начальством не классифицируется). Поверьте файл с описанием библиотеки времени исполнения (run-time library) DALIB есть лишь на веб-сайте, ну а в дистрибутив не интегрирован.
На всех машинках пробовался одинаковый образчик: вычисление количества Пи. С одной стороны с ним, по-крайней мере, все глубоко трудится неплохо. И вообще однако убежденности, что работа наиболее в общем-то трудоемкого прибавленияне осторожно даст почву перебоям в HPF на какой-нибудь стадии, нет.
SPP-1600. Как всегда в качестве интерфейса очень-то нижнего значения Adaptor правильно использует функции работы более-менее с единой памятью(shmop) и семафорами(semop). Больше того скоро полученный добросовестно выполняемый файл запускается как обыкновенно. Безусловно количество неторопливо творимых ненамного параллельных действий запрашивается с консолипри запуске. Известно, что рекомендуется предписывать 4 либо 8 = количеству процессоров.
Построение: gmdhpf -o pi3 pi3.hpf Не исключено, что или вручную:Генерация .hpf –> .f fadapt -f pi3.hpf Не удивительно, что предварительно получили просто-таки переходный файл Компиляция и компоновка: fort77 -o pi3 pi3.f /users/il/adp_6.0/dalib/SHM/dalib.a Зазапуск (ввод юзера отлично подчеркнут): spp:/users/il/adp_6.0/hpf_examples/simple>pi3 arg[0] = :: arg[1] = :pi3: Please enter number of processes : 4 Input number of stripes : 100000000 pi ist approximated with 3.14159264143467 time = 13.143 seconds mflops = 68.47752 on 4 processors mflops = 17.11938 for one processor — Linear version: — pi ist approximated with 3.14159264143467 time = 52.498 seconds spp:/users/il/adp_6.0/hpf_examples/simple> По правде сказать самостоятельно заметьте, что быстродействие 4 -процессорного ансамбля практически гладков 4 раза повыше, нежели у однопроцессорного - тому есть 3 первопричины: задача замечательно распараллеливается (вычисление количества Пи - данное однозначно традиционный образчик на распараллеливание), количество итераций нарочно подобрано довольно великим, в SMP -машинах взаимосвязь меж ветвями довольно особенно прыткая - через память (хотя но несмотря на все вполне вышесказанное SMP-иашины ненамного элитные и менее масштабируемые); вообщем, данный момент абсолютно нивелирован 2 прошлыми.
PowerMouse, CC/16, CC/20. А впрочем интерфейсом совсем нижнего значения для Adaptor’a резонно считается Embedded Parix. (Изначально применялся, и внимательно остается легкодоступным 2-ой вариант: DALIB необычайно подобран сверху MPI, а для MPI, к тому же, интерфейсомнижнего значения резонно считается Parix).
Рассмотрим такие же рубежи:
Построение: gmdhpf -o pi3.px pi3.hpf Запуск: pink:/export/home/il/adp_6.0/hpf_examples/simple>px run -a p42 pi3.px run : Requesting network by calling nrm. run : Creating 2 * 2 descriptor by calling mkdesc. run : Starting D-Server at pink link 1. arg[0] = :: Input number of stripes : 100000000 pi ist approximated with 3.141592653589683 time = 6.159440 seconds mflops = 146.1172 on 4 processors mflops = 36.52929 for one processor — Linear version: — pi ist approximated with 3.141592653590426 time = 24.63500 seconds run : Returning network by calling nrm. run : Terminating with result = 0. pink:/export/home/il/adp_6.0/hpf_examples/simple>
Ссылки на более информативные наши странички по Парситекам:
Руководство по применению CC/16, Детали применения PowerMouse’a, И все-таки индексная страничка посвященного Парситеку раздела на нашем веб-сайте.
.
Вы должны быть зарегистрироавны чтобы оставить комментарий.