1 Использование вычислительного кластера Кемеровского государственного университета Авторы: Власенко Андрей, Андреев Никита Докладчик: Власенко Андрей
2 Мотивация создания вычислительных кластеров Для получения численного решения многих задач механики, гидро- и газодинамики, ядерной физики и других областей физики с надлежащей точностью зачастую недостаточно вычислительных мощностей одного ПК. Выход: заставить работать над задачей несколько процессоров.
3 Архитектура кластера Вычислительный узел Вычислительный кластер Сеть передачи данных Оперативная память Кэш Ядро Оперативная память Кэш Ядро Процессор
4 Конфигурация кластера КемГУ 9 вычислительных узлов (4-старых, 5- новых) и 1 управляющий по 2 процессора Intel Xeon 5410 (2.33 Ггц) в каждом из 4 старых узлов по 2 процессора Intel Xeon 5630 (2.53Ггц) в каждом из 5 новых узлов по 4 ядра в каждом процессоре по 8 Гб памяти в каждом из 4 старых узлов по 24 Гб памяти в каждом из 5 новых узлов Gigabit Ethernet - управляющая сеть, Infiniband – вычислительная сеть 1,5 Тб дискового пространства операционная система Linux CentOS
5 Сайт поддержки пользователей кластера (icp.kemsu.ru) Данная презентация Бланк заявки на регистрацию пользователя Правила работы с вычислительным кластером КемГУ Полезные программы Учебные материалы (ссылки на литературу и интернет-ресурсы) Памятка пользователю Раздел «Университетский кластер»
6 Порядок предоставления доступа к кластеру КемГУ 1.Ознакомиться с правилами для пользователей вычислительного кластера Кемеровского государственного университета 2.Заполнить бланк заявки и отнести на подпись проректору по научной работе и информатизации КемГУ 3. Получить логин и пароль учетной записи у Власенко Андрея (2140 каб.) или Андреева Никиты (2129 каб.)
7 Программирование для кластерной вычислительной системы При запуске обычных последовательных программ на вычислительном кластере невозможно получить выигрыш в производительности. Вывод: требуется инструментарий для распараллеливания задачи на несколько процессоров. MPI (Message Passing Interface) – стандарт де-факто при программировании вычислительных кластеров. (Афанасьев К.Е., Стуколов С.В. «Многопроцессорные вычислительные системы и параллельное программирование») MPI сложен в освоении и требует изрядных навыков прикладного программирования.
8 MPI на кластере КемГУ Существует единственный стандарт MPI: report.pdf И множество реализаций стандарта (MPI Chameleon, Open MPI, MVAPICH, Intel MPI, HP MPI, Microsoft MPI и др.), которые содержат библиотеки функций и набор утилит и скриптов. На кластере КемГУ: MVAPICH2-1.6 rocks-openmpi 1.4.1
9 Программирование для кластерной вычислительной системы OpenMP – стандарт де-факто при программировании многопроцессорных (многоядерных) систем с общей памятью. С его помощью можно загрузить 8 ядер на одном узле UPC (Unified Parallel C) – подходит для программирования как систем с общей, так и с распределенной памятью. 1.Tarek El-Ghazawi, William Carlson, Thomas Sterling, Katherine Yelick: «UPC: Distributed Shared Memory Programming»
10 Вход на кластер Необходимо осуществить ssh-соединение (Secure Shell). Для этого требуется ssh-клиент. Один из самых популярных и удобных клиентов – Putty
11 Ввод IP-адреса или master.kemsu.ru
12 Выбор кодировки Translation UTF-8
13 Ввод логина Вместо vlas свой логин Ввод пароля При вводе пароль не отображается
14 Командная строка Приглашение командной строки в ОС Linux. Материалы по ОС Linux:
15 Смена пароля passwd
16 Файловый менеджер Midnight Commander Вызов файлового менеджера Midnight Commander (mc)
17 Копирование файлов на кластер / с кластера Используем программу WinSCP
18 Копирование файлов на кластер / с кластера или master.kemsu.ru
19 Копирование файлов на кластер / с кластера Скопировать папку programs_for_study в домашнюю директорию.
20 Переименование/перемещениефайлов Переименование/перемещение файлов 1.В Midnight commander нажать комбинацию Ctrl+O 2.mv pbsjob1_vlas pbsjob1_stud{i} 3.Кнопку «вверх» - появится предыдущая набранная строка 4.mv pbsjob2_vlas pbsjob2_stud{i} 5.Кнопку «вверх» - появится предыдущая набранная строка 6.mv pbsjob3_vlas pbsjob3_stud{i} 7.Кнопку «вверх» - появится предыдущая набранная строка 8.mv pbsjob4_vlas pbsjob4_stud{i} 9.ls – выводит содержимое каталога 10.Ctrl + O – возврат в mc
21 Написание исходного кода программы touch program.cpp – создает файл с названием program.cpp
22 Написание исходного кода программы Щелчком по кнопке F4 на имени файла program.cpp открываем его в режиме редактирования и набираем текст программы.
23 Выбор MPI-реализации Для этого необходимо воспользоваться утилитой mpi-selector mpi-selector --list (список всех установленных MPI- реализаций) mpi-selector --query (текущая MPI-реализация)
24 Выбор MPI-реализации mpi-selector --set mvapich2-1.6 (выбор другой MPI-реализации). После этого необходимо завершить сеанс и открыть новый. mpi-selector --query
25 Компиляция mpi-программы на C mpicxx c_mpi_prog.cpp –o c_mpi_prog.out
26 Компиляция mpi-программы на fortran mpif77 fortran_mpi_prog.f –o fortran_mpi_prog.out Или mpif90 fortran_mpi_prog.f –o fortran_mpi_prog.out
27 Создание скрипта запуска для MVAPICH2 pbsjob1_vlas #PBS -l walltime=00:01:00,nodes=4:ppn=1 #PBS -q или #PBS -q #PBS -N vlasjob1 #PBS -o /home/testuser/out.txt #PBS -e /home/testuser/err.txt #!/bin/sh /opt/mpiexec/bin/mpiexec –n 4 /home/testuser/fortran_mpi_prog.out где walltime – предполагаемое время выполнения, nodes - число вычислительных узлов, ppn – число вычислительных ядер на каждом узле. #PBS -q - Имя сервера и очереди #PBS -N job_name - имя задания #PBS -o /home/tester/out.txt– указание пути для записи файла потока вывода #PBS -o /home/tester/err.txt – указание пути для записи файла потока ошибок #!/bin/sh – командный интерпретатор mpiexec– команда запуска MPI-приложения
28 Создание скрипта запуска для OpenMPI pbsjob1_vlas #PBS -l walltime=00:01:00,nodes=4:ppn=1 #PBS -q или #PBS -q #PBS -N vlasjob1 #PBS -o /home/testuser/out.txt #PBS -e /home/testuser/err.txt #!/bin/sh /opt/openmpi/bin/mpiexec –n 4 –machinefile $PBS_NODEFILE /home/testuser/fortran_mpi_prog.out
29 Постановка задачи в очередь [ ~]$ qsub pbsjob1_vlas Отслеживание состояния задачи в очереди [ ~]$ qstat Job id Name User Time Use S Queue master my_job tester 0 R workq 147.master job_hpl tester 0 Q workq 148.master job_hpl tester 0 Q workq 149.master job_hpl tester 0 Q workq 150.master job_hpl tester 0 Q workq
30 Файлы с результатами работы Файл результатов (поток stdout): /home/testuser/out.txt Файл с ошибками (поток stderr): /home/testuser/err.txt
31 Компиляция openmp-программы на C [ ~]$ g++ -fopenmp c_openmp_prog.cpp –o c_openmp_prog.out [ ~]$gfortran -fopenmp fortran_openmp_prog.f –o fortran_openmp_prog.out Компиляция openmp-программы на Fortran
32 Создание скрипта запуска для openmp- программы pbsjob3_vlas #PBS -l walltime=00:01:00,nodes=1:ppn=8 #PBS -q #PBS -N vlasjob3 #PBS -o /home/testuser/out.txt #PBS -e /home/testuser/err.txt #!/bin/sh export OMP_NUM_THREADS=8 /home/testuser/c_openmp_prog.out где OMP_NUM_THREADS – команда запуска параллельного приложения
33 Постановка задачи в очередь [ ~]$ qsub pbsjob3_vlas Отслеживание состояния задачи в очереди [ ~]$ qstat
34 Компиляция UPC программы [ ~]$ upcc -network=udp -pthreads=8 upc_prog.c -o upc_prog.out
35 Создание скрипта запуска для UPC программы pbsjob5_vlas #PBS -l walltime=00:01:00,nodes=4:ppn=8 #PBS -q #PBS -N vlasjob5 #PBS -o /home/testuser/out_vlasjob5.txt #PBS -e /home/testuser/err_vlasjob5.txt #!/bin/sh /opt/bupc-runtime /bin/upcrun -n 32 /home/vlas/programs_for_study/upc_prog.out
36 Копирование файлов результатов на локальный компьютер Осуществляется при помощи программы WinSCP таким же образом, как и копирование с локального компьютера на кластер.
37 БЛАГОДАРЮ ЗА ВНИМАНИЕ!