Поиск в базе сайта:
Программирование, компиляция и запуск программ с использованием вычислительного кластера «скиф-политех» icon

Программирование, компиляция и запуск программ с использованием вычислительного кластера «скиф-политех»




Скачать 436.28 Kb.
НазваниеПрограммирование, компиляция и запуск программ с использованием вычислительного кластера «скиф-политех»
страница1/9
Дата конвертации11.12.2012
Вес436.28 Kb.
КатегорияРеферат
  1   2   3   4   5   6   7   8   9


Федеральное агентство по образованию

Государственное образовательное учреждение высшего профессионального образования

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ


Лаборатория мультифизического моделирования на базе вычислительного кластера «СКИФ-политех»


Программирование, компиляция и запуск программ с использованием вычислительного кластера «СКИФ-политех»

Содержание


Содержание 2

Удалённый доступ 3

Введение в ОС UNIX 5

Документация 7

Некоторые другие базовые команды ОС Unix 10

Обмен данными с кластером 12

Перекодировка файлов 12

Передача файлов 12

Первая программа в Unix 15

Создание и редактирование файлов 15

Компиляция и запуск программ 19

Программирование с использованием MPI 22

Отправка сообщения другому процессу: MPI_Send() 23

Прием сообщения от другого процесса: MPI_Recv() 24

Первая программа MPI: скалярное произведение векторов 24

Запуск параллельных приложений на кластере 29

Компиляция программ MPI 29

Постановка задачи в очередь 30

Пояснение к системе приоритетов 31

Просмотр результатов 31

Просмотр состояния очереди 37

Удаление задачи 37
^

Удалённый доступ


Удаленный доступ к вычислительному кластеру осуществляется через головную машину комплекса (master.hpc.cctpu.edu.ru, IP-адрес: 109.123.146.178) и только с тех компьютеров, IP-адреса которых были указаны в заявке при регистрации (при попытке зайти с неуказанного адреса программа будет долго ждать и сообщит о потере связи по таймауту). Непосредственный терминальный доступ на узлы кластера не допускается.

В настоящий момент удаленный терминальный доступ на кластер осуществляется по протоколу SSH версии 2. На Unix-машинах этот протокол поддерживается стандартной командой ssh.

Для Windows рекомендуется программа PuTTY. Другие клиентские программы для Windows, поддерживающие протокол SSH 2 - это SSH Secure Shell Client и Teraterm последних версий.



Рис. 1. Внешний вид окна настройки программы Putty.

После нажатия кнопки Open откроется окно удалённой командной оболочки, с приглашением ввода логина и пароля.



Рис. 2. Окно приглашения удалённой командной строки.

Обратите внимание, что в Unix-системах вводимые пароли, в отличие от Windows, не отображаются на экране даже в виде звездочек (клавиша Backspace, тем не менее, работает), этого не следует пугаться, просто нажмите Enter по завершению ввода, как обычно. Так сделано затем, чтобы нельзя было узнать хотя бы длину пароля (даже стуком клавиш можно обмануть, стирая лишние символы).

Программа Putty работает как эмулятор терминала, и поэтому выступает как комбинация клавиатуры и монитора для удаленной машины. Поэтому многие привычные комбинации кнопок работать не будут – например, сочетание Ctrl-C будет передано на удаленную сторону и скорее всего вызовет прерывание работы текущей программы, а не копирование в буфер обмена, о котором удаленная сторона ничего не знает, поскольку он находится исключительно на вашей машине.

Если вы выделите мышью на экране Putty текст, он будет скопирован в буфер обмена Windows сразу, автоматически, без дополнительных нажатий клавиш (точно так же ведут себя и все графические программы в Unix). Если Вам нужно скопировать прямоугольный блок, при выделении зажмите кнопку Alt, если какая-либо программа захватила управление мышью и выделения не происходит, зажмите кнопку Shift. Изменить область выделения можно (например, расширить) можно щелчком средней кнопки мыши. Вставить текст из буфера обмена Windows в окно Putty можно нажатием правой кнопки мыши (при этом удаленная сторона по-прежнему ничего не знает о буфере обмена, и считает, что текст был набран). Следует отметить, что в графических программах Unix наоборот, правая кнопка мыши используется для расширения выделения, а средняя – для вставки. Изменить данное поведение можно в категории Selection настроек Putty.
^

Введение в ОС UNIX


