Краткая инстррукция по работе на сопроцессорах Xeon Phi
 
Логотип ЛСМ ЮУрГУ
Южно-Уральский государственный университет (национальный исследовательский университет)
НАУЧНО-ОБРАЗОВАТЕЛЬНЫЙ ЦЕНТР "ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ И КВАНТОВЫЕ ТЕХНОЛОГИИ" ЛАБОРАТОРИЯ СУПЕРКОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ
Русский язык
О нас
Наши партнеры
Отделы и сотрудники
История
Информация в СМИ
Эмблема ЛСМ
Экскурсии
Контакты
Вычислительные ресурсы
Суперкомпьютер «Торнадо ЮУрГУ»
Комплекс «Нейрокомпьютер ЮУрГУ»
Кластер «СКИФ Урал»
Пользователям
Правила
Регистрация
Прикладное ПО
Системное ПО
Обучение
Инструкции
Инструкции Outlook и SharePoint
Система ПВК
Программное обеспечение
Правила
Инструкции ПВК
Коммерческим клиентам
Научная работа
Цели ЛСМ
Проекты
     
Google

www по сайту
Главная / Пользователям / Инструкции / Краткая инстррукция по работе на сопроцессорах Xeon Phi

Краткая инструкция по работе на сопроцессорах Xeon Phi

Многоядерные сопроцессоры Intel Xeon Phi являются аналогами (заменой) графических ускорителей. С помощью многоядерного сопроцессора Intel Xeon Phi Вы можете получить значительное ускорение в расчётах. Intel Xeon Phi поддерживает 3 режима работы —nativeoffload и symetric
В режиме offload параллельная часть программы копируется из памяти вычислительного узла в память сопроцессора и вычисляется там. В symmetric-режиме вычислительную нагрузку на себя берет как CPU, так и сопроцессор. Многоядерные сопроцессоры поддерживают технологии программирования OpenMP и MPI. Дополнительную информацию по многоядерным сопроцессорам Intel Xeon Phi Вы можете найти здесь.

Перед тем, как начать работать с компилятором, необходимо экспортировать необходимые переменные среды, подгрузив следующий модуль:

[user@login ~]# module load compilers/composer_xe/2013_sp1_parallel/mpi.intel/4.1.0.024 launcher/mic

Для того, чтобы скомпилировать параллельную программу, совместимую с Intel Xeon Phi, необходимо использовать компилятор Intel, установленном на суперкомпьютере.

Компиляция (режим offload)

Переходим в директорию с исходным кодом:

[user@login ~]# cd /the/location/of/your/program

Компилируем версию для сопроцессора:

[user@login ~]# mpiicc ./program.c -o ./program.exe

Компиляция (режим symmetric)

Исполняемый код на процессоре и на сопроцессоре Intel Xeon Phi компилируется по-разному ввиду разности архитектур. При дальнейшем запуске скомпилированной программы, оба полученных при компиляции исполняемых файла (для CPU и и для Xeon Phi) должны находиться в одной и той же директории.

Переходим в директорию с исходным кодом:

[user@login ~]# cd /the/location/of/your/program

Для процессора: 

[user@login ~]# mpiicc ./program.c -o ./program.exe

Для сопроцессора:

[user@login ~]# mpiicc -mmic ./program.c -o ./program.exe.mic

Постановка задачи в очередь осуществляется следующим образом:

sbatch -C mic_online -N <количество узлов> -p <тип очереди (work|quick)> symmetric_run_tcp.sh --ppn=<количество mpi процессов на каждом из узлов> --ppnmic=<количество mpi процессов на каждом из ускорителей> <полный или относительный путь (относительно каталога, где будет вызвана команда sbatch) до файла program.exe>

Скрипт symmetric_run_tcp.sh устроен следующим образом: Вам не нужно явно указывать файл, исполняемый на сопроцессоре данном случае это program.exe.mic), скрипт автоматически допишет в конец входного файла расширение .mic и найдет соответствующий исполняемый файл для сопроцессора.

Ниже приведен код программы, запускаемой в симметричном режиме:
 

#include <stdio.h>
#include <mpi.h>
int main (int argc, char *argv[])
{
char name[BUFSIZ];
int length;
int rank;
int size;
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
MPI_Get_processor_name (name, &length);
printf ( «Hello world from %d / %d from %s\n», rank, size, name) ;
fflush (stdout);
MPI_Finalize ();
return 0;
}

Строка для запуска на двух узлах по 12 процессов на каждом процессоре и по одному процессу на каждом сопроцессоре:

sbatch -N 2 -p quick symmetric_run_tcp.sh --ppn=12 --ppnmic=1 /share/cae_samples/xeon_phi/test.exe

Вывод:


Hello world from 0 / 26 from node281
Hello world from 1 / 26 from node281
Hello world from 8 / 26 from node281
Hello world from 13 / 26 from node282
Hello world from 9 / 26 from node281
Hello world from 24 / 26 from node282
Hello world from 2 / 26 from node281
Hello world from 3 / 26 from node281
Hello world from 22 / 26 from node282
Hello world from 4 / 26 from node281
Hello world from 23 / 26 from node282
Hello world from 5 / 26 from node281
Hello world from 10 / 26 from node281
Hello world from 11 / 26 from node281
Hello world from 18 / 26 from node282
Hello world from 20 / 26 from node282
Hello world from 19 / 26 from node282
Hello world from 16 / 26 from node282
Hello world from 17 / 26 from node282
Hello world from 12 / 26 from node281-mic0
Hello world from 6 / 26 from node281
Hello world from 21 / 26 from node282
Hello world from 7 / 26 from node281
Hello world from 14 / 26 from node282
Hello world from 15 / 26 from node282
Hello world from 25 / 26 from node282-mic0

Пример задачи можно найти на кластере, перейдя в директорию /share/cae_samples/xeon_phi/.

--------

Составитель инструкции — Порозов Алексей Сергеевич.