Є добрі й погані новини.

Погана новина полягає в тому, що партком моєї кафедри вирішив, що в 2009/2010 навчальному році студенти третього курсу залишаться без курсу з оптимізації. Це повʼязано не з тим, що курс складний або нікому не потрібний. Цього року я переконався, що якщо взяти почитати методички, то середньому студентові до снаги розібратися. Найімовірніше, це повʼязано з розподілом навантаження викладачів. Тепер цей курс можна буде почути тільки на вечірніх заняттях на нашій кафедрі.

Добра новина полягає в тому, що роботи з розвитку дисциплін з оптимізації та паралельного програмування на цьому не зупиняться. Минулого року я вперше читав цей курс для студентів СКС і встиг зробити якісь слайди. Цього року до слайдів додався конспект лекцій, хоч і не повний, а також методичка з лабораторних робіт. Мені хотілося б піти далі й написати великий конспект лекцій (книгу?), який би обʼєднав дисципліни «Багатоядерне програмування» і «Вступ до оптимізації продуктивності програмного забезпечення».

Уявляю собі, що ця книга має складатися з кількох частин. Перша — вступно-мотиваційна, щоб після її прочитання не залишилося сумнівів у важливості предмета. Також у цій частині потрібно буде пояснити різні поняття паралельного програмування. Друга — архітектурна, у якій буде пояснено, за рахунок чого програми на двоядерному процесорі працюють удвічі швидше, і чому спрацьовують оптимізації послідовного коду. У третій частині розповісти про різні бібліотеки для паралельного програмування: WinAPI/POSIX, OpenMP, Intel TBB. В останній частині буде розказано про послідовні оптимізації, коли всі паралельні бібліотеки вже підключено, а швидкості роботи не вистачає.

У мене є чернетка такого конспекту. Ви можете легко її завантажити: optimization.pdf. Прошу врахувати, що це чернетка — деякі розділи не дописані, деяких розділів немає, рисунки намальовані криво, місцями немає форматування. Така собі альфа-версія. Але вже зараз із неї можна дізнатися:

  1. Відмінність різних інструментів аналізу продуктивності.

  2. Трохи про Intel TBB.

  3. Основні проблеми роботи з памʼяттю.

  4. Трохи про оптимізацію розгалужень.

  5. Трансформації циклів.

  6. Автоматичні оптимізації в компіляторах.

  7. Вступ до OpenMP.

Таким чином, ви вже зараз можете почати ним користуватися.

Я був би дуже вдячний, якщо ви напишете ваше бачення, що має бути в такому конспекті. Також — якщо ви повідомите про помилки або незрозумілі місця в поточній версії тексту. Можливо, у вас є якісь запитання, на які немає відповідей. Цей блог зручний тим, що можна розглядати частину питань уже зараз, не чекаючи фінальної версії конспекту.

З радістю прийму будь-які коментарі тут або за адресою електронної пошти: volodymyr.obrizan@gmail.com.