Установленная на головной машине и всех узлах кластера ОС SUSE Linux Enterprise Server относится к семейству Unix-подобных систем, берущих начало от оригинальной версии Unix 1969 года. Предполагается знакомство читателя с командной строкой DOS или Windows, поскольку основным интерфейсом управления Unix-системами, достаточным для редактирования текста и запуска программ, является командная строка. Графический интерфейс предъявляет повышенные требования к пропускной способности сети для нормальной работы, используется на нашем кластере только для сторонних пакетов типа Wolfram Mathematica или Mathlab, и в данном руководстве не рассматривается.

Несмотря на общие корни, командная строка в Unix эволюционировала более быстро, и кроме имён команд, отличается также в некоторых принципах. Так, Unix имеет более чем одну консоль, т.е. комбинацию монитор+клавиатура (устройство con из DOS/Windows), здесь они называются терминалами. Когда Вы заходите на кластер через сеть, создается виртуальный псевдотерминал (pseudo tty), поскольку программа PuTTY здесь эмулирует терминал (клавиатуру и монитор) через сеть. После входа вы попадаете в командный интерпретатор, так называемую оболочку (shell), которая является родителем всех своих дочерних процессов, после выхода из него терминал уничтожаются, и все привязанным к нему программам будет послан сигнал завершения, если они еще не успели сделать это до того. Здесь более широко, чем в DOS/Windows, используются понятия стандартных файлов ввода (stdin), вывода (stdout) и стандартного файла ошибок (stderr), поскольку программы не имеют прямого доступа к монитору, поэтому более широко используются перенаправления ввода-вывода, например cmd > file.txt или cmd1 | cmd2, при этом, в силу многозадачности, программы (процессы) работают одновременно.

В дальнейших примерах мы будем показывать вводимый пользователем текст полужирным шрифтом. Аналогично выводу в DOS строки типа C:\> перед каждой командой, оболочка Unix тоже показывает своё приглашение:


test@master:~/my_progs> ls

scalar scalar.out-212 scalar.out-220 scalar.rep-208 scalar.rep-219

scalar.c scalar.out-213 scalar.out-274 scalar.rep-212 scalar.rep-220

scalar.c~ scalar.out-214 scalar.out-276 scalar.rep-213 scalar.rep-274

scalar.o scalar.out-215 scalar.out-279 scalar.rep-214 scalar.rep-276

scalar.out-205 scalar.out-216 scalar.out-287 scalar.rep-215 scalar.rep-279

scalar.out-206 scalar.out-217 scalar.rep-205 scalar.rep-216 scalar.rep-287

scalar.out-207 scalar.out-218 scalar.rep-206 scalar.rep-217

scalar.out-208 scalar.out-219 scalar.rep-207 scalar.rep-218

test@master:~/my_progs> pwd

/home/test/my_progs

test@master:~/my_progs> cd ..

test@master:~> pwd

/home/test

test@master:~> cd my_progs

test@master:~/my_progs> ls -l

total 212

-rwxr-xr-x 1 test users 13753 Mar 20 2007 scalar

-rw-r--r-- 1 test users 2257 Mar 20 2007 scalar.c

-rw-r--r-- 1 test users 2260 Mar 20 2007 scalar.c~

-rw-r--r-- 1 test users 5464 Mar 20 2007 scalar.o

-rw-r--r-- 1 test users 0 Mar 20 2007 Makefile

-rw-r--r-- 1 test users 0 Mar 20 2007 mAKEFILe


Из этого примера уже можно видеть несколько базовых команд Unix:

  • ls – показать список файлов в текущем каталоге

  • pwd – показать полный путь текущего каталога (print working directory), полезно, если Вы забыли где находитесь (приглашение оболочки не всегда бывает настроено так, чтобы отображать текущий каталог)

  • cd или chdir – сменить текущий каталог (как и в DOS)

Кроме того, видны и особенности системы, например, что в приглашении отображается имя пользователя (test) на головной машине (master), и текущий путь относительно домашнего каталога пользователя, который в Unix по соглашению часто обозначают одним символом тильды (~). Видно также то, что в Unix опции команд указывают через минус: ls -l показывает список в длинном (long) формате, включающем размеры файлов, даты модификации и т.д. Еще можно заметить, что в Unix имеет значение регистр имени файла – в Windows бы регистр имени файла Makefile бы сохранился, в отличие от DOS, но создать файл mAKEFILe система бы уже не дала.

Однако наиболее важным видным здесь отличием является то, что в Unix нет отдельных дисков и их букв (C:, D:, …), а есть единый корневой каталог, обозначаемый просто /, и все пути отсчитываются от него, разделителем каталогов является тоже прямой слэш (/) вместо обратного (\) из DOS и Windows. Различные физические диски просто монтируются (mount) в произвольную точку общего дерева каталогов, что заметно, например, в выводе команды отображения свободного места на дисках (по умолчанию в килобайтах):


