Описание:Данный курс предназначен, в первую очередь, для бакалавров осеннего семестра 4 года обучения, поскольку предполагает знакомство с основами
параллельного программирования. В то же время, условие не является обязательным в случае готовности самостоятельного освоения основ
параллельного программирования согласно рекомендациям и/или одновременного посещения иного курса по параллельному программированию
(например, "Параллельное программирование для высокопроизводительных систем").
Целью курса является расширение и применение навыков параллельного программирования. Будет рассмотрена одна из классических задач
линейной алгебры, после чего решена с использованием как последовательного подхода, так и различных методов параллельного программирования,
включая с++11 threads, OpenMP, OpenMPI (с предоставлением доступа на суперкомпьютер Polus), Cuda, а затем
сравнение полученных "вручную" результатов с теми, что достигаются имеющимися открытыми библиотеками.
Во время проведения курса предполагается практика решения задач в существенном объеме с тем, чтобы полученные знания не оставались
теоретическими, а давали уверенность в возможности применения освоенных технологий. С целью повышения качества создаваемых программ
будут также представлены такие технологии как разработка с использованием системы контроля версий (git), отладка в терминале
(gdb), использование стандарта с++11 (класс std::thread вместо pthreads, lambda-функции, range-based циклы, auto и т.д.) и выше
(например, выделение выровненной памяти средствами обновленного оператора new из стандарта c++17), статические анализаторы,
а также, возможно, элементы совместной разработки с использованием общего репозитория на bitbucket.