Федеральное государственное автономное образовательное учреждение высшего профессионального образования «Уральский федеральный университет имени первого Президента России Б.Н.Ельцина Институт математики и компьютерных наук Кафедра высокопроизводительных компьютерных технологий УТВЕРЖДАЮ: Зав. кафедрой высокопроизводительных компьютерных технологий, к.т.н. А.В.Созыкин 05 мая 2015 года Программа государственного экзамена по магистерской программе «Системное программирование» направления подготовки 010200.68 «Математика и компьютерные науки» Понятия алгоритма и его уточнения: машины Тьюринга, нормальные алгоритмы Маркова. Понятие сложности алгоритмов. Классы P, NP, PSPAСE. Примеры NP-полных задач. Классы Nck. Основные положения теории графов. Типы графов, способы задания графов. Изоморфизм, отображения. Критерий планарности. Виды и свойства бинарных деревьев. Представление деревьев общего вида. Алгоритмы обхода вершин графа. Алгоритмы разбиения графа на подграфы заданного типа. Сериализация данных c JSON и Protocol Buffers. Apache Spark и абстракция RDD. Очереди сообщений и AMQP. Коммуникации в ZeroMQ. Удалённый вызов процедур в Apache Thrift. Акторы в Erlang/OTP и Akka. Пиксельное представление изображений. Понятие гистограммы изображения. Алгоритм эквализации гистограммы. Простейшие фильтры: усредняющий фильтр и медианная фильтрация. Алгоритмы их вычисления и специфика применения. Сглаживающий фильтр на основе функции Гаусса. Дискретное преобразование Фурье, одномерный случай. Основные свойства дискретного преобразования Фурье. Примеры спектров. Теорема о свёртке. Задача восстановления изображений. Оценка функции рассеивания точки. Фильтр Винера. Понятие оптического потока. Алгоритм ЛюкасаКанаде. Обучение с учителем. Алгоритм обучения перцептрона. Теорема Новикова о сходимости алгоритма обучения перцептрона. Параллельные прямые численные методы решения СЛАУ. Параллельные итерационные методы решения систем линейных алгебраических уравнений (СЛАУ). Решения СЛАУ для разреженных матриц. Составные квадратурные формулы, порядок их точности, возможности для распараллеливания. Параллельные методы решения систем обыкновенных дифференциальных уравнений. Сеточные методы решения задач мат. физики. Устойчивость явных и неявных разностных схем для нестационарной задачи теплопроводности. Решение нестационарной задачи теплопроводности с использованием метода прогонки и циклической редукции - параллельные варианты Задачи “Computational intensive”, “Data intensive”. Задачи обработки графов: представление графов в памяти вычислительной системы, распределение вершин по вычислительным узлам. Поиск в ширину: параллельные алгоритмы на основе использования очереди, и на основе полного обхода вершин. Поиск кратчайших путей из одной вершины: алгоритм дельта-степпинга. Классификация вычислительных архитектур для параллельной обработки, архитектура GPU. CUDA: взаимодействие CPU и GPU, запуск приложений с поддержкой CUDA. CUDA: потоки, блоки, сетки, вычислительное ядро. Иерархия памяти в CUDA: регистровая, локальная, глобальная память. Оптимизация работы с глобальной памятью: выравнивание, объединение запросов в память. Иерархия памяти в CUDA: разделяемая память. Потоки в CUDA (Streams). Управление несколькими GPU в последовательной программе. Управление несколькими GPU в параллельной программе. Прикладные библиотеки в CUDA. Стандарт директивного программирования OpenACC. OpenCL. Факторы, влияющие на производительность процессора. Оптимизации, выполняемые компилятором: скалярные, оптимизации циклов, межпроцедурные. Уровни оптимизации компилятора, отчет об оптимизации. Векторизация, векторные расширения современных процессоров, отчет о векторизации. Оптимизированные математические библиотеки. Архитектура параллельных вычислительных систем. Компьютеры с общей памятью. Архитектуры SMP, NUMA, ccNUMA. Многоядерные процессоры и SMP-узлы на их основе. Компьютеры с распределенной памятью. MPP-системы и вычислительные кластеры. Сети в компьютерах с распределенной памятью. Многопоточное программирование. Процессы, потоки. Условия гонок. Свойства параллельной программы: недетерминированность, безопасность, живучесть, справедливость. Критические секции. Взаимное исключение. Условная синхронизация. Взаимоблокировка. Динамическая взаимоблокировка. Параллельные вычисления. Технология программирования OpenMP: директивы компилятора, функции, переменные окружения. Технология программирования MPI. Операции передачи данных точка-точка. Коллективные операции передачи данных. Обработка больших объемов данных. Технология Map Reduce. Apache Hadoop. Распределенная файловая система HDFS. Apache Hive и Apache Pig. Тестирование и отладка. Генерация тестов. Средства отладки. Методы организации сетей ЭВМ. Основные принципы их функционирования. Классификация сетей по масштабу и топологии. Понятие сетевого протокола. Семиуровневая модель OSI/ISO. Сетевая архитектура TCP/IP: основные принципы организации и функционирования. Способы маршрутизации сообщений в сетях ЭВМ. Системы координат и преобразования. Представление поверхностей и машинная графика. Алгоритмы вычислительной геометрии. Методы растровой графики. Алгоритмы отсечения. Удаление невидимых линий и поверхностей. Алгоритмы закраски. Метод трассировки лучей. Литература 1. Гонсалес Р., Вудс Р., Цифровая обработка изображений, М.: Техносфера, 2012 г. 2. Шапиро Л., Стокман Д., Компьютерное зрение, М.: Бином, 2006 г. 3. Параллельные численные методы. http://www.hpcc.unn.ru/?doc=491 4. Dean J., Ghemawat S. MapReduce: Simplified Data Processing on Large Clusters // Communications of the ACM. – 2008. – Vol. 51. – №. 1. – P. 107-113. 5. Armstrong J. Programming Erlang: Software for a Concurrent World. — 2nd edition. — Pragmatic Bookshelf, 2013. — 548 pp. 6. Кормен Т. и др. Алгоритмы: построение и анализ — 2-е изд. — М.: «Вильямс», 2006. — С. 1296. 7. Кнут Д. Искусство программирования, том 1. Основные алгоритмы — 3-е изд. — М.: «Вильямс», 2006. — С. 720. 8. Макгрегор Д., Сайкс Д. Тестирование объектно-ориентированного программного обеспечения — К.: «Диасофт», 2002. — С. 432. 9. Дейтел Х., Дейтел П., Чорнес Д. Операционные системы. Основы и принципы. 10. Таненбаум Э. Современные операционные системы. 3-е издание. 2014. – 1120 с. 11. Таненбаум Э. Компьютерные сети. 5-е изд. 2014 – 960 с. 12. Воеводин В.В. Вычислительная математика и структура алгоритмов. 13. Гергель В.П. Высокопроизводительные вычисления для многопроцессорных многоядерных систем. — М. : Изд-во Московского ун-та, 2010. — 539 с. 14. Антонов А.С. Параллельное программирование с использованием технологии MPI: Учебное пособие. – М.: Изд-во МГУ, 2004. – 71 c. 15. Антонов А.С. Параллельное программирование с использованием технологии OpenMP: Учебное пособие. – М.: Изд-во МГУ, 2009. – 77 c.