Оптимизация программ для современных компьютерных архитектур

, Intel

Рабочая программа курса:

Основные принципы и цели оптимизации (закон Амдала и т. п.), алгоритмы (O-характеристика, недостаточность O-характеристики для сравнения алгоритмов, граф алгоритма, параллельность, особенности наложения на конкретные архитектуры). Роли и распределение нагрузки различных подсистем (CPU/RAM/HDD) в современных приложениях (HPC/Multimedia/DB/Web etc.). Современные состояния и направления в микро-архитектурах (CISC, RISC, EPIC) и их особенности (OOO, VLIW), примеры и сравнения, преимущества и недостатки. Проявление тенденции на использование параллельного исполнения на разных уровнях компьютерных систем (Superscalar, SIMD, SWP, SMT, DC etc.) Современные языки/средства разработки ПО Native(C/C++/Fortran) и Managed Runtime (.NET/Java), области применения, сравнение, преимущества и недостатки, базовые техники оптимизации. Типы приложений (Loop dominated, procedural oriented), особенности выполнения на различных архитектурах (EPCI, SWP, OOO, etc.), типичные проблемы производительности (loop independence, deep callstack etc., memory bandwidth, cache usage), способы анализа и высокоуровневой оптимизации. Архитектура типа CISC на примере IA32/EM64T, особенности оптимизации (SIMD vectorization), обзор системы команд, типичные примеры проблем производительности. Архитектура типа WLIW (or EIPC, or post-RISC) на примере Itanium, особенности оптимизации (SWP), более детальное рассмотрение преимущества/недостатки по сравнению с CISC и RISC, особенности (SWP, ), обзор системы команд, типичные примеры проблем производительности. Использование программных инструментов для повышения производительности: компиляторы (ICC/GCC/MS), профайлеры(VTune/Perf. mon. etc.), библиотеки(BLAS/LAPACK[MKL], IPP, etc.), API/стандарты программирования (OpenMP, MPI). Низкоуровневый анализ производительности, используя архитектурные средства для архитектуры Itanium. Низкоуровневый анализ производительности, используя архитектурные средства для архитектуры IA32/EM64T.