Запускать код на разных ядрах процессора они научились ещё год назад, а теперь учатся делать это осмысленно. А ещё – отдельно разбирают, как обрабатывать сложные параллельные операции не на процессоре, а на видеокарте. Подробности рассказывает ведущий архитектор компании iSpring и преподаватель Алексей Малов.
По «закону Мура» производительность новых компьютеров раньше удваивалась каждые два года. Закон перестал работать лет 10 назад: сейчас размер транзисторов уже измеряется в нанометрах и приближается к диаметру атома (0,05 – 0,25 нанометра). А значит, теперь удваивается не столько производительность, сколько стоимость производства таких процессоров.
Поэтому прогресс пошёл другим путём: не через увеличение тактовой частоты, а через добавление дополнительных ядер процессора. Умение распараллеливать задачу на несколько ядер – необходимая база для программиста. Даже процессор обычного ноутбука оснащается 8-16 ядрами, а в современных видеокартах количество вычислительных ядер измеряется сотнями и даже тысячами.
Этим и занимаются третьекурсники на парах по Параллельному программированию – учатся писать программы, на полную использующие мощность современных процессоров и видеокарт. И здесь их ожидают две ловушки: гонка данных и дедлок.
При гонке данных параллельные потоки работают с одними и теми же переменными и конфликтуют, вызывая сбой. При дедлоке наоборот, потоки впадают в ступор в ожидании друг друга: первый ждёт пока освободится второй, а второй ждёт пока освободится первый. И всё зависает.
На парах по Параллельному программированию ребята создадут десяток сложных и интересных программ. Вот лишь пара примеров: программа для аудио- и видео-трансляций (интернет-радио и простая программа для видео-стриминга), визуализация фрактала Мандельброта (понятие из математики) и музыкальный синтезатор из клавиатуры компьютера. Подробнее об этом расскажем в следующих постах.