ПАРАЛЕЛНО ПРОГРАМИРАНЕ С MPI

(курс за магистри)

Преподавателски екип: доц. д-р Ана Пройкова (ФзФ), ас. Стоян Писов (ФзФ), Христо Илиев (ФзФ)

Хорариум на курса: 30+0+30 часа (5 ECTS)

Кратко описание: Курсът дава основни познания в областта на програмирането на паралелни архитектури с разпределена памет (distributed memory machines) чрез използване на стандарта за предаване на съобщения Message Passing Interface (MPI).
След кратък увод в основните концепции на високопроизводителните изчисления и главните области на тяхното приложение се разглеждат методите за оценка на ефективността и характеристиките на последователните и паралелните изчислния. Следва изложение на основите на стандарта MPI и неговото приложение за създаване на преносими паралелни програми. Разглеждат се и някои техники за профилиране и настройка.
Курсът включва практически занимания върху 32-ядрен Linux клъстер. За текуща проверка на усвояването на материала са предвидени два теста и финален курсов проект.
Тъй като MPI е индустриален стандарт, то знанията, придобити по време на курса, ще позволят на студентите да разработват паралелен софтуер върху множество индустриални платформи, за които съществуват реализации на MPI: Sun SunFire, IBM SP2, SGI, Cray T3, клъстери от работни станции и др.

Целева аудитория: студенти от магистърските програми на ФМИ, ФзФ, ХФ и други, интересуващи се и/или нуждаещи е от високопроизводителни изчисления.

Очаквани резултати: След завършване на курса, студентите следва да могат:
   - да познават най-широко използваните паралелни платформи и моделите за тяхното програмиране
   - да представят в детайли идеологията на предаването на съобщения
   - да съставят, компилират, настройват и профилират MPI програми

Изисквания: От студентите, посещаващи курса, се очаква познаването на един от двата процедурни езика - C или Fortran (77 или 90/95), по избор. Желателен е опит в работата с текстови и графични среди под Unix-подобни операционни системи.

Програма на курса:

  1. Увод във високопроизводителните изчисления
  2. Предаване на съобщения
  3. Интерфейсът MPI
  4. Основи на MPI
  5. Комуникация от точка до точка
  6. Неблокиращи операции
  7. Производни типове данни
  8. Виртуални топологии
  9. Синхронизация
  10. Разпределяне на работата
  11. Глобални редукции
  12. Още за MPI
  13. Профилиране и настройка на MPI програми
  14. Примерни приложения в точните науки
  15. Примерни приложения в икономиката, биологията и медицината