test@master:~/my_progs> df

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/sda2 165140368 91625316 65126312 59% /

udev 4089704 132 4089572 1% /dev

/dev/sda4 30211520 15328 30196192 1% /boot

panfs://192.168.10.252/data 4271186424 3269816068 1001370356 77% /panasas

panfs://192.168.10.252/khav 488281248 3508 88277740 1% /share/khav


Другим важным отличием командной оболочки Unix является то, что shell на самом деле представляет собой полноценный язык программирования, и имеет свои синтаксические особенности и предобработку, не выполняя набранное просто «как есть». Так, символы шаблонов ? и * здесь обрабатывает сама оболочка, и когда Вы в нижеследующем примере набираете один аргумент, в программу на самом деле будут переданы три, что следует иметь в виду при программировании (однако, это избавляет Вас от работы по ручной обработке шаблонов):


test@master:~/my_progs> ls -l scalar.rep-27*

-rw-r--r-- 1 test 600 270 Mar 26 2007 scalar.rep-274

-rw-r--r-- 1 test 600 269 Mar 26 2007 scalar.rep-276

-rw-r--r-- 1 test 600 270 Mar 26 2007 scalar.rep-279

test@master:~/my_progs> echo ~

/home/test

test@master:~/my_progs> ls -l scalar.rep-27[46]

-rw-r--r-- 1 test 600 270 Mar 26 2007 scalar.rep-274

-rw-r--r-- 1 test 600 269 Mar 26 2007 scalar.rep-276

test@master:~/my_progs> ls -l scalar.[ro][eu][pt]-20*

-rw------- 1 test 600 13956 Mar 20 2007 scalar.out-205

-rw------- 1 test 600 2372 Mar 20 2007 scalar.out-206

-rw------- 1 test 600 10200 Mar 20 2007 scalar.out-207

-rw------- 1 test 600 804 Mar 20 2007 scalar.out-208

-rw-r--r-- 1 test 600 1183 Mar 20 2007 scalar.rep-205

-rw-r--r-- 1 test 600 411 Mar 20 2007 scalar.rep-206

-rw-r--r-- 1 test 600 935 Mar 20 2007 scalar.rep-207

-rw-r--r-- 1 test 600 355 Mar 20 2007 scalar.rep-208

test@master:~/my_progs> ls -l scalar.out-21?

-rw------- 1 test 600 2808 Mar 20 2007 scalar.out-212

-rw------- 1 test 600 2527 Mar 20 2007 scalar.out-213

-rw------- 1 test 600 1956 Mar 20 2007 scalar.out-214

-rw------- 1 test 600 2517 Mar 20 2007 scalar.out-215

-rw------- 1 test 600 1710 Mar 20 2007 scalar.out-216

-rw------- 1 test 600 2515 Mar 20 2007 scalar.out-217

-rw------- 1 test 600 1651 Mar 20 2007 scalar.out-218

-rw------- 1 test 600 13461 Mar 20 2007 scalar.out-219

test@master:~/my_progs> ls -l scalar.out-21[4-8]

-rw------- 1 test 600 1956 Mar 20 2007 scalar.out-214

-rw------- 1 test 600 2517 Mar 20 2007 scalar.out-215

-rw------- 1 test 600 1710 Mar 20 2007 scalar.out-216

-rw------- 1 test 600 2515 Mar 20 2007 scalar.out-217

-rw------- 1 test 600 1651 Mar 20 2007 scalar.out-218

test@master:~/my_progs> ls -l scalar.out-21[^4-8]

-rw------- 1 test 600 2808 Mar 20 2007 scalar.out-212

-rw------- 1 test 600 2527 Mar 20 2007 scalar.out-213

-rw------- 1 test 600 13461 Mar 20 2007 scalar.out-219


В этом примере можно увидеть, что оболочка в Unix умеет также еще один вид символов шаблонов – перечисление символов в квадратных скобках. Работает это аналогично символу ?, означающему «любой символ», но здесь символ будет не абсолютно любым, а ограничен набором из перечисленных. Как видно из примера, перечисления можно задавать через диапазон, можно задавать и отрицание символом ^ в начале перечисления, означающим «любой символ не из указанного набора».
  1   2   3   4   5   6   7   8   9

Похожие:




©fs.nashaucheba.ru НашаУчеба.РУ
При копировании материала укажите ссылку.
свазаться с администрацией