Параллельные вычисления Сергей Васильевич Федоров,
DESCRIPTION
Параллельные вычисления Сергей Васильевич Федоров,. - PowerPoint PPT PresentationTRANSCRIPT
Лекция № 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
разные разделители директорий “/” и “\” имена файлов - желательно без пробеловвозможно – разная форма флагов компилятораи точно – разный набор флагов для линковки модулей разных типов(в том числе разные расширения для загружаемых и промежуточных файлов)
Компиляция и запуск программы на кластере
#!/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– полный путь для вызова одноименных команд; поиск в $Path
ls; 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 test chown и chgrp – смена владельца-пользователя и владельца-группы файла
Компиляция и запуск программы на кластереИскусство программирования на языке сценариев командной оболочки.html
Самые распространенные внешние команды
find dir – поиск в файловой системе, начиная с каталога dir
grep <рег_выражение> file1… – поиск в файлах вхождений регулярного выражения рег_выражение …
Компиляция и запуск программы на кластереИскусство программирования на языке сценариев командной оболочки.html
Синтаксис переменных Bash:
Переменные Bash не имеют типа:v=2; let “v+=2 ”; echo “v=$v” # => (v=4): let - команда арифметики
Специальные типы переменных:локальные переменные, переменные окружения, позиционные параметры:
$1, $2, ..$9, $#, $@ - аргументы по номеру, число и все аргументы сценария
$var, ${var} – прямые ссылки на переменную var
args=$# ; lastarg=${!args} – косвенная ссылка на последний аргумент
echo ${username-`whoami`} – параметр со значением по умолчанию
“\n”, “\t”, $’\033’ - способы экранирования символов, специальные символы
Компиляция и запуск программы на кластереИскусство программирования на языке сценариев командной оболочки.html
Синтаксис команд Bash:
Конструкции проверки условий: (код возврата comm: ‘0’ -истина)
if comm; then tComm else fComm fi[ -z ‘name’ ]; test –z ‘name’ : test - команда проверки строк
[ -n ‘name’ ] && echo ‘Info: variable $name is defined’ – условная печать
if [ -z ‘name’ ]; then tComm # условная конструкция test fi[[ $a == z* ]] - команда test с расширенными возможностями сравнения
(($var+7 )) Арифметические выражения возвращающие ‘0’ (истина) если само выражение не ноль (противоположно [[] ])
if [ "$a" -le "$b" ]; (($var <= 7 )) операции сравнения (строковые и ариф-е)
Компиляция и запуск программы на кластереИскусство программирования на языке сценариев командной оболочки.html