Параллельные вычисления Сергей Васильевич Федоров,

10
Лекция № 4 Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SPMD модель параллельного программирования. 3. Группа процессов в коммуникаторе. 4. Передача/прием сообщений между отдельными процессами Параллельные вычисления Сергей Васильевич Федоров,

Upload: chiko

Post on 05-Jan-2016

74 views

Category:

Documents


0 download

DESCRIPTION

Параллельные вычисления Сергей Васильевич Федоров,. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Параллельные вычисления Сергей Васильевич Федоров,

Лекция № 4 Множественное распараллеливание на Linux кластере с помощью библиотеки MPI

1. Компиляция и запуск программы на кластере. 2. SPMD модель параллельного программирования. 3. Группа процессов в коммуникаторе. 4. Передача/прием сообщений между отдельными процессами

Параллельные вычисленияСергей Васильевич Федоров,

Page 2: Параллельные вычисления Сергей Васильевич Федоров,

make – технология управления проектом (и для Windows) (см. public/GNU Make Программа управления компиляцией.html)

1. Автоматизирует, и оптимизирует компиляцию проектов2. Позволяет обходиться БЕЗ IDE – интегрированной графической облочки3. Позволяет легко программировать, и в дальнейшем использовать любые рутинные операции, например: выборочная очистка, копирование, сохранение (Backup), передача по сети, в т.ч. с посылкой почты

Компиляция и запуск программы на кластере

Bash - язык сценариев командной оболочки (будет лабор-я) (см. public/Искусство программирования на языке сценариев командной оболочки.html)

1. Единственный способ выполнения любых команд в текстовом режиме

2. Простая поддержка удаленного использования и администрирования

3. Простейший скриптовый язык, где большая часть простых задач по управлению файловой системой, и процессами уже реализована.Как и Linux, используется практически во всех масштабируемых сетях,В том числе в научных Grid – сетях,Непригоден для задач с большими массивами, с длительной обработкой файлов

Page 3: Параллельные вычисления Сергей Васильевич Федоров,

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:$@ $< # $< первый пререквизит из списка

Компиляция и запуск программы на кластере

Page 4: Параллельные вычисления Сергей Васильевич Федоров,

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

разные разделители директорий “/” и “\” имена файлов - желательно без пробеловвозможно – разная форма флагов компилятораи точно – разный набор флагов для линковки модулей разных типов(в том числе разные расширения для загружаемых и промежуточных файлов)

Компиляция и запуск программы на кластере

Page 5: Параллельные вычисления Сергей Васильевич Федоров,

#!/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

Page 6: Параллельные вычисления Сергей Васильевич Федоров,

Внешние команды 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

Page 7: Параллельные вычисления Сергей Васильевич Федоров,

Смена прав доступа к файлу: chmod [u g o a][+ - =][r w x] file1…u – смена права доступа для пользователя, g – для группы, o – для других пользователей,

a – для всех трех категорий. + – добавление соответствующего права, - – удаление, а = – присвоение chmod g+w test chown и chgrp – смена владельца-пользователя и владельца-группы файла

Компиляция и запуск программы на кластереИскусство программирования на языке сценариев командной оболочки.html

Page 8: Параллельные вычисления Сергей Васильевич Федоров,

Самые распространенные внешние команды

find dir – поиск в файловой системе, начиная с каталога dir

grep <рег_выражение> file1… – поиск в файлах вхождений регулярного выражения рег_выражение …

Компиляция и запуск программы на кластереИскусство программирования на языке сценариев командной оболочки.html

Page 9: Параллельные вычисления Сергей Васильевич Федоров,

Синтаксис переменных 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

Page 10: Параллельные вычисления Сергей Васильевич Федоров,

Синтаксис команд 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