Зачет 29 декабря будет проходить в 2-х форматах.
1) Студенты, которым были поставлены конкретные задания по разработанным ими программам (например, заменить блокирующие Send/Recv на неблокирующие, перейти на использование коллективных операций и.т.п.), будет предоставлена возможность продемонстрировать новые версии программ.
2) Студенты, которые не смогли объяснить алгоритм "разработанных ими" программ, готовятся к устному зачету.
3) Остальные студенты также готовятся к устному зачету.
Список вопросов опубликован:
http://dvmh.keldysh.ru/attachments/download/7276/Questions2023.pdf
В билете будет 2 вопроса и задачка - распараллелить программу с помощью OpenMP.
На зачет 22 декабря приглашаются:
в 9.00 группы 320, 321;
в 11.00 группы 324, 325 и студенты Севастопольского филиала;
в 13.00 группы 327 и 328.
Я просмотрел все отчеты, которые были выложены в трекере.
Студенты, чьи задачи были "Закрыты" или "Отклонены", готовятся к устному зачету.
Список вопросов для зачета опубликован в Интернет: http://dvmh.keldysh.ru/attachments/download/7276/Questions2023.pdf
В билете будет 2 вопроса.
Один из вопросов будет по теме OpenMP.
Никакими материалами при подготовке ответа пользоваться нельзя.
Остальные студенты пытаются за оставшееся время исправить указанные замечания (если они есть), приносят с собой распечатанную версию отчета и тексты программ или ноутбук с электронной версией отчета.
График проведения зачета (какая группа в какое время приходит) будет опубликован завтра вечером.
С уважением,
Владимир Бахтин.
По результатам сдачи зачета, который прошел сегодня, хотелось бы отметить следующее:
1. Мы неоднократно обсуждали на лекциях, что при разработке MPI-программ необходимо распределять данные между процессами.
Ни в одном из процессов массив не должен находиться целиком.
В каждом процессе должна находиться лишь часть массива(какое-то подмножество строк/столбцов или блоков массива).
Размер этой части должен определяться с учетом количества MPI-процессов, используемых для выполнения программы.
MPI-программы, в которых массивы не распределены между процессами не принимаются.
2. В рамках курса мы рассматривали множество различных алгоритмов: умножение матриц, умножение матрицы на вектор, а также другие алгоритмы вычислительной математики и линейной алгебры. Ни в одном из рассмотренных нами алгоритмов у нас не было master-процесса, который бы раздавал работу и данные, а затем собирал полученные результаты. Все процессы в наших алгоритмах были равноправными, а алгоритмы - децентрализованными.
MPI-программы, в которых используется модель master-slave не принимаются.
3. Срок сдачи первой части задания прошел еще 2 недели назад. Но до сих пор в трекере есть множество заданий, по которым не было ни одного сообщения/загрузки программ. Все такие задания будут закрыты автоматически вечером 16 декабря. Студентам, чьи задачи будут закрыты, необходимо готовиться к устному зачету по курсу.
Для компиляции и запуска MPI-программ на Poluse можно использовать следующий способ.
При входе на машину необходимо выполнить команду:
source /polusfs/setenv/setup.SMPI
После этого нам станут доступны команды для компиляции (mpicc) и запуска программ (mpirun).
Скомпилировать программу можно при помощи команды:
mpicc <имя_программы>.c -o <имя_программы>
Далее необходимо подготовить файл myrun вида:
#LSBATCH: User input
#BSUB -n 20
#BSUB -W 00:15
#BSUB -o run.%J.out
#BSUB -e run.%J.err
#BSUB -R "span[hosts=1]"
source /polusfs/setenv/setup.SMPI
mpirun -np 1 ./<имя_программы>
mpirun -np 80 --oversubscribe ./<имя_программы>
mpirun -np 100 --oversubscribe ./<имя_программы>
mpirun -np 120 --oversubscribe ./<имя_программы>
mpirun -np 160 --oversubscribe ./<имя_программы>
Далее выполняем команду bsub<myrun
При помощи этой команды/файла мы запрашиваем у системы очередей один узел кластера,
когда этот узел будет выделен нам системой очередей,
на нем будут выполнены запуски нашей программы на нужном числе процессов.
Опция --oversubsribe в данном случае нужна, т.к. мы хотим запустить большее число процессов, чем доступно физических ядер на узле.
С уважением,
Владимир Бахтин.