Запускать код на разных ядрах процессора они научились ещё год назад, а теперь учатся делать это осмысленно. А ещё – отдельно разбирают, как обрабатывать сложные параллельные операции не на процессоре, а на видеокарте. Подробности рассказывает ведущий архитектор компании iSpring и преподаватель Алексей Малов.

По «закону Мура» производительность новых компьютеров раньше удваивалась каждые два года. Закон перестал работать лет 10 назад: сейчас размер транзисторов уже измеряется в нанометрах и приближается к диаметру атома (0,05 – 0,25 нанометра). А значит, теперь удваивается не столько производительность, сколько стоимость производства таких процессоров.

Поэтому прогресс пошёл другим путём: не через увеличение тактовой частоты, а через добавление дополнительных ядер процессора. Умение распараллеливать задачу на несколько ядер – необходимая база для программиста. Даже процессор обычного ноутбука оснащается 8-16 ядрами, а в современных видеокартах количество вычислительных ядер измеряется сотнями и даже тысячами.

Этим и занимаются третьекурсники на парах по Параллельному программированию – учатся писать программы, на полную использующие мощность современных процессоров и видеокарт. И здесь их ожидают две ловушки: гонка данных и дедлок.

При гонке данных параллельные потоки работают с одними и теми же переменными и конфликтуют, вызывая сбой. При дедлоке наоборот, потоки впадают в ступор в ожидании друг друга: первый ждёт пока освободится второй, а второй ждёт пока освободится первый. И всё зависает.

На парах по Параллельному программированию ребята создадут десяток сложных и интересных программ. Вот лишь пара примеров: программа для аудио- и видео-трансляций (интернет-радио и простая программа для видео-стриминга), визуализация фрактала Мандельброта (понятие из математики) и музыкальный синтезатор из клавиатуры компьютера. Подробнее об этом расскажем в следующих постах.

Игорь Соколов
Автор статьи
Игорь Соколов
Программирование начинается не с кода, или что такое диаграммы классов
Программирование начинается не с кода, или что такое диаграммы классов
Запускаем программу на разных ядрах процессора. Пары по ОС и сетям
Запускаем программу на разных ядрах процессора. Пары по ОС и сетям
Какие пары помогают программисту в работе. Подборка
Какие пары помогают программисту в работе. Подборка
ООП: программисты и бизнес-инженеры начали изучать объектно-ориентированное программирование
ООП: программисты и бизнес-инженеры начали изучать объектно-ориентированное программирование