39001_lecture4

advertisement
Параллельные вычисления
Сергей Васильевич Федоров,
Лекция № 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
y = $(x)
x = N.a T.c
z = $(y)
(z  N.a T.c)
x = N.o T.c
y = $(x)
x = N.a T.c
z = $(y: %.a=%.o)
(z  N.o T.c)
x := N.o T.c
y := $(x)
x := N.a T.c
z = $(y)
(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
echo :
# общепринятая цель для перекомпиляции
# команда оболочки (rm в Linux)
# цель для отладки
@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 – установка и сброс внутренних переменных Bash
export – установка переменных, доступных родительским облочкам
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 )) операции сравнения (строковые и ариф-е)
Download