Система распределённых вычислений

С чего всё начиналось? 

Началом поиска внеземных цивилизаций при помощи обра ботки сигналов, поступающий с радиотелескопов, можно счи тать 1959 год, когда в журнале Nature была опубликована ста тья, в которой предлагалось искать в радиосигналах повторяю щиеся области, свидетельствующие об их искусственном про исхождении. В 1960 году начались первые поиски по програм ме SETI (Search for Extraterrestrial Intelligence - поиск внеземного разума). С одной стороны данный проект требовал колоссаль ных технических и финансовых затрат, а с другой - пользовался крайне низкой поддержкой. За долгие годы наблюдений на скла дах накопились километры плёнки с записанной, но не обрабо танной информацией. Дело в том, что для обнаружения пери одически повторяющихся элементов в радиосигнале требуется выполнять преобразование Фурье, а это очень трудоёмкая задача (особенно учитывая объёмы информации, требующей обработки). 

boinc лого

Поначалу обработка сигнала осуществлялась на супер компьютерах, установленных непосредственно на телескопах, но в 1995 году Девид Геди предложил использовать виртуальный суперкомпьютер, состоящий из большого числа подключённых к интернету обыкновенных настольных ПК. Так появился проект SETI@home (SETI at home - «SETI дома»). Первоначальный клиент не был похож на современный: он мог работать толь ко с одним проектом SETI@home и имел проблемы с безопасно стью. Для устранения этих недостатков в феврале 2002 года была запущена работа над системой BOINC. Первый проект, рабо тающий на новой системе Predictor@home, стартовал в середи не 2004 года. С 2005 года и SETI@home был переведен на использование системы BOINC. 

