На главную | Мои школьные друзья | Шпаргалки | Юмор | Для студентов | OEIS | Экспедиции | Карты флоры России
Дисциплины "Программирование", "Объектно-ориентированное программирование" (язык Delphi, 2004–2026)Вопросы к экзамену Download (4 КБ)
Вопросы к экзамену Download (3 КБ)
Вопросы к экзамену Download (3 КБ)
Разделы дисциплины:1. Введение в параллельное программированиеГрид-системы:Краткий исторический экскурс в историю развития параллельных систем и вычислений, основные современные проблемы и перспективы развития параллельного программирования. Закон Мура. Закон Деннарда. Классификация вычислительных систем по Флинну. Их влияние на архитектуру вычислительных систем с возможностью параллельной обработки информации (взгляд с точки зрения параллельного программирования: SISD/SIMD/MIMD, CISC/RISC/VLIW).2. Понятие производительности вычислительной системы и способы ее измерения
Пиковая и реальная производительность, единицы измерения, аналитические оценки, CPI/IPC, бенчмарки (LINPACK, SPEC CPU, Intel IOMeter, RMMA, 3DMark, AIDA64, CINBENCH). Проблема первого прохода, статистическая обработка результатов измерений.3. Закон Амдала. Закон Густавсона-Барсиса
Теоретическая оценка выигрыша от распараллеливания. Оценка масштабируемости с ростом числа вычислителей4. Средства аппаратной поддержки параллельного исполнения программного кода
Основные способы организации (микро)архитектуры современных вычислительных средств, поддержка со стороны разработчика, виды параллелизма. Конвейеризация выполнения микроопераций, ILP, векторный параллелизм (MMX, SSE, AVX, AMX), многопоточное выполнение кода (SMT, Hyper-Threading Technology), видеокарты с поддержкой технологии GPGPU, специализированные ускорители (Intel Xeon Phi, TPU/NPU), вычислительные кластеры и суперкомпьютеры, грид-системы.5. Теоретические основы оценки эффективности параллельных программ
Граф «операции – операнды». Ярусно-параллельная форма. Зависимости по данным и по управлению. Расписание запуска подзадач. Критический путь, оценки теоретически минимального времени выполнения. Показатели эффективности параллельных алгоритмов: ускорение, эффективность, стоимость вычислений. Схемы параллельных вычислений: последовательная, пирамидальная, модифицированная. Оценка коммуникационной сложности параллельных алгоритмов.6. Практическая оценка эффективности параллельных программ. Профилирование и оптимизация программных средств
Понятие и функции профайлера: Intel VTune, Intel Parallel Studio, AMD CodeAnalyst. Идентификация узких мест, понятие алгоритмической, высокоуровневой и микроархитектурной оптимизации, примеры оптимизации и рекомендации, анализ возможностей и качества кода современных компиляторов (ICC/IFC, MSVC, GCC, CLang, LLVM). Примеры программирования: классическое умножение матриц, буферизованное и блочное умножение матриц с оптимизацией работы подсистемы (кэш)памяти.7. Программирование векторных расширений системы команд процессоров семейства x86Расширение MMX: целочисленные типы данных, MM-регистры, система команд (векторные арифметические, логические, сдвиги, сравнения, пересылки данных, упаковки/распаковки), генерация констант. Расширение 3DNow: вещественные типы данных, векторные и горизонтальные команды, команды преобразования, быстрое вычисление обратных значений с использованием формул Ньютона-Рафсона. Расширение SSE: вещественные типы данных, XMM-регистры, команды пересылки данных, скалярные и векторные команды, арифметические и логические команды, команды сравнения, команды распаковки/упаковки и перемешивания, команды преобразования, команды префетча. Расширение SSE2: целочисленные и вещественные типы данных, система команд. Расширения SSE3 и SSSE3: дополнительные команды пересылки, горизонтальные команды, гетерогенные команды, обработка комплексных чисел. Расширения AVX, AVX2 и AVX-512: типы данных, YMM- и ZMM-регистры, команды маскирования операций, gather/scatter, broadcast, команды работы с битами. Обзор расширений AMX, GFNI, AES, SHA. Обзор организации расширения ARM NEON. Примеры программирования: обработка одномерных массивов (векторов), обработка матриц, обработка изображений масочными операторами, векторизация в задачах без явных признаков векторизации (формула Герона, ряды Тейлора).8. Организация параллельного исполнения кода в операционной системе с вытесняющей многозадачностьюПотоки и процессы. Дескрипторы, приоритеты потоков и процессов, привязка к ядрам процессора. Примитивы синхронизации. Семафоры, мьютексы, критические секции. WinAPI, WaitForSingleObject/WaitForMultipleObjects. Проблема блокировок. SMP и NUMA системы. Введение в технологию OpenMP. Стандарт POSIX, введение в POSIX PThreads. Примеры программирования: поэлементное сложение векторов, умножение матриц.9. Программирование с использованием интерфейса MPIПринципы организации и программирования кластерных систем, кластеры и суперкомпьютеры. Сильно- и слабосвязные задачи. Интерфейс MPI. Блокирующие и неблокирующие обмены. Примитивы синхронизации. Топологии обмена данными. Виды обменов. Планировщик ресурсов SLURM: обзор основных возможностей. Примеры программирования: поэлементное сложение векторов, умножение матриц, алгоритмы Фокса и Кэнона, задача N тел.10. Программирование в рамках концепции GPGPUКонцепция GPGPU. Основные инструментарии программирования: CUDA, OpenCL, STREAM, OpenACC. Организация GPU на аппаратном уровне: память, потоковые мультипроцессоры, организация обмена данными через шину PCI Express. Типы данных. Математические функции, типы округления. Сетка, блоки и нити (thread'ы). Группы потоков (WARP’ы). Конфигурация запуска CUDA-ядра. Синхронное и асинхронное исполнение кода. Барьерная синхронизация, синхронизация CPU и GPU. Обработка ошибок. Типы памяти GPU: глобальная, разделяемая, локальная, текстурная, константная, регистровая; организация, время доступа, кэширование. Примеры программирования: поэлементное сложение векторов, скалярное произведение векторов, транспонирование матрицы, сложение матриц, умножение матриц, задача N тел.11. Грид-системыТипы грид-систем: desktop grid, enterprise grid. Добровольные распределенные вычисления: организация, проекты (GIMPS, Folding@Home, etc.). Инструментарии для организации грид-систем: ***, Fresco, Globus Toolkit, HTCondor.Лабораторная работа № 1 "Добровольные распределенные вычисления" Download (1,2 МБ)Алгоритмическая, высокоуровневая, микроархитектурная оптимизация:
Лабораторная работа № 2 "Конфигурация сервера проекта добровольных распределенных вычислений" Download (x МБ)
Лабораторная работа № 3 "Методика измерения времени выполнения заданного фрагмента программы" Download (314 КБ)Программирование векторных расширений (MMX, SSE, AVX):
Лабораторная работа № 4 "Использование инструкции CPUID для определения функциональных возможностей CPU" Download (365 КБ)
Лабораторная работа № 5 "Измерение латентности, темпа обмена данными и пропускной способности кэш-памяти процессора и оперативной памяти для заданной вычислительной системы" Download (780 КБ)
Лабораторная работа № 6 "Введение в алгоритмическую и высокоуровневую оптимизацию на пример задачи умножения матриц" Download (234 КБ)
Лабораторная работа № 7 "Использование векторных расширений системы команд процессора на примере решения задач обработки одномерных массивов" Download (317 КБ)Программирование в рамках концепции GPGPU (CUDA, OpenCL, STREAM):
Лабораторная работа № 8 "Использование векторных расширений системы команд процессора на примере решения задачи умножения матриц" Download (x КБ)
Лабораторная работа № 9 "SIMD-оптимизация сверточных операторов обработки изображений на примере оператора Собела с использованием различных наборов команд" Download (379 КБ)
Лабораторная работа № 10 "Разработка программ с поддержкой технологии CUDA с использованием компилятора командной строки" Download (220 КБ)Многопоточное программирование (WinAPI, OpenMP, PThreads):
Лабораторная работа № 11 "Определение параметров видеокарты с поддержкой технологии CUDA в среде Microsoft Visual Studio" Download (298 КБ)
Лабораторная работа № 12 "Измерение пропускной способности памяти видеокарт с поддержкой технологии CUDA" Download (175 КБ)
Лабораторная работа № 13 "Оптимизация работы с глобальной и разделяемой памятью для видеокарт с поддержкой технологии CUDA" Download (219 КБ)
...Программирование с использованием интерфейса MPI:...Вопросы к экзамену Download (2 КБ)
Программа для численного решения задачи N тел
Вопросы к зачету Download (2 КБ)
Задание на контрольную работу Download (300 КБ)
Задание на курсовой проект Download (162 КБ)
Задание на контрольную работу Download (1,2 МБ)
Задание на контрольную работу Download (143 КБ)
Задание на курсовую работу/проект Download (3,3 МБ)
...
...
...
Последнее обновление странички: 14.04.2026