О некоторых результатах проведения курса “Практические технологии параллельного программирования” Н.А. Коновалов, В.А. Крюков Институт прикладной математики им. М.В. Келдыша РАН Н.Н.Попова Факультет ВМиК МГУ e-mail: krukov@keldysh.ru konov@keldysh.ru popova@cs.msu.su http://intel.cs.msu.su Цель курса изучение практических технологий параллельного программирования, приобретение студентами навыков написания, отладки, анализа эффективности параллельных программ; создание практической основы для дальнейшего углубленного изучения теории и практики параллельного программирования Общая характеристика курса Статус курса – спецкурс Курс базируется на использовании DVM и MPI. Предварительные базовые знания – язык С, ОС Unix Вычислительная база – кластер рабочих станций факультета ВМиК, до 20 процессоров, Fast Ethernet суперкомпьютер МВС-1000м Межведомственного Суперкомпьютерного Центра Содержание курса Введение в параллельное программирование основные понятия, модели архитектур параллельных ВС, модели параллельных программ Основы DVM состав системы, основные конструкции, методы распределения данных, отладка и оптимизация программ, работа с анализатором производительности Содержание курса Основы MPI: основные понятия, базовые функции, реализация коллективных взаимодействий, режимы передачи сообщений, методы работы с упакованными данными, использование виртуальных топологий, методы отладки и оптимизации MPI-программ, средства профилирования параллельных программ, методы разработки библиотечных функций Содержание курса Язык программирования Fortran 77 Методы организации и управления заданиями на различных целевых ВС: - реализация LAM MPI и MPICH - особенности системы управления заданиями в МСЦ (трансляция, запуск программ, работами с очередями заданий, получение результатов) Содержание курса Специальные вопросы, связанные с технологией отладки MPI-программ: Особенности использования стандартных средств отладки Unix (dbx, gdb) для работы с параллельными программами. Использование upshot как средства отладки эффективности MPI-программ Использование отладчика TotalView. Практические задания Анализ эффективности DVM и MPI реализаций различных алгоритмов перемножения матриц Анализ эффективности DVM и MPI реализаций некоторых методов решения систем линейных уравнений Ленточный алгоритм (Кластер ВМиК МГУ) Студ. Д. Попов Ленточный алгоритм (МВС 1000м) Студ. Д. Попов Ленточный алгоритм матричного умножения Блочный алгоритм Кеннона Зависимость времени выполнения от числа процессоров для матрицы 1008х1008 100,0000 Время 80,0000 60,0000 DVM 40,0000 MPI 20,0000 0,0000 1 4 16 64 81 144 256 Число процессоров Эффективность Зависимость эффективности от числа процессоров для матрицы 1008х1008 5,0000 4,0000 3,0000 DVM 2,0000 MPI 1,0000 0,0000 1 4 16 64 81 144 256 Число процессоров Студ. Федулова Блочный алгоритм Кеннона Зависимость эффективности от размера матрицы Эффективность 2,5000 2,0000 1,5000 DVM 1,0000 MPI 0,5000 0,0000 104 504 1000 2000 Размер матрицы Студ. Федулова 5000 Выводы Поставленная цель – освоение практического параллельного программирования – достигнута Для более глубокого понимания и освоения методов эффективного параллельного программирования одного семестра мало. Благодарности Разработка спецкурса и его реализация были выполнены в рамках студенческой лаборатории Intel-МГУ. Благодарим руководство Межведомственного Суперкомпьютерного Центра за предоставление доступа к вычислительным ресурсам. Благодарим Л.В.Нестеренко за постоянное внимание к нашей работе. При разработке MPI-раздела курса были очень полезными информационные материалы сайта parallel.ru (руководитель д.ф.м.-н. Вл.В.Воеводин) и лекции профессора В.П.Гергеля.