К 26 сентября 2001 года проект SETI@home выполнил 1021 операций с плавающей точкой, попав в Книгу Рекордов Гин несса как крупнейший вычислительный процесс в истории человечества. По состоянию на ноябрь 2009 года BOINC объединяет около 300 000 активных компьютеров (всего - 2,4 миллиона зарегистрированных компьютеров) и имеет производительность 769 Тфлопс («тера» - 1012), что приблизительно соответствует мощности шестого суперкопьютера из таблицы Топ 500 (http:// top500.org) за июнь этого года. Крупнейшим же проектом, использующим систему BOINC, является Folding@home. Он посвящён симуляции свёртывания белков, что должно помочь в лечении ряда болезней (http://ru.wikipedia.org/wiki/Folding@home). По со стоянию на 1 февраля 2010 года производительность данного проекта оценивалась около 8,542 Пфлопс («пета» - 1015), что сопоставимо с первыми строчками рейтинга суперкопьютеров. 

boinc

Научный вклад, достигнутый с помощью BOINC, можно оценить, посетив страницу (http://boinc.berkeley.edu/wiki/Publications by BOINC projects), где собраны все научные публикации, сделанные в рамках проектов. Интересно, что один проект - Enigma@Home - ставит своей целью расшифровать три оригинальных сообщения, закодированные легендарной электромеханической криптографической машиной Энигма и перехва­ченные в северной Атлантике в 1942 году. На данный момент два сообщения расшифрованы, а к третьему было применено двойное шифрование, и перехвачено оно с потерями символов (http://www.3dnews.ru/software-news/enigma home proekt vzloma shifrov vtoroi mirovoi voini), что усложняет расшифровку. 

Как это работает? 

Итак, как работает система BOINC и что необходимо сделать, чтобы присоединиться к этому проекту? Как уже упоминалось, BOINC состоит из серверной и клиентской частей. 

В основе серверной - набор PHP-скриптов, необходимых для управлением проектами: регистрации участников, выда чи заданий, получения результатов, управления базами дан ных проектов. 

boinc главное окно

Клиентская часть, так называемый BOINC-клиент или BOINC- менеджер, представляет собой универсальный клиент для ра боты с различными проектами, управляемыми сервером на ба зе BOINC. Он позволяет участвовать одновременно в несколь ких распределённых проектах. 

Менеджер написан с использованием кросс-платформенной библиотеки WxWidgets и работает на большинстве современных операционных систем: GNU/Linux x86 и x64 (пакеты есть для по пулярных дистрибутивов), Mac OS X 10.4.0+, Windows XP/Vista/7 (в том числе и 64-битные версии). Энтузиасты расширяют список доступных платформ благодаря подготовке сторонних сборок (http://boinc.berkeley.edu/trac/wiki/DownloadOther). Кроме этого, имеется возможность использования GPU - процессоров графической карты (в случае, если ваша видеокарта поддерживает такую работу). Подробнее об установке можно прочитать здесь (http://boinc.berkeley.edu/download.php). 

Первый вопрос, который следует решить: к какому проекту присоединиться? Вопрос на самом деле не простой, учитывая количество доступных проектов. Когда этот пункт выполнен, следует установить менеджер проектов и зарегистрироваться в системе BOINC. Проще всего сделать это через сам менеджер(в нём можно найти все доступные проекты, зарегистрироваться в любом из них и сразу начать работу). 

Другой способ - выбрать на официальном сайте BOINC (http://boinc.berkeley.edu/projects.php) понравившийся проект, перейти на страницу проекта и зарегистрироваться там. В случае регистрации через сайт, всё равно придётся подключаться к проекту, указав свои данные, через менеджер. Работу клиента можно настроить: указать сколько процессоров (в случае мно гопроцессорной системы) может использовать BOINC, при какой максимальной загрузке процессора менеджеру следует перейти в режим ожидания, настройки подключения к интернету. После старта работы над проектом в менеджере можно увидеть текущий прогресс по заданиям, проектам, статистику по работе за определённый период. Следует отметить, что потребление интернет-трафика крайне мало и вряд ли будет обузой для пользователей. 

BOINC менеджер имеет два режима отображения: стандартный и расширенный. На мой взгляд, расширенный гораздо удобнее: в нём всё выложено на отдельные вкладки, структурировано. 

На странице «Задания» также можно найти кнопку «Показать графику», которая запускает новое окно с графическим отображением процесса вычислений. После запуска расчёта менеджер может работать без отображения окна программы - в качестве системного процесса (демона); для от крытия окна программы нужно воспользоваться главным меню - менеджер BOINC находится в разделе «Системные утилиты». 

За выполненные расчёты пользователю начисляются баллы, которые оценивают объем проведенной работы. Для каж дого участника проекта ведётся подробная статистика получения баллов. Также пользователь может присоединиться к команде (например, команда, представляющая страну/город/университет) или создать свою. На странице проекта можно найти рейтинг лучших пользователей/команд. 

Естественно возникает вопрос достоверности получаемых результатов - ведь участник может фальсифицировать результаты или вообще прекратить участие в проекте. Эти вопросы решаются следующим образом: во-первых, для каждого выданного задания назначается крайняя дата предоставления результатов. Если к этому времени задание не будет выполнено, оно передаётся другому участнику. Вопрос проверки достоверности решается за счёт избыточных вычислений: одно и тоже задание выдаётся пяти (по умолчанию, но может быть изменено руководи­телем проекта) участникам. Если результат ваших вычислений не совпадёт с результатом определённого числа пользователей с этим же заданием (по умолчанию - троих), то результат не бу дет учтён, а баллы - не начислены. Теоретически можно запустить и свой проект в рамках системы BOINC, но это достаточно непростой вопрос. Со структурой проекта можно ознакомиться здесь (http://www.ibm.com/developerworks/ru/library/l-boinc/index.htmJ#ibm-pcon), а в официальной wiki описан процесс создания собственного проекта (http://boinc.berkeley.edu/trac/wiki/ProjectMain#CreatingaBOINCproject). 

Если по какой-то причине предлагаемый клиент вас не устроит - можно воспользоваться альтернативным - KboincSpy (http://kboincspy.sourceforge.net), однако данный проект развивается достаточно вяло по сравнению с официальным клиентом. 

Вместо заключения 

BOINC - интересный проект, который на практике доказал возможность создания виртуального суперкомпьютера, состоящего из множества обыкновенных домашних десктопов. С ним каждый может поделиться частичкой своих вычислительных возможностей и, может быть, помочь сделать значительное открытие в различных областях знаний.