среда, 22 сентября 2010 г.

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

Гуртом i батька легше бити
украинская народная мудрость

Сегодня мне хотелось бы рассказать о BOINC (Berkeley Open Infrastructure for Network Computing — открытая программная платформа университета Беркли для распределённых вычислений). BOINC представляет собой программный комплекс с открытым исходным кодом (и распространяется под лицензией LGPL), который состоит из серверной и клиентской частей. Изначально разрабатывался специально для крупнейшего (и наиболее известного) проекта распределённых вычислений — SETI@home, занимающегося поиском радиосигналов внеземных цивилизаций. Впоследствии разработчики сделали платформу доступной для сторонних проектов. Сегодня BOINC является универсальной платформой для вычислительных проектов в различных областях науки: математики, физики, биологии, астрономии, климатологии, криптографии.
 
С чего всё начиналось?


Началом поиска внеземных цивилизаций при помощи обработки сигналов, поступающий с радиотелескопов, можно считать 1959 год, когда в журнале Nature была опубликована статья, в которой предлагалось искать в радиосигналах повторяющиеся области, свидетельствующие об их искусственном происхождении. В 1960 году начались первые поиски по программе SETI (Search for Extraterrestrial Intelligence — поиск внеземного разума). С одной стороны данный проект требовал колоссальных технических и финансовых затрат, а с другой — пользовался крайне низкой поддержкой. За долгие годы наблюдений, на складах накопились километры плёнки, с записанной, но не обработанной информацией. Дело в том, что для обнаружения периодически повторяющихся элементов в радиосигнале требуется вычислять преобразование Фурье, а это очень трудоёмкая задача (особенно, - учитывая объёмы информации, требующей обработки). Поначалу обработка сигнала выполнялась на суперкомпьютерах, установленных непосредственно на телескопах, но в 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 объединяет около 300000 активных компьютеров (всего - 2,4 миллиона зарегистрированных компьютеров) и имеет производительность 769 Тфлопс (терра — 1012), что приблизительно соответствует мощности шестого суперкопьютера из таблицы Топ 500 за июнь этого года. Крупнейшим же проектом, использующим систему BOINC, является Folding@home. Это относящийся к медицине проект, посвящённый симуляции свёртывания белков, что должно помочь в лечении ряда болезней. По состоянию на 1 февраля 2010 года производительность данного проекта оценивалась около 8,542 Пфлопс, что сопоставимо с первыми строчками рейтинга суперкопьютеров.
Научный вклад, сделанный благодаря этому проекту можно оценить, посетив страницу, где собраны все научные публикации, сделанные в рамках проектов. Интересно, что один проект - Enigma@Home ставит своей целью расшифровать три оригинальных сообщения, закодированных легендарной электромеханической криптографической машиной Энигма и перехваченных в северной Атлантике в 1942 году. На данный момент два сообщения расшифрованы, а к третьему было применено двойное шифрование, и перехвачено оно было с потерями символов, что усложняет расшфровку.

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

