Здравствуйие! Я хочу пройти курс Введение в принципы функционирования и применения современных мультиядерных архитектур (на примере Intel Xeon Phi), в презентации самостоятельной работы №1 указаны логин и пароль для доступ на кластер и выполнения самостоятельных работ, но войти по такой паре логин-пароль не получается. Как предполагается выполнение самосоятельных работ в этом курсе? |
Самостоятельная работа 1: Компиляция и запуск приложений на Intel Xeon Phi
Симметричный режим
В симметричном режиме в расчетах могут использоваться как центральные процессоры, так и сопроцессоры, причем каждое устройство является отдельным узлом кластера (обладает собственным уникальным MPI рангом). Обмен данными между устройствами осуществляется посредством передачи MPI сообщений.
Рассмотрим процесс компиляции и запуска программы в этом режиме. Воспользуемся предыдущим примером. Напомним, что задача состоит в параллельном вычислении набора скалярных произведений, причем каждое скалярное произведение так же считается параллельно в рамках одного процесса. Ранее мы использовали схему распараллеливания по процессам, где каждый процесс выполнялся на Intel Xeon Phi и вычислял несколько скалярных произведений.
Можно отметить, что при таком подходе имеющиеся в системе центральные процессоры остаются не задействованными, хотя с успехом могут выполнять нашу программу без внесения в код каких-либо изменений. Задействовать все доступные вычислительные ресурсы как раз помогает симметричная модель исполнения. Основная идея ее использования состоит в том, чтобы запускать нашу программу одновременно на сопроцессорах и CPU.
Для этого, как уже отмечалось, менять код не нужно. Однако придется внести изменения в процессы компиляции и запуска.
В частности компилировать код нужно уже не только под сопроцессор, но и под CPU. Для этого нужно дополнительно выполнить команду компиляции для центрального процессора. Таким образом, имеем:
mpicc –O2 –openmp main.cpp –o ./lab1_dot_symmetric mpicc –O2 –openmp –mmic main.cpp –o ./lab1_dot_symmetric.mic
В результате получим два отдельных исполняемых модуля.
Для запуска обоих модулей в симметричном режиме необходимо выполнить команду:
mpiexec.hydra –hosts 2 node0 node1 –n 2 –perhost 1 ./lab1_dot_symmetric: \ –hosts 4 mic0 mic1 mic2 mic3 –n 4 –perhost 1 –wdir /tmp /tmp/lab1_dot_symmetric.mic
Исполняемые файлы должны располагаться в каталоге /tmp. При этом наша программа будет запущена на 2 центральных процессорах и 4 сопроцессорах, т.е. всего на 6 узлах.
Для кластера с системой управления SLURM команда запуска будет такая:
export PPN=2 export MICperNODE=2 sbatch –N 2 –-gres=mic:2 symmetric_run.sh ./lab1_dot_symmetric
Здесь программа будет запущена на двух узлах, на каждом будет выполнено 2 CPU и 2 MIC процесса. Всего 8 MPI процессов – 4 на центральных процессорах, и 4 на сопроцессорах. Обратите внимание, что для задания числа CPU процессов на узел мы используем переменную окружения PPN, число MIC процессов на узел равно MICperNODE. Имена переменных окружения могут быть разными для разных кластеров, и описаны обычно в руководстве пользователя для кластера.
Заметим, что исполняемый файл для сопроцессора в данном случае обязательно должен называться lab1_dot_symmetric.mic (т.е. к имени программы для центрального процессора добавляется расширение .mic).
Для работы этой команды требуется подгрузить модуль launcher/mic командой:
module load launcher/mic
Дополнительные задания
- Реализовать умножение матрицы на вектор в режиме Offload.
- Реализовать умножение матрицы на вектор в режиме работы только на сопроцессоре. Считать, что программа предназначена для выполнения на одном сопроцессоре.
- Реализовать умножение матрицы на вектор в симметричном режиме. Обеспечить два уровня параллелизма – одновременное выполнение умножения строк матрицы на вектор и параллельное вычисление скалярного произведения векторов.