Распределенные вычисления “нахаляву”
Навеяно http://stary71.livejournal.com/5875.html и постом Роста “Две идеи на мильон”. Несмотря на то, что я буду немножко критиковать вышеупомянутые идеи, для меня это всего лишь повод рассказать о моих реальных приключениях на ниве распределенных вычислений.
Итак, идея. Есть ОЧЕНЬ БОЛЬШОЙ объем вычислений, который можно распараллелить для их исполнения на множестве машин. Соответственно, тот, кому надо эти вычисления выполнить, согласен за это заплатить. Как это можно использовать:
1. Продавать в MMORPG время машин юзеров, которые в неё играют, и таким образом окупать игру.
2. Заставить считать сложные вычисления флеш-баннеры.
Радует, что идеи очень позитивные и оригинальные
Начнем с того, что есть. А есть открытая (Open Source) платформа BOINC от института Berkeley, которая позволяет производить распределенные вычисления на разных машинах. Лично я принимал участие в проекте Rosetta@home в команде TSC! Russia.
Платформа имеет клиент-серверную архитектуру. Сервер раздает задания, клиент их выполняет, в порядке очереди. Особое внимание стоит уделить тому, что просчет одного задания занимает в районе нескольких часов (первое ограничение для флеш-баннеров).
Во-вторых, BOINC-платформа исполняет native-код. В свое время, во время курса “Параллельная обработка данных” мне засела в голову мысль, что можно написать более удобную платформу, чем BOINC, а именно, на базе AIR. Главным преимуществом могли стать система автообновления, встроенные примитивы для работы с сетевыми протоколами, а также универсальный клиент для разных операционных систем.
Увы, первые же эксперименты меня серьезно отрезвили. В качестве задачи была взят взлом MD5-хеша (задача: дан MD5-хеш от строки, найти строку. Решается полным перебором, обратная функция на данный день неизвестна). Задача очень легко параллелится.
Native-программа, которую я взял для сравнения, считала хеши в 1000(!) раз быстрее, чем написанная мною на AIR. Т.е. при распределенных вычислениях, когда основной проблемой является привлечение пользователей, мне для достижения той же эффективности, что и BOINC, придется привлечь в 1000 раз больше пользователей. Нереально Но если AS3-машину еще улучшат, я попробую
И, наконец, третье. Я уже упоминал, что свои вычисления проводил в рамках некоей команды (TSC! Russia). За вычисления в системе дают некоторые очки, которые создают спортивный момент мероприятия. Последнее - немаловажный фактор, благодаря чему отдельные люди объединяются в команды. Соответственно, наиболее рьяные вычислители, чтобы получить побольше очков, подключают все машины, которые находятся в их ведении, например, на работе или в институте, когда машины простаивают. И, насколько я мог судить, именно эти машины обеспечивают главную долю вычислительных ресурсов. Увы, если я прав, вариант с MMORPG тоже отпадает.
Ну, и наконец, сладкое. Считал я в Rosetta@home дней 7, подключил две машины, наслаждался вкладом в общемировой прогресс Однако в один прекрасный день из-за Розетты обе мои машины свалились в “синий экран смерти”, причем, благодаря тому, что программа прописалась в автозагрузке, на сервере пришлось “выковыривать” её в Safe-режиме. После чего я её благополучно удалил.