100 likes | 355 Views
Параллельные вычисления Сергей Васильевич Федоров,.
E N D
Параллельные вычисления Сергей Васильевич Федоров, Лекция № 4Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SPMD модель параллельного программирования. 3. Группа процессов в коммуникаторе. 4. Передача/прием сообщений между отдельными процессами
Компиляция и запуск программы на кластере make– технология управления проектом (и для Windows) (см. public/GNU Make Программа управления компиляцией.html)1. Автоматизирует, и оптимизирует компиляцию проектов2. Позволяет обходиться БЕЗ IDE – интегрированной графической облочки3. Позволяет легко программировать, и в дальнейшем использовать любые рутинные операции, например: выборочная очистка, копирование, сохранение (Backup), передача по сети, в т.ч. с посылкой почты Bash -язык сценариев командной оболочки (будет лабор-я) (см. public/Искусство программирования на языке сценариев командной оболочки.html) 1. Единственный способ выполнения любых команд в текстовом режиме 2. Простая поддержка удаленного использования и администрирования 3. Простейший скриптовый язык, где большая часть простых задач по управлению файловой системой, и процессами уже реализована.Как и Linux,используется практически во всех масштабируемых сетях,В том числе в научных Grid – сетях,Непригоден для задач с большими массивами, с длительной обработкой файлов
Компиляция и запуск программы на кластере make – технология управления проектом (см. public/GNU Make Программа управления компиляцией.html) 1.Две разновидности (flavors)переменных, и ссылка с заменойx = N.o T.c x = N.o T.c x := N.o T.c y = $(x) y = $(x) y := $(x) x = N.a T.c x = N.a T.c x := N.a T.c z = $(y) z = $(y: %.a=%.o) z = $(y) (z N.a T.c) (z N.o T.c) (z N.o T.c) 2.явные правила (перед командами обязателен \TAB, табуляция)name.exe : fname1.obj fname2.obj link --o:$@ $^# $^ заменяется на списокпререквизитов # $@ заменяется на цель (предопределенный макрос) 3. неявные правила, использование шаблонов (% -любое имя) %.obj %.mod : %.f90 %.fi %.fd ifort -c -o:$@ $<# $< первыйпререквизит из списка
Компиляция и запуск программы на кластере make – технология управления проектом (см. public/GNU Make Программа управления компиляцией.html) 4.Множественные цели проекта, all – начальная цель по умолчанию all : echo warn # повтор цели приводит к накоплению пререквизитовall : name.lib name.exe # порядок важен !clean : # общепринятая цель для перекомпиляции del *.obj # команда оболочки (rmв Linux)echo :# цель для отладки @echo name = $(name)# команда оболочки 5. Трудности одновременного использования в Linuxи Windowsразные разделители директорий “/” и “\”имена файлов - желательно без пробеловвозможно – разная форма флагов компилятораи точно – разный набор флагов для линковки модулей разных типов(в том числе разные расширения для загружаемых и промежуточных файлов)
Компиляция и запуск программы на кластере Искусство программирования на языке сценариев командной оболочки.html #!/usr/bin/bash - командная оболочка Linux (CygWin под Windows) Внутренние команды Bash:echo "внутренняя команда \"echo\".“/bin/echo “Внешняя команда /bin/echo.“read; printf – интерактивный Вввод и Вывод на консольread var< commands.sh; printf var > text.log – переопредление ввода/выводаcd dir, pwd – переход в каталог, текущий каталогpushd; popd; dirs – работа со стеком последних каталоговset; unset – установка и сброс внутренних переменных Bashexport – установка переменных, доступных родительским облочкамsource file.sh; . file.sh– запуск сценария из файла в той же оболочкеexec file.sh – замещение текущего сценария новым (дочерним)(последняя команда тек.сценария, например перезапуск после засыпания)
Компиляция и запуск программы на кластере Искусство программирования на языке сценариев командной оболочки.html Внешние команды Bash вLinux (доступны под Windows в C:\usr\bin):/bin/echo– полный путь для вызова одноименных команд; поиск в $Pathls; ls -R – вывод "списка" файлов, в том числе рекурсивноcat file1 file2 > file; tac …–выводфайлов в прямом и обратном порядкеcp file1 file2; mv; rm – копирование, перемещение и удаление файловmkdir; rmdir – создание и удаление каталогов (удаляет только пустой)ln; ln -s –создает жесткую и мягкую (soft)ссылку (отличаются при уд-и) Позволяет задавать несколько имен одному и тому же файлуchmod – Изменяет атрибуты доступа (rwx) к файлу (владелец,группа,все)chmod +x file - доступен для исполнения всем пользователям,chmod u+s file -для всех - привилегии владельца файла,chmod 644 file –право на чтение/запись–владельцу, на чтение–группе, всем(rw_,r__,r__) =>(110,100,100) =>(644) – восьмеричное число (see menu Файл/Права в Midnight Commander)
Компиляция и запуск программы на кластере Искусство программирования на языке сценариев командной оболочки.html Смена прав доступа к файлу: chmod [u g o a][+ - =][r w x] file1…u– смена права доступа для пользователя, g – для группы, o – для других пользователей, a – для всех трех категорий. +– добавление соответствующего права, -– удаление, а = – присвоениеchmod g+w testchown и chgrp – смена владельца-пользователя и владельца-группы файла
Компиляция и запуск программы на кластере Искусство программирования на языке сценариев командной оболочки.html Самые распространенные внешние командыfind dir – поиск в файловой системе, начиная с каталога dirgrep <рег_выражение> file1…– поиск в файлах вхождений регулярного выражения рег_выражение…
Компиляция и запуск программы на кластере Искусство программирования на языке сценариев командной оболочки.html Синтаксис переменных Bash:Переменные Bash не имеют типа:v=2; let “v+=2 ”; echo “v=$v” # => (v=4):let - командаарифметикиСпециальные типы переменных:локальные переменные, переменные окружения, позиционные параметры:$1, $2, ..$9, $#, $@ - аргументы по номеру, число и все аргументы сценария $var, ${var} – прямые ссылки на переменную varargs=$# ;lastarg=${!args} – косвенная ссылка на последний аргументecho ${username-`whoami`} – параметр со значением по умолчанию“\n”, “\t”, $’\033’ - способы экранирования символов, специальные символы
Компиляция и запуск программы на кластере Искусство программирования на языке сценариев командной оболочки.html Синтаксис команд Bash:Конструкции проверки условий: (код возврата comm: ‘0’ -истина)if comm; then tCommelsefCommfi[ -z ‘name’ ]; test –z ‘name’ : test - командапроверки строк[ -n ‘name’ ] && echo ‘Info: variable $name is defined’ – условная печатьif [ -z ‘name’ ]; then tComm# условная конструкция testfi[[ $a == z* ]] - команда test с расширенными возможностями сравнения (($var+7 ))Арифметические выражения возвращающие ‘0’ (истина) если само выражение не ноль (противоположно [[] ])if [ "$a" -le "$b" ];(($var <= 7 )) операции сравнения (строковые и ариф-е)