Основы параллельного программирования вычислительных систем с распределенной и разделяемой памятью

Автор работы: Пользователь скрыл имя, 05 Июня 2013 в 22:25, курсовая работа

Краткое описание

В настоящее время проводится много исследований в области языков и сред параллельного программирования, целью которых является содействие параллельному программированию путем обеспечения поддержки на должном уровне абстракции. Однако, много эффективных технологий доступно уже сейчас.

Содержание

Введение 4
1 Общие представления о параллельном программировании 6
2 Архитектура параллельных компьютеров 8
2.1 Развитие архитектуры компьютера 8
2.2 Организация памяти параллельных компьютеров 10
2.3 Сети межсоединений 15
2.3.1 Свойства сетей межсоединений. Статические сети межсоединений 16
2.3.2 Динамические сети межсоединений 19
3 Введение в программирование с использованием передачи сообщений 22
3.1 Введение в MPI 22
3.1.1 MPI-коммуникация типа «точка-точка» 25
3.1.2 Тупиковые ситуации при коммуникациях типа «точка-точка» 30
3.1.3 Неблокирующие операции и режимы коммуникации 33
3.1.4 Коммуникационный режим 35
3.2 Групповые коммуникационные операции 36
3.3 Группы процессов и коммуникаторы 41
3.3.1 Группы процессов в MPI 41
3.3.2 Топологии процессов 45
3.3.3 Временные и прерывающие процессы 49
4 Введение в потоковое программирование в OpenMP 50
4.1 Проблемы поточной обработки цикла 52
4.2 Условия гонок 52
4.3 Управление общими и приватными данными 53
4.4 Планирование и разбиение циклов 55
4.5 Библиотечные функции ОреnМР 57
4.6 Отладка 58
4.7 Производительность 59
4.8 Основные моменты 61
5 Протокол сеансового уровня SSH 63
6 Удаленный вход на кластер 66
7 Операционная система Linux 68
7.1 Интерфейс ОС Linux 68
7.2 Некоторые команды Linux 68
8 Компилирование последовательных программ (Fortran/C/C++) 71
9 Основные команды 72
10 Работа с кластером 74
Список использованных источников информации 83

Вложенные файлы: 1 файл

Cluster.doc

— 829.00 Кб (Скачать файл)

Когда алгоритм реализован, наступает  время убедиться, что код эффективно работает на архитектуре процессоров Intel — и здесь однопоточная версия может очень помочь. В ОреnМР путем  выключения соответствующего флага компилятора вы можете сгенерировать однопоточную версию и выполнить ее с  использованием обычного набора вариантов оптимизации. После достижения желаемой производительности однопоточной версии наступает время создания многопоточной версии и начала аналитической работы.

Прежде всего, оцените время  простоя операционной системы. Для  этой цели очень хороша программа VTune Performance Analyzer производства Intel. Время  простоя может указывать на наличие  несбалансированных нагрузок, последовательных областей и большого количества блокировок синхронизации. Исправьте все это и вернитесь в VTune Performance Analyzer для поиска избыточных кэш-промахов и проблем памяти (наподобие ложного разделения).

Решите эти основные проблемы, и  у вас будет хорошо оптимизированная параллельная программа, которая сможет хорошо работать на многоядерных  системах (а также на многопроцессорных SMP-системах).

Оптимизации — это сочетание  терпения, проб и ошибок, практики. 

4.8 Основные моменты

При OpenMP-программировании нужно учитывать следующие основные моменты:

•  Модель OpenMP-программирования предлагает простой и переносимый механизм превращения последовательного кода в параллельный при  помощи OpenMP-совместимого компилятора.

• ОреnМР имеет богатый набор прагм, переменных среды и API времени выполнения для поточной обработки.

•  Переменные среды и API должны использоваться осторожно, так как они могут отрицательно повлиять на производительность. Реальная ценность ОреnМР — это прагмы.

•  При помощи богатого набора OpenMP-прагм вы можете постепенно  адаптировать для параллельной обработки циклы и блоки кода без переделки всего приложения. Расширение Taskqueuing от Intel позволяет расширить охватываемые ОреnМР предметные области.

•  Если производительность вашего приложения упирается в  производительность ядра или процессора, то поточная обработка с помощью ОреnМР почти наверняка повысит производительность приложения на 

многоядерной или многопроцессорной  системе.

• Вы можете легко использовать соответствующие прагмы и предложения для создания критических секций, указания приватных и общих  переменных, копирования значений переменных и управления количеством  потоков, работающих в одной области.

•  ОреnМР автоматически использует соответствующее данной  компьютерной системе количество потоков, поэтому разработчикам проще  переходить к параллельному коду и делать свои программы более переносимыми и простыми в обслуживании. «Родные» и почти «родные» варианты, такие как API поточной обработки в Windows или Pthreads, должны использоваться только тогда, когда применение ОреnМР невозможно.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5 Протокол сеансового уровня SSH

