5 мая 2009 г.

Завершился курс «Многоядерное программирование»

Сегодня была последняя лекция по «Многоядерному программированию», курс, который я читаю для студентов нашего клуба. Хотелось бы поблагодарить ребят, которые, несмотря на то, что курс не рассчитан на первокурсников, несмотря на позднее время проведение занятий, всё равно продолжали ходить до самого конца. Мне могут позавидовать многие преподаватели, что у студентов такая высокая внутренняя мотивация. За эти 22 лекции и практические работы успели многое: программировали под библиотеки OpenMP, WinAPI, MPI, Intel Threading Building Blocks, испытали программы Intel VTune Performance Analyzer, Thread Checker, Thread Profiler, даже хватило времени отвлечься и попробовать оптимизацию последовательных программ под особенности микроархитетуры Intel Core2 Duo. Хотелось бы получить обратную связь от вас: что понравилось в курсе, а что не понравилось? Что можно улучшить, что можно ухудшить? В частности, у меня есть такие вопросы:
  • нужно ли изучать WinAPI или необходимо начать с OpenMP и больше сосредоточиться на Intel TBB?
  • нужно ли больше внимания уделить устройству микроархитектуры?
  • что было тяжелее всего для понимания, а на каких темах вы «зевали»?
  • что можно рассмотреть подробнее, а что можно выкинуть?
  • какие примеры нужно рассматривать на лабораторных?
  • что нужно сделать, чтобы курс стал интереснее, веселее, полезнее?
Отвечать можно в комментариях, писать на volodymyr.obrizan@dnt-lab.com или говорить при личной встрече. Любая помощь будет кстати. Спасибо! Желающие прослушать этот курс должны подождать осени. Скорее всего, я его прочитаю ещё раз в рамках наших клубных занятий.

4 комментария:

  1. И Вам большое спасибо за все, что мы узнали (и не только о многоядерном программировании). Многим преподавателям стоит завидовать не только нашей мотивации, но и Вашему преподаванию (точнее отношению к студентам;)

    На счет вопросов:
    Как по мне, то изучение WinAPI можно ограничить - просто сказать, что он такой есть. Не из-за мого хорошего или плохого отношения к Windows, а по делу. Он для меня сложный, непонятный и даже не кроссплатформенный. Если по всем остальным технологиям, я эксперементировал с исходинками, разбирал примеры, то на WinAPI я полностю потерялся :) И особой его полезности тоже не знаю, поэтому ИМХО - долой WinAPI.

    OpenMP простой, с ним классно учить многоядерное программирования с нуля, прост в употреблении - можно почти сразу писать лабы с его использованием. Поддерживается и VisualStudio, и новым GCC :)

    Интерессно изучать микроархитектуру, что бы лучше понимать, как все работает. Хотя Выши обьяснения были доступными, помоему.

    Тяжело было снова таки на WinAPI (там и зевали :) ) и сложновато далось TBB с Pipeline - классы на нашем потоке только начали рассказывать, а на некоторых еще и не упоминали. Это еще и курсы С++ для меня очень усложнило.

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

    В заключении: было бы неплохо убрать WinAPI и больше поработать с TBB, разобрать больше примеров и написать собственные, используя возможности этой библиотеки.
    А что бы сделать курс интересснее, веселее и полезнее - продолжайте в том же духе! Вы - прекрасный преподаватель (уже ведь можем сравнивать ;) )

    ОтветитьУдалить
  2. Zoresvit, спасибо за отзыв! Да, я тоже подумываю, чтобы сократить WinAPI до одной лекции. В ней отразить принцип программирования: ручное создание потоков, раздача работы, синхронизации. WinAPI по отношению к TBB, как ассемблер по отношению к С++. :)

    ОтветитьУдалить
  3. Владимир Игоревич, большое вам спасибо за очень интересный курс (как и все остальные курсы на CET - за что отдельное спасибо преподавателям)!
    За эти полгода мы узнали очень много нового про архитектуру процессоров, принципы оптимизации программ, ну и, конечно, параллельное программирование.

    Feedback:
    1. Нужно ли изучать WinAPI или необходимо начать с OpenMP и больше сосредоточиться на Intel TBB?

    ИМХО: обязательно нужно изучать "raw threads programming". Лучше, конечно, использовать pthreads, но на крайний случай можно и WinAPI. Может этот метод в чём-то менее удобный чем использование TBB или OpenMP, но зато он куда более "прозрачный". В TBB, ИМХО, за всей этой абстракцией теряется простота - и понять код сложнее, чем на простых потоках.

    2. Нужно ли больше внимания уделить устройству микроархитектуры?
    По-моему тут всё было как раз в меру.

    3. Что было тяжелее всего для понимания, а на каких темах вы «зевали»?
    Тяжелее всего для понимания: TBB.
    Зевал на MPI =)

    4. Что можно рассмотреть подробнее, а что можно выкинуть?
    ИМХО: выкинуть MPI.
    Подробнее: "raw threads" (Pthreads/winapi), TBB.

    5. Какие примеры нужно рассматривать на лабораторных?
    Что нужно сделать, чтобы курс стал интереснее, веселее, полезнее?

    Здесь по-моему курс получился удачным, за исключением того, что мы долго бились с MPI, ну и сборка проектов с зависимостями от сторонних библиотек в Visual Studio не самое приятное занятие.

    P.S. Насчёт TBB: я знаю, некоторым он очень понравился и он действительно хорош в большинстве задач, но, ИМХО - не стоит принимать его как ману небесную =) Да, и перед началом чтения TBB лучше спросить у слушателей, знакомы ли они с классами/шаблонами/STL, иначе TBB будет очень тяжело понять (в этом плане нам повезло - у нас читал лекции Бог C++ =), за что ему большое спасибо =) ).

    P.P.S. Если бы половина преподавателей ХНУРЭ относилась к своей работе так, как это делает Владимир Игоревич, мы бы точно были лучшими в мире. Спасибо вам, за то, что вы есть! =)

    ОтветитьУдалить
  4. amd4ever, спасибо за развернутые комментарии! Будем развивать курс дальше.

    ОтветитьУдалить

