====== Параллельное и распределенное программирование ====== Задача курса - приобрести навыки **разработки параллельных схем алгоритмов и программ**. ===== Лекционный материал ===== Замечательные лекции находятся в канале [[https://www.youtube.com/playlist?list=PL-_cKNuVAYAWpJ_t_8YLSvkoxA9GsQYVQ|Лекториума]] ===== Лабораторные работы ===== Для допуска к зачету/экзамену необходимо сделать **четыре** любые лабораторные по желанию, если не оговорено особо: Магистры ИрГУПС, 1 курс, 2 семестр делают в обязательном порядке лабу RabbitMQ (второй семестр). - Создание параллельных процессов в операционной системе Linux, Windows. Процессы должны взаимодействовать друг с другом через общий ресурс (pipe, fifo, файл, общая память, mmap, socket и т.п.), синхронизируя доступ к этому ресурсу (семафор, критические секции, мьютексы, барьеры). - Реализация вычислительного процесса на многоядерной архитектуре при помощи OpenMP. - Разработка параллельной программы для кластерной вычислительной системы средствами MPI. - Параллельные вычисления в Matlab, R. - Программирование параллельных приложений средствами библиотеки QT (см. в методичке ниже), JavaScript promises (jQuery ajax, animate, и т.п.) и подобными им (async/await). - Реализация параллельной программы в Erlang/Elixir, Haskell, SWI-Prolog. - Программа на Threading building Blocks. - Реализация распределенной программы на ScaLAPACK. - Создание распределенной вычислительной среды на основе RabbitMQ. ===== Методический материал ===== - Архив методичек "среднего качества" {{pp:parprog.7z|Здесь}}. Из них брать задания. **Замечание**: В методичке по MPI не указывается явно, что между вычислителями следует пересылать не весь массив данных а только долю. - Литература на сайте [[https://hpc.icc.ru/foruser/library.php|Суперкомпьютерного центра ИДСТУ СО РАН]]