SSH (англ. Secure SHell — «безопасная оболочка») - это сетевой протокол, используемый для удаленного управления компьютером и для передачи файлов. SSH похож по функциональности на протоколы telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли.

SSH позволяет передавать  через безопасный канал любой  другой сетевой протокол, таким  образом, можно не только удаленно работать на компьютере, но и передавать по шифрованному каналу звуковой поток или видео (например,с веб-камеры). Также, SSH может использовать сжатие передаваемых данных для последующей их шифрации.

Большинство хостинг-провайдеров  за определенную плату предоставляют

клиентам доступ к их домашнему каталогу по SSH. Это  очень удобно как

для работы в  командной строке, так и для  удаленного запуска графических  приложений. Через SSH можно работать и в локальной сети.

SSH-клиенты и SSH-сервера  написаны под большинство платформ: Windows,Linux, Mac OS X, Java, Solaris, Symbian OS, Windows Mobile и Palm OS.

Первая версия протокола, SSH-1, была разработана в 1995 году в Технологическом университете Хельсинки, Финляндия. SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, уже несовместимая с SSH-1. Протокол приобрел еще большую популярность и к 2000 году его использовало уже порядка двух миллионов пользователей. В 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет-стандарта.

Однако, до сих пор в  некоторых странах (Франция, Россия, Ирак и Пакистан) требуется специальное  разрешение в соответствующих структурах для использования определенных методов шифрования, включая SSH.

Распространены две реализации SSH: коммерческая (закрытая) и свободная (открытая). Свободная реализация называется OpenSSH. К 2006 году 80% компьютеров Интернет использовало именно OpenSSH.

Свободная и коммерческая реализации SSH содержат практически одинаковый набор команд.

Существуют две версии протокола SSH: SSH-1 и SSH-2. В первой версии

протокола есть существенные недостатки, поэтому в  настоящее время SSH-1 практически  нигде не применяется. Протокол SSH-2 устойчив в атакам "man-in-middle", в отличие от протокола telnet. То есть, прослушивание трафика, "снифинг", ничего не дает злоумышленнику. Протокол SSH-2 также устойчив к атакам путем присоединения посредине (session hijacking) и обманом сервера имен (DNS spoffing).

Далее по тексту, мы будем  иметь ввиду под SSH вторую версию протокола, SSH-2.

   SSH-сервера:

   Debian GNU/Linux: dropbear, lsh-server, openssh-server, ssh.

   MS Windows: freeSSHd, OpenSSH sshd, WinSSHD, ProSHHD, Dropbear SSH Server.

   SSH-клиенты и оболочки:

   Debian GNU/Linux: kdessh, lsh-client, openssh-client, putty, ssh.

   MS Windows: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD.

   Mac OS: NiftyTelnet SSH.

   Symbian OS: PuTTY.

   Java: MindTerm, AppGate Security Server.

Для работы по SSH нужен SSH-сервер и SSH-клиент. Сервер прослушивает соединения от клиентских машин и при установлении связи производит аутентификацию, после чего начинает обслуживание клиента. Клиент используется для входа на удаленную машину и выполнения команд.

Предположим, что сервер у нас настроен и работает. Для  подключения клиента требуется  сгенерировать пару из открытого  и закрытого ключей. Если Вы используете PuTTY под Windows - это делается утилитой puttygen.exe. Под Linux обычно используется команда puttygen (для PuTTY) или ssh-keygen (для OpenSSH). Далее указываем клиенту - где находится закрытый ключ,и соединяемся с вводом пароля. Возможно также беспарольное соединение,а чем упомянуто ниже.

  Рекомендации по безопасности использования SSH:

1. Запрещение  удаленного root-доступа.

2. Запрещение  подключения с пустым паролем  или отключение входа по паролю.

3. Выбор нестандартного  порта для SSH-сервера.

4. Использование  длинных SSH2 RSA-ключей (2048 бит и  более). По состоянию

на 2006 год система шифрования на основе RSA считалась надёжной, если длина ключа    не менее 1024 бит.)

5. Ограничение  списка IP-адресов, с которых разрешен доступ. Например, настройкой файрвола.

6. Запрещение  доступа с некоторых, потенциально  опасных адресов.

7. Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.

8. Регулярный  просмотр сообщений об ошибках  аутентификации.

 9. Установка детекторов атак (IDS, Intrusion Detection System).

10. Использование  ловушек, подделывающих SSH-сервис (honeypots).

Как подключиться к удаленному серверу из Linux или FreeBSD? Команда

подключения к  локальному SSH-серверу из командной  строки для пользователя pacify (сервер слушает нестандартный порт 30000):

           $ ssh -p30000 pacify@127.0.0.1

Под Windows можно воспользоваться  программой PuTTY. Она имеет простой  графический интерфейс, через который  удобно настраивать подключения.

