Курс знакомит с некоторыми принципами
разработки параллельных алгоритмов. Из всего многообразия причин, побуждающих к
использованию суперкомпьютеров, в рамках курса рассматриваются только две:
сокращение времени решения прикладных задач и обеспечение возможности решения
больших задач за заданное время. В связи с этим подчеркивается необходимость
использования, с одной стороны, самых быстрых из известных последовательных
алгоритмов, а с другой – относительно медленных, но обладающих большим запасом
внутреннего параллелизма, параллельных алгоритмов.
Обсуждается проблема балансировки загрузки
процессоров, острота которой многократно возрастает с ростом числа процессоров и
процессорных ядер. Приводятся примеры масштабируемых параллельных алгоритмов и
подходов, обеспечивающих эффективное использование большого числа процессоров.
Обсуждается ряд общих проблем использования суперкомпьютеров для обработки
научных данных, в том числе проблема рациональной декомпозиции сеточных данных.
Рассматриваются алгоритмы сортировки больших объёмов данных, методы визуализации
сеточных данных, принципы организации их распределенного хранения и
ввода-вывода.
В начале курса кратко обсуждаются основные
понятия и инструменты, достаточные для описания параллельных алгоритмов, что
позволяет свести к минимуму требования к предварительной подготовке
слушателей.