Темы

2012 (2) амазон (1) анпакинг (1) артемий лебедев (4) атн (1) аудио (1) аэропорт (1) безопасность (3) бизнес (1) билайн (1) блог (2) будущее (2) видео (11) википедия (5) вымысел (16) гагарин (1) герман (1) гитхаб (1) гугл (3) дед мороз (1) декабрь (1) демотиватор (2) дети (2) дизайн (13) диссертация (2) документация (1) друзья (5) евпатория (1) евро-2012 (1) жадность (1) заяц (1) идея (1) имейл (1) инстаграм (1) интервью (5) интересное (20) интерфейс (13) история (7) как_выжить (4) календарь (1) капитализм (1) картина (1) кмб (6) книга (6) коллекция (4) компилятор (2) конкурс (5) космос (1) лаборатория (1) либералы (1) лингво (1) лузер (6) макаренко (2) макдональдс (2) математика (1) медиапорт (1) ментор (1) металлика (1) металлист (2) метро (7) микрософт (6) миргород (1) москва (2) музыка (3) наркомания (1) новости (17) образование (3) оптимизация (5) основы (14) открытки (3) ошибка (11) памятник (1) патриотизм (3) плагиат (1) плата (1) погода (3) поиск (1) политика (2) полтава (2) праздник (1) программирование (15) прошлое (2) путешествия (8) рейтинг (1) рендер (1) рисунок (2) русские (1) русский язык (1) сайт (4) санкт-петербург (1) сапр (7) сеть (1) си++ (1) синтез (1) системси (1) скриншот (40) социализм (1) соцопрос (3) спектрум (2) спорт (2) срач (2) статистика (1) такси (1) тбб (3) твитер (9) тимошенко (1) украина (5) униан (1) фан (30) фокус (1) фото (39) фотошоп (1) фурсенко (1) футбол (2) хабр (1) харьков (21) хнурэ (19) хобби (4) цитата (2) чехия (1) школа (1) эпл (1) эхостар (1) юмор (1) яндекс (1) clang (2) doxygen (1) english (3) ios (1) llvm (1) msdn (1) outlook (1) PHP (1) stackoverflow (1)

Поиск

Архив

Читатели