На вкладке SSH\Auth надо выбрать закрытый ключ, который  будет

использоваться PuTTY.

К удаленному компьютеру можно подключиться по SSH, не вводя пароль,

а используя  открытый ключ. Разумеется, открытый ключ лучше передавать

на сервер по защищенному каналу.

Генерация пары SSH-2 RSA-ключей длиной 4096 бита программой puttygen под Linux/UNIX надо выполнить команду:

           $ puttygen -t rsa -b 4096 -o sample

Под Windows у этой программы (puttygen.exe) есть пользовательский интерфейс.

 

 

 

 

 

 

 

 

 

 

 

 

 

6 Удаленный вход на кластер

Для входа на кластер с персонального  компьютера, имеющего выход в интернет,   необходимо использовать ssh-клиент.

Пользователям операционной системы Microsoft Windows рекомендуется использовать программу putty.

Чтобы установить соединение с кластером  при помощи putty необходимо:

  1. В поле Host Name ввести cyberia.tsu.ru, port 22.
  2. Connection type: SSH.
  3. В Category — Window — Translation — Character set translation on received data выбрать UTF-8
  4. В поле Saved Sessions ввести любое удобное название. Нажать кнопку «Save». Под этим именем будут сохранены настройки
  5. Теперь для входа на кластер достаточно загрузить сохраненные настройки, выбрать их в меню Saved sessions и нажать «load».
  6. Нажать «Open».

Сеанс работы с операционной системой начинается с ввода идентификатора пользователя (username) и его пароля (password). Приглашением к вводу идентификатора является фраза «login as». Пароль при вводе не отображается.           

 Пользователи Unix-подобных операционных  систем также могут воспользоваться  putty или использовать стандартный  консольный ssh-клиент.

Чтобы установить соединение с кластером  при помощи стандартного ssh-клиента необходимо:

  1. В командной строке вызвать команду

ssh -l username cyberia.tsu.ru

или

ssh username@cyberia.tsu.ru.

  1. Ввести пароль(password).

 

            Для обмена  файлами с кластером пользователям  ОС Microsoft Windows  рекомендуется применять программу WinSCP или консольный клиент psftp из пакета putty. WinSCP выполняет все основные операции с файлами, такие как загрузка и выгрузка файлов. Он также позволяет переименовывать файлы и папки, создавать папки, изменять свойства файлов и папок           

 Для передачи файлов через  WinSCP необходимо:

  1. В поле Host Name указать cyberia.tsu.ru, port 22.
  2. Указать User name
  3. File Protocol: SFTP.
  4. Сохранить настройки.
  5. Нажать «login», ввести пароль.

Работа с WinSCP во многом похожа на работу Norton Commander (Far).           

 Для передачи файлов с  помощью psftp необходимо:

  1. Запустить psftp.
  2. Вызвать команду open username@cyberia.tsu.ru.
  3. Ввести пароль.

 

            Основные  команды psftp:

ls - показывает список файлов и подкаталогов;

get filename- «cкачивает» файл filename на ваш компьютер;

put filename - загружает файл filename из локального каталога на удаленный компьютер;

cd dir – устанавливает текущим каталогом удаленный каталог с именем dir,

Дополнительную справку можно  получить командами "help" и "help имя_команды".           

 Под Unix-подобными  операционными системами можно  пользоваться программой sftp, scp или  Midnight Commander(пункт меню "shell link").

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7 Операционная система Linux

 

            Операционная  система (ОС) – это комплекс  программ, обеспечивающих управление ресурсами компьютера и процессами, выполняющимися на компьютере, а также взаимодействие пользователей и компьютера.             

Linux — это свободная UNIX-подобная операционная система.

7.1 Интерфейс ОС Linux

 

            В операционной  системе Linux при наборе команд, имен файлов и каталогов различаются заглавные и прописные буквы. Процесс общения с ОС Linux осуществляется, в основном, при помощи консольного терминала (при помощи клавиатуры и монитора). После входа в систему на экране можно увидеть один из двух элементов интерфейса Linux: командную строку или графическую оболочку.            

 Командная строка – традиционный  способ общения в Linux. Когда  Linux ожидает команду, на экране  высвечивается приглашение –  «$». Чтобы дать команду системе, нужно в командной строке набрать имя команды, а затем – ее опции и аргументы (могут отсутствовать), разделенные пробелами. После набора ввод команды осуществляется нажатием клавиши ENTER. Команды Linux имеют структуру

command option(s) argument(s)           

 Опции обычно сопровождаются знаком «минус» и модифицируют поведение команды. Аргументы – это обычно имена каталогов или файлов. Следует помнить, что строчные и заглавные буквы в Linux обрабатываются по-разному, поэтому, например, команды man и Man воспринимаются ОС как различные. Это распространяется и на имена файлов.            

Информация о работе Основы параллельного программирования вычислительных систем с распределенной и разделяемой памятью