Я хочу рассказать о Летней школе Microsoft по параллельным вычислениям, которая проходила в Москве этим летом (с 19 по 25 июля).
Полное название школы -- Высокопроизводительные и параллельные вычисления в научных исследованиях. Помню мы познакомились со студентами-экономистами, у которых была Летняя школа недалеко от нашей аудитории. Но когда мы им сказали, что мы со школы "Высокопроизводительные и параллельные вычисления в научных исследованиях", то они почему-то быстро разбежались.
Школу организовывали Microsoft Research, МГУ им. М.В.Ломоносова, Институт Программных Систем (ИПС) РАН, Институт Космических Исследований (ИКИ) РАН.
На школе было 4 основных курса:
- HPC (Burton Smith, Кирилл Фаенов, Сергей Абрамов, Юрий Болдырев)
- Linear algebra (Jim Demmel)
- Functional Programming (Simon Peyton-Jones, Satnam Singh)
- Applications (Сергей Березин, Михаил Жижин, Александр Грановский)
А ещё было 3 классных бонусных лекции:
- How to give a great research talk (Simon-Peyton Jones)
- How to write a great research paper (Simon-Peyton Jones)
- Lessons Learned (Кирилл Фаенов)
Курсы читали известные учёные с мировым именем:
Burton J. Smith is one of the world's leading computer architects. From 1988 until 1999, Smith was the chief scientist and member of the board of directors of Tera Computer Company. Smith received the 1991 Eckert-Mauchly Award and the 2003 Cray award for computer architecture.
In December, 2005, Smith was hired by Microsoft as a Technical Fellow.
Wikipedia
James Demmel's Selected Awards:
- SIAM Fellow, 2009
- Distinguished Alumnus Award in Computer Sciences and Engineering, UC Berkeley, 2004
- Invited Speaker, International Congress on Industrial and Applied Mathematics (ICIAM), 2003
- Invited Speaker, International Congress of Mathematicians (ICM), 2002
- IEEE Fellow, 2001
- National Academy of Engineering, 1999
- ACM Fellow, 1999
- NSF-CBMS Lecturer on Parallel Numerical Linear Algebra, San Francisco, 1995
- J. H. Wilkinson Prize in Numerical Analysis and Scientific Computing, 1993
- SIAG on Linear Algebra Prize 1991 (with W. Kahan) and 1988
- Presidential Young Investigator Award, 1986
- IBM Faculty Development Award, 1985
Homepage for James Demmel
Simon Peyton Jones is a British computer scientist who researches the implementation and applications of functional programming languages, particularly lazy functional languages. He is an honorary Professor of Computer Science at the University of Glasgow and supervises PhD Students at the University of Cambridge.
He is a major contributor to the design of the Haskell programming language, and a principal designer of the Glasgow Haskell Compiler (GHC). He is also co-creator of the C-- programming language, designed for intermediate program representation between the language-specific front-end of a compiler and a general-purpose back-end code generator and optimiser. C-- is used in GHC.
Wikipedia
Мне очень понравилось брать эти цитаты, потому что не каждый день можно прочитать о своём лекторе статью в Википедии. Я расскажу более подробно о курсах, которые они нам читали.
Burton Smith. High-performance computing (HPC).
Курс Смита был по сути вводным в проблематику HPC. Он рассказал о трёх барьерах, которые не дают увеличивать производительность процессора такими же темпами, как раньше. Отсюда получается, что для увеличения производительности необходима многоядерность. Но проблема в том, что параллельное программирование слишком сильно отличается от того, которым программисты занимались с момента появления компьютеров. Почти все создаваемые технологии, инструменты и алгоритмы были заточены на последовательное, а не параллельное программирование. Поэтому сегодня написание, тестирование и отладка параллельных программ превращается зачастую в кошмар программиста и это большая проблема. Я закончу несколькими цитатами с лекций:
- “We are in the middle of the most important upheaval in computer science for several decades”
- “We have to re-visit and re-think pretty much everything”
- “The end of the von Neumann model”
- “Computing must be re-invented”
- “We must rethink how we write programs”
- “We are seeing the biggest revolution in computing since its very beginnings”
James Dammel. Linear algebra.
Стандартная оценка трудоёмкости алгоритмов по количеству требуемых элементарных операций не всегда хорошо работает на практике. Одна из причин этого то, что эта модель оценки не учитывает особенностей архитектуры компьютера, на котором будет запускаться алгоритм (например, наличие нескольких уровней кэша и их конкретный размер). Джеймс рассказал об очень простой модели оценки трудоёмкости алгоритма, которая учитывает существование быстрой памяти (кэш) и медленной памяти. Не смотря на её простоту эта модель хорошо согласуется с практикой. Используя эту модель, Джеймс смог оптимизировать много известных алгоритмов линейной алгебры.
Simon Peyton Jones. Functional Programming.
Этот курс мне понравился больше всего. Он был посвящен функциональному языку Haskell и параллельному программированию на этом языке. Саймон оказался замечательным лектором, да ещё и с самым понятным английским. Кроме того, он ещё и оказался главным создателем Haskell'a, что очень приятно. Представьте, как если бы лекции по C++ вам читал Страуструп :-)
Haskell хорошо подходит для программирования математических алгоритмов, потому что он позволяет легко использовать в коде привычные математические конструкции (например, множество таких элементов, что ...). Это не только делает код короче, но и понятнее. Вот как будет выглядеть реализация быстрой сортировки на Haskell:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
Функциональные языки знамениты своей чёткой структурой, в основе которой лежит понятие функции. В некоторых случаях это позволяет уже на этапе компиляции доказать, что программа работает правильно, то есть делает именно то, что нужно, и не содержит ошибок. Ещё в некоторых случаях это позволяет автоматически распараллелить программу. Вот, например, как выглядит код быстрой сортировки, который автоматически распараллелится на множество потоков:
Возможно, на первый взгляд такой код может показаться непонятным и непривычным, но на самом деле всё просто. Например, вторая строчка снизу записывает в gr массив таких элементов f, что f принадлежит массиву a и f>m.
Simon Peyton Jones. How to give a great research talk.
Саймон прочитал ещё две увлекательных лекции о подготовке научных статей и докладов.
Саймон рассказывает как нужно выступать на научных конференциях.
Applications
На этом курсе рассказывалось о применении HPC где-нибуль. Например, в квантовой химии или в физике.
Практика
Практика проходила в зале, где в своё время стояла БЭСМ-6. Однако, проходила она не очень эффективно. Кто работал раньше с openMP и MPI, вряд ли вынес для себя что-то новое, а кто раньше с этим не сталкивался, ненамного лучше стал в этом разбираться.
Отдых
Ну и конечно было время отдохнуть и пообщаться с другими участниками школы. В культурной программе была экскурсия по Москве и круиз на теплоходе.
Заключение
Вообщем, на школе было здорово. Я познакомился с интересными людьми из разных городов (от Милана до Томска), послушал современные лекции от ведущих учёных, договорился о совместном проекте, видел НЛО, Ленина и байкеров, узнал много нового и всё это за счёт Microsoft. Следующим летом они планируют провести научную школу в Санкт-Петербурге (возможно, уже по другой теме). Так что до встречи в Питере :-)