Введение
Об авторе. Раджеш Кармани (Rajesh Karmani) является аспирантом кафедры информатики (Department of Computer Science) университета Иллинойса (Урбана-Шампейн). Его текущие интересы заключаются в языках программирования и разработке ПО. Раньше он работал над беспроводными сенсорными сетями и многоагентными системами.
Многие наши читатели наверняка знают новость о том, что Intel и Microsoft организовывают два исследовательских центра “The Universal Parallel Computing Research Center” (UPCRC) в университете Калифорнии (Беркли) и в университете Иллинойса (Урбана-Шампейн, UIUC) с грантом по $10 млн. на каждый. Кроме того, Иллинойсу будет выдан отдельный грант на $8 млн., который будет распределён между преподавателями кафедры информатики (Department of Computer Science) и кафедры электроники и компьютерной техники (Department of Electrical and Computer Engineering).
Хотя новость появилась 18 марта, слухи (особенно название Беркли) начали появляться в технологической прессе намного раньше. Беркли и Иллинойс были выбраны из начального списка 25 лучших университетов в США, включая Массачусетский технологический институт (MIT) и Стэнфордский университет. Вложение денег в Иллинойс тем более интересно, поскольку это является признанием продолжающегося лидерства этого университета в области параллельных вычислений, ещё со времён Illiac IV в 1960-х годах.
Illiac IV.
Недоразумения
На некоторых сайтах мы встречали мнение, что $10 млн. – это капля в море для Intel и Microsoft, поскольку обе компании ежегодно получают миллиарды долларов прибыли. Кроме того, учитывая, что проблема программирования под многоядерные чипы является существенным риском для ключевого бизнеса компаний, объём финансирования на первый взгляд действительно кажется крошечным. Но не следует думать, что в Intel и Microsoft сидят недальновидные люди. Обе компании уже давно и плотно сотрудничают с университетами. Они понимают, что $10 млн. – достаточно большая сумма, чтобы заинтересовать научных работников в университетах, особенно связанных с компьютерной техникой и информатикой, которым нужны только компьютеры и аспиранты. Они не покупают телескопы и ядерные реакторы. Ну, вы понимаете.
Если судить по новостям о проекте из блогов и специализированных сайтов, учёные в Иллинойсе планируют ускорить весьма любопытные исследования. Коллектив преподавателей в центре UCPRC в университете Иллинойса действительно впечатляет, как на индивидуальном уровне, так и на коллективном. Их экспертный уровень охватывает весь спектр вычислений, известных сегодня.
Группа проекта
Исследовательский проект захватывает темы от микроархитектуры (Wen-mei Hwu, Sanjay Patel, Craig Zilles) до компьютерной архитектуры (Marc Snir, Sarita Adve, Joseph Torrellas, Rakesh Kumar), от компиляторов (Vikram Adve, David Padua, Matthew Frank, Maria Garzaran) до языков программирования и моделей программирования (Gul Agha, Laxmikant Kale), от программного дизайна (Ralph Johnson), тестирования и проверки параллельно выполняющегося ПО (Grigore Rosu, Darko Marinov, YuanYuan Zhou) до пользовательских приложений (Klara Nahrstedt). Кроме того, в проекте ряд исследователей будут работать над искусственным интеллектом (Eyal Amir, David Forsyth, Dan Roth) и графикой (John Hart), которые тоже являются весьма важными областями параллельных алгоритмов.
В Иллинойсе есть понимание, что новый класс приложений следующего поколения значительно усилит потребности в параллельных вычислениях, доступных со стороны процессора. Однако у центра в Иллинойсе есть и слабые стороны в области операционных систем и виртуализации. Как нам кажется, эффективные и надёжные runtime-модули, которые работают с межъядерным взаимодействием, планированием, управлением ресурсами, безопасностью и отладкой в многоядерном окружении очень важны для уровней выше. Фактически, многоядерные процессоры дают возможность исправить ошибки прошлого, используя дополнительную вычислительную мощность для улучшения безопасности платформы.
Брешь между обществом и исследователями
Впрочем, есть вопросы, которые следует тщательно проанализировать. Традиционно академические исследователи заинтересованы в упрочении своего положения и влияния на исследовательское сообщество, чтобы их труды больше цитировали. Это приводит к одной единственной цели: публикации научных трудов во всё возрастающем объёме. Да и академические исследования в этой области больше фокусируются на осмыслении и теории.
В результате подобные исследования или модели сложно применить к реальным приложениям, или они недостаточно удобны, чтобы их восприняло сообщество разработчиков. С другой стороны, проблема программирования под многоядерные процессоры сегодня стоит как никогда актуально. Мы не знаем, каковы ожидания Intel и Microsoft, но вполне возможно, что они на самом деле ожидают фундаментальных исследований от академических центров, чтобы использовать усилия учёных для осмысления и практической реализации поступающих от них идей. Выходит, сотрудничество между подобными центрами и компаниями намного теснее, чем кажется на первый взгляд.
Ещё одна разработка, за которой мы следим с большим интересом, – это эволюция отношений сотрудничества в коллективе внутри центра. Невозможно, чтобы все преподаватели и исследовали работали одновременно над одним проектом. Текущая модель предусматривает наличие небольших групп (до трёх-четырёх человек), которые работают над проектом, соответствующим их текущим интересам, потребностям и философии.
Актёрская модель программирования
Одну из таких групп, среди прочих, возглавляет профессор Гул Агха (Gul Agha), эта группа надеется представить практические инструменты для реализации “актёрской модели программирования”. Актёрская модель программирования основана на одновременно выполняющихся объектах под названием “актёры”, которые асинхронно связываются друг с другом. В принципе, перед нами конкурентная модель программирования. У актёров нет состояния синхронизации, они обмениваются информацией только путём передачи сообщений. В принципе, можно представлять актёров как объекты в объектно-ориентированном программировании (у каждого есть собственные данные и поведение), к которым добавлен поток управления и очередь сообщений. С другой стороны, актёров можно рассматривать как сервисы в сервис-ориентированной архитектуре (SOA), которые обеспечивают сервис при получении сообщения от другого сервиса, и при этом работают независимо и асинхронно. Актёрская модель изначально была предложена Карлом Хьюитом (Carl Hewitt), а затем дорабатывалась профессором Агхой. Его книга – одна из самых цитируемых в компьютерной науке, в ней прекрасно описана модель.
Erlang – наиболее известная реализация актёрской модели. Этот язык используется для создания производственных систем Ericsson уже около 20 лет. Есть и другие реализации, так как повышающаяся актуальность конкурентного и параллельного программирования привела к новому росту интереса к актёрской модели, и мы заметили появление новых языков программирования и библиотек на основе этой модели, которые появляются как из академических кругов, так и из сообществ разработчиков. Здесь можно упомянуть Scala (язык, который появился из академических кругов и привлёк немало внимания разработчиков), Salsa (ещё один язык из академических кругов), Ptolemy (актёрская инфраструктура из Беркли), а также актёрские библиотеки на Java, Python и Ruby. Кроме того, синтаксис этих языков тоже различается. Например, Erlang базируется на функциональном программировании, а у Scala Java-подобный синтаксис.
Ориентируясь на данный сценарий, группа фокусируется на дизайне и реализации виртуальных машин и рабочих runtime-модулей, поддерживающих актёрские языки. Они должны послужить движущей силой при разработке дизайна актёрских языков, чтобы разработчики языка фокусировались на правильных абстракциях программирования и элегантном синтаксисе. В общем, всё это позволяет скрыть сложность и разнообразность нижележащего аппаратного уровня для разработчика языка.
В данном отношении интересным направлением является исследование мета-архитектур, управления диспетчеризаций и ресурсами на уровне рабочих runtime-модулей. Кроме того, нужно глубже исследовать связь между актёрами, обеспечивая поддержку отладки программ-актёров, а также и безопасные вычисления. Во всё это нужно вплетать эффективность и оптимизацию.
В качестве побочного эффекта разработчики смогут писать актёрские программы на синтаксисе, к которому они привыкли, – но они смогут принимать и отсылать сообщения другим актёрам, которые могут быть написаны на совершенно ином языке. Это похоже на роль XML в передаче сообщений SOAP. Под виртуальными машинами будет слой рабочих модулей, которым можно нивелировать локальность и совместно используемую память в многоядерных процессорах для повышения эффективности, а также и отвечать за распределённую рассылку сообщений в кластерном окружении, например. Следует признать, что всё это высокоуровневые идеи и ожидания, и если мы будем копать глубже, то обнаружатся как тупиковые решения, так и возникнут новые интересные вопросы.
Как мне кажется, другие исследователи начали изучать возможности совместной работы “под одним зонтиком”. Я чувствую их мотивы, получаю письма, полные энтузиазма и энергии исследовательской активности. Почему бы и нет? Это позволяет не только получить существенные академические успехи, но и повлиять на индустрию и сообщество разработчиков.