Распределенное время
Автор: Владимир Николаевич
Опубликовано в журнале "Компьютерра" №22
Страница 2 из 2. Вернуться на первую страницу.
Дело, конечно, не в этом конкретном проекте. Если завтра он внезапно закроется, это мало что изменит. Дело в том, что наши вычислительные ресурсы ограничены, а проблемы бесконечны. И в такой ситуации надо тщательно выбирать цели, прежде чем тратить на них столь огромные усилия. Однако миллионные массы не могут тщательно выбирать! Особенно если они молоды и не привыкли к самокопанию. Отчего взлом шифровок на Distributed.net, бесполезный абсолютно и очевидно, привлек в несколько раз больше людей, чем фолдинг белков? Не в последнюю очередь оттого, что взламывать шифровки — круто. Это порождает чувство причастности к славному племени хакеров, и 330 тысяч взломщиков RSA-64 — это 330 тысяч маленьких, но гордых друзей Кевина Митника и Нео. А на кого похожи участники Folding@home? Даже в собственных глазах они похожи на «чокнутых ученых» в белых халатах, которых в 3D-шутерах обычно расстреливают, чтоб не путались под ногами.
Главным ресурсом развития распределенных проектов являются домашние пользователи. Очевидно, их приток в Сеть будет продолжаться еще долго. Вероятно, самые активные и богатые проекты начнут вести целенаправленные рекламные кампании. До сих пор этого не наблюдается, из-за чего в распределенных вычислениях участвует менее одного процента сетевой аудитории. На это просто нет моды. Постоянное ускорение домашних компьютеров (по закону Мура) позволит проектам, как и раньше, непрерывно наращивать силы. Трудно сказать, смогут ли самые крупные из них по-прежнему превосходить любой «нормальный» суперкомпьютер. Кластерные системы, входящие в Тор500, тоже развиваются необычайно быстро. Так, в скором времени должны быть запущены суперкомпьютеры Red Storm от Cray и ASCI Purple от IBM, производительностью соответственно 40 и 100 Тфлопс. Они наверняка обставят виртуальные метакомпьютеры Grid.org и SETI@home, если только у последних не найдется подходящего туза в рукаве…
Одним из вычислительных резервов, который до сих пор не используется, могли бы стать современные видеокарты, уже нередко превосходящие центральные процессоры по количеству транзисторов. На первый взгляд эта идея — использовать видеоускоритель для вычислений — может показаться шуткой. Тем не менее, группа товарищей из Стэнфордского университета уже создала программу BrookGPU, превращающую шутку в реальность. Эта программа (точнее, набор С-библиотек и специальный компилятор) позволяет исполнять на графическом процессоре видеокарты многие операции с плавающей запятой. Пока разработана бета-версия, но и она достигает на карте GeForce FX 5900 Ultra скорости 20 Гфлопс. Так мог бы работать Pentium 4, разогнанный до 10 ГГц.
Впрочем, и подключение видеокарт, и закон Мура, и общий рост сетевой аудитории — это лишь количественные перемены. А качественный скачок (очередной) распределенные проекты могут совершить благодаря широкополосному интернет-доступу. Среди домашних пользователей он распространяется медленно, но уже сегодня больше двадцати миллионов семей в США являются абонентами кабельного или ADSL-подключения, обычно на условиях круглосуточного Unlimited. Представьте, что двадцатая часть этих семей включится в некий проект, выделив ему на своих винчестерах 1 Гбайт свободного места, 100 Мбайт оперативной памяти и (в среднем) 1 ГГц процессорной мощи. С хорошим ADSL тут действительно недалеко до глобального метакомпьютера, который нам обещает United Devices…
Многие думают, что история Distributed Computing началась лишь во второй половине 1990-х годов, когда в Интернет начали вливаться миллионы рядовых пользователей. Однако еще в начале 1970-х в исследовательском центре PARC (Xerox, Palo Alto) ученые, создававшие программы для первых компьютерных сетей, задумались об использовании свободных вычислительных ресурсов имевшихся в центре машин.
Двое исследователей — Джон Шох и Жон Хапп (John F. Shoch, Jon A. Hupp) — написали в 1973 году несложную программу, которая запускалась в локальную сеть центра по ночам, расползалась по невыключенным компьютерам и заставляла их выполнять разного рода вычисления. В честь похожей программы из фантастического рассказа Джона Браннера авторы назвали свое детище червяком. Параллель между программой из PARC и современными интернет-червями справедлива. Однако стоит заметить, что Шох и Хапп вовсе не пытались создать некоего гада, разбегающегося по всем щелям с максимальной скоростью, — это сделал Роберт Моррис в 1988 году, отчего его и считают отцом сетевых червей. Ученых же из PARC волновали сугубо утилитарные задачи.
Идея совместной работы множества компьютеров, объединенных в сеть, оказалась вполне плодотворной и далее развивалась медленно, но верно. К концу 1980-х, когда компьютеры уже стали персональными, а их владельцы все чаще использовали электронную почту, произошел качественный скачок. Арьен Ленстра и Марк Менес (Arjen K. Lenstra, Mark S. Manasse), также работавшие в Рало-Альто, но уже на компанию DEC, написали программу для факторизации (разбиения на множители) длинных чисел. Чтобы процесс шел быстрее, программа могла запускаться на множестве машин, каждая из которых обрабатывала лишь небольшой фрагмент числа. Проект был сугубо научным и очень простым, но главное — связь между его участниками могла быть эпизодической. Фактически использовалась обычная электронная почта, и очень быстро в расчеты оказалось втянуто несколько сотен человек. Через два года это сообщество впервые в истории разложило на множители число длиной сто знаков.
По сути, Ленстра и Менес продемонстрировали, как можно создать «на коленке» необычайно успешный распределенный проект. Именно поэтому родословную нынешних распределенных вычислений следует вести от первой факторизации 1988 года, а не от более раннего червя-вампира из PARC. Все-таки, несмотря на общую суть, эти два проекта сильно отличались. В лаборатории PARC машины были связаны первым Ethernet’ом и постоянно обменивались данными на большой скорости. Это был прообраз кластерных суперкомпьютеров. В тоже время участники факторизации были связаны очень медленными каналами, да и то не всегда, а эпизодически, и не друг с другом, а лишь с центральным сервером проекта.
Хотя термины для того и другого давно устоялись (Distributed Computing и Grid Computing), их до сих пор часто смешивают, нередко сознательно и с вполне корыстными целями. Мы не станем вникать в нюансы терминологии, а просто зафиксируем, что далее будем рассматривать лишь идейных потомков проекта Ленстры и Менеса, поскольку их могут создавать обычные люди и они открыты для участия рядовых интернет-пользователей. Уже в первые распределенные вычисления (1988) оказалась втянута компьютерная мощь, суммарно стоившая миллионы долларов. Это впечатляло, но было понятно, что вычисления такого рода годятся лишь для специфических задач. В отличие от суперкомпьютера Cray, способного, грубо говоря, считать что угодно, тысячи энтузиастов связанных по электронной почте при всем желании не могут эффективно рассчитывать, например, форму гребного винта — эта задача требует постоянного обмена данными между машинами участников. Проблема взаимосвязи — ахиллесова пята распределенных проектов. Их участники только изредка, раз в сутки (а лучше — реже), готовы обмениваться с сервером проекта небольшими файлами. Очевидно, что организовать вычисления в таком квазипараллельном режиме — весьма непросто. Тем не менее, некоторые задачи даже в таких условиях решаются просто замечательно, если удовлетворяют одному требованию — огромное количество работы над маленьким объемом данных.
Вполне естественно, что первыми такими проектами стали разного рода математические исследования. Нередко их участникам рассылалось всего несколько байт — координаты на линии чисел, между которыми надо было провести некий поиск, например новых чисел Серпинского. Конечно, все это было интересно лишь горячим поклонникам математики, но, судя по хронике, увлеченных людей в Интернете всегда хватало. В 1993 году одна из таких групп факторизовала число длиной 129 знаков. Потом длиной 130. А затем пошла мода на поиск простых чисел — делящихся лишь на единицу и на самих себя. Проектов такого рода возникло не один десяток — разные группы брались за поиск новых чисел Мерсенна, дружественных и совершенных чисел, расчет числа p и т. д. и т. п. Многие из этих сообществ работают до сих пор, но мы не будем на них останавливаться — читатели могут найти в нашем архиве статью «Гонки по вертикали» Леонида Дурмана («КТ» ## 394, 395). |
|