Логотип ЛСМ ЮУрГУ
Южно-Уральский госудраственный университет
Национальный исследовательский университет
ЛАБОРАТОРИЯ СУПЕРКОМПЬЮТЕРНОГО МОДЕЛИРОВАНИЯ ЮУрГУ
Русский язык
О нас
Наши партнеры
Отделы и сотрудники
История
Новости
Информация в СМИ
Фотогалерея
Эмблема ЛСМ
Экскурсии
Контакты
Вычислительные ресурсы
Суперкомпьютер «Торнадо ЮУрГУ»
Суперкомпьютер «СКИФ-Аврора ЮУрГУ»
Комплекс «GPU»
Кластер «СКИФ Урал»
Пользователям
Правила
Регистрация
Прикладное ПО
Системное ПО
Техническая поддержка
Обучение
Система ПВК
Программное обеспечение
Правила
Инструкции
Коммерческим клиентам
Научная работа
Цели ЛСМ
Проекты
Публикации
Зарегистрированные программы
     
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/.

--------

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