Чему вы научитесь
- Обоснованно выбирать архитектурные решения, обеспечивающие необходимую производительность приложения, на основе ряда объективных критериев
- Применять подходящие технологии и структуры данных в зависимости от требований времени отклика и средней производительности
- Реализовывать классические многопоточные приложения с корректными применением примитивов и алгоритмов синхронизации
- Диагностировать сложные проблемы производительности
- Понимать взаимосвязь между устройством компьютера и проблемами высокопроизводительных вычислений
О курсе
Основная цель курса: научить принимать обоснованные технические решения, обеспечивающие заданный уровень производительности приложений, на основе технологического кругозора и глубокого понимания механизмов работы различных подходов к повышению производительности
Курс ставит задачу сформировать общее представление о мире высокопроизводительных вычислений на основе:
- Широкого спектр технологий: от расширений процессора до наиболее высокоуровневых библиотек асинхронного программирования
- Глубокого понимания базы || программирования: от базовым примитивов синхронизации до моделей памяти
- Формирования представления о теории и алгоритмической части современного || программирования: от классических алгоритмов синхронизации различных структур данных до сложных lock и wait-free подходов
В курсе мы встретимся с практическими заданиями на темы:
- POSIX threads и condition variables
- Lock-free алгоритмы
- Coroutines
- ...
Для кого этот курс
Курс предназначен для будущих профессиональных разработчиков программного обеспечения и программных архитекторов
Начальные требования
Курс значительным образом опирается на следующие знания (при этом наиболее сложные моменты будут отдельно повторены в модулях этого курса):
- Операционные системы
- Сети
- C++ / Java
Наши преподаватели
Программа курса
Что вы получаете
- Понимание того, когда нужно обоснованно применять методы многопоточного программирования, а когда достаточно обойтись одним потоком с, возможно, некоторыми архитектурными изменениями существующего приложения
- Набор инструментов и технологий, которые можно применить для обеспечения необходимого уровня производительности
- Осознание в целом как устроено || программирование и в каких направлениях имеет смысл развиваться в дальнейшем изучении области HPC
Price:
Бесплатно