Итак, как работает система BOINC, и что необходимо сделать, чтобы присоединиться к этому проекту? Как уже упоминалось, BOINC состоит из серверной и клиентской частей. Серверная часть представляет собой в основном набор PHP-скриптов, необходимых для управлением проектами: регистрации участников, выдачи заданий, получения результатов, управления базами данных проектов. Клиентская часть, так называемый BOINC-клиент или BOINC-менеджер, представляет собой универсальный клиент для работы с различными проектами, управляемыми сервером на базе BOINC. Он позволяет участвовать одновременно в нескольких распределённых проектах. Менеджер написан с использованием кросс-платформенной библиотеки WxWidgets и работает на большинстве современных операционных систем: GNU/Linux x64, x86 — Fedora Core 7+, Debian 4.1+, Ubuntu 7.10+, Mandriva, Mint, Gentoo (также доступен специальный клиент, без графического интерфейса, но работающий на большем числе дистрибутивов); Mac OS X 10.4.0+, Windows XP/Vista/7 (также и 64-битные версии). Сторонние разработчики ещё более расширяют список доступных платформ. Кроме этого, имеется возможность использования GPU — процессоров графической карты (в случае, если ваша видеокарта поддерживает такую работу). Подробнее об установке можно прочитать здесь.
Первым вопросом, который следует решить — к какому проекту присоединиться? Вопрос на самом деле не простой, учитывая количество доступных проектов. Когда этот пункт выполнен, следует установить менеджер проектов и зарегистрироваться в системе BOINC. Проще всего это сделать через сам менеджер (в нём можно найти все доступные проекты, зарегистрироваться в любом из них и сразу начать работу). Другой способ — выбрать на официальном сайте BOINC понравившийся проект, перейти на страницу проекта и зарегистрироваться там. В случае регистрации через сайт, всё равно прийдётся подключаться к проекту, указав свои данные, через менеджер. Работу клиента можно настроить: указать сколько процессоров (в случае многопроцессорной системы) может использовать BOINC, при какой максимальной загрузке процессора менеджеру следует перейти в режим ожидания, настройки подключения к сети интернет. После старта работы над проектом в менеджере можно увидеть текущий прогресс по заданиям, проектам, статистику по работе за определённый период. Следует отметить, что потребление интернет-трафика крайне мало и вряд ли будет обузой для пользователей.
BOINC менеджер имеет два режима отображения — стандартный и расширенный. На мой взгляд расширенный гораздо удобнее: в нём всё выложено на отдельные вкладки, структурировано. На рисунке 1, например, показана вкладка со статистикой использования дискового пространства. На странице «Задания» также можно найти кнопку «Показать графику», которая запускает новое окно с графическим отображением процесса вычислений. Например, на рисунке 2 показано такое окно для проекта SETI@home — хотя в нём можно найти всю основную информацию о расчёте, но основное его предназначение, на мой взгляд, - внесение разнообразия в процесс расчёта и хоть какая-то возможность «увидеть — что же делаем?». После запуска расчёта менеджер может работать без отображения окна программы — в качестве системного процесса (демона), для открытия окна программы нужно воспользоваться главным меню, BOINC менеджер находится в разделе «Системные утилиты».

Иллюстрация 1: BOINC менеджер, расширенный вид

За выполненные расчёты пользователю начисляются баллы, которые оценивают объем проведенной работы. Для каждого участника проекта ведётся подробная статистика получения баллов. Также пользователь может присоединиться к команде (например, - команда, представляющая страну/город/университет) или создать свою. На странице проекта можно найти рейтинг лучших пользователей/команд.
Естественно возникает вопрос достоверности получаемых результатов, ведь участник может фальсифицировать результаты или вообще прекратить участие в проекте. Эти вопросы решаются следующим образом: во-первых, для каждого выданного задания назначается крайняя дата предоставления результатов. Если к этому времени задание не будет выполнено, оно передаётся другому участнику. Вопрос проверки достоверности решается за счёт избыточных вычислений: одно и тоже задание выдаётся пяти (по умолчанию, может быть изменено руководителем проекта) участникам. Если результат ваших вычислений не совпадёт с результатом определённого числа пользователей с этим же заданием (по умолчание — трое), то ваш результат не будет учтён, а баллы не будут начислены.
Теоретически можно запустить и свой проект в рамках системы BOINC, но это достаточно непростой вопрос. Со структурой проекта можно ознакомиться здесь, а в официальной BOINC-вики описан процесс создания собственного проекта.
Если по какой-то причине предлагаемый клиент вас не устроит — можно воспользоваться альтернативным — KboincSpy, однако данный проект развивается достаточно вяло по сравнению с официальным клиентом.
Иллюстрация 2: Графическое представление результатов

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

P.S. Статья издана в замечательном журнале "Open Source"


2 комментария:

Ольга комментирует...

Интересно было бы узнать про российские проекты распределенных вычислений.

Анонимный комментирует...

http://www.boinc.ru/