BOINC. Распределенные вычисления

Эта лишь предисловие к моей следующей статье «Поможем победить Рак — Help Conquer Cancer«. Здесь я попытаюсь рассказать, что такое распределенные вычисления.

Схема сети распределенных вычислений (grid network)

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

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

Для простоты проведу аналогию: допустим супер компьютер, это большой, хороший экскаватор, который может выкапывать 3 кубометра грунта в минуту; тогда сеть распределенных вычислений — это множество работяг с лопатой…и каждый работяга за минуту может выкопать 0,03 кубометра грунта. А если таких работяг будет десять… сто…тысяча и работать они будут одновременно! Понятно, что уже сотня рабочих сможет обойти по производительности экскаватор.

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

[ad name=»Google Adsense 468×60″]

Самым критичным минусом распределенных сетей является необходимость разбивки большой задачи — на мелке кусочки-задания. Связано это с отсутствием общей памяти для всех участников сети.  По этой причине распределенные вычисления наилучшим образом подходят для задач требующих большого объема однообразных вычислений. Например: поиск искусственного сигнала среди регулярно поступающей информации с радиотелескопа.

Как я упомянул выше, у сети распределенных вычислений есть «прораб» — центральный сервер или несколько серверов, которые раздают задания. Задание — это кусочек кода, который требуется обработать по определенному алгоритму.

Главное окно BOINC manager (упрощенный вид)

Главное окно BOINC manager (упрощенный вид)

Моё знакомство с распределенными вычислениями началось на волне интереса к НЛО в 2000 году с проекта SETI@home. Данный проект занимался обработкой данных, полученных с радиотелескопов, с целью найти аномальные радиосигналы, предположительно, искусственного происхождения. Проект SETI@home работает до сих пор. Добросовестно «послужив» проекту SETI@home в начале 2000х я в силу обстоятельств и смены компьютера благополучно об этом забыл. Вспомнить о таком проекте меня побудил репортаж, по одному из центральных каналов… я тут же полез в поисковик и обнаружил, что сэти теперь работает на BOINC. Изначально SETI@home имел собственного клиента, но в дальнейшем официально перешел на платформу BOINC…не смотря на это, энтузиасты и сейчас создают клиенты оптимизированные именно для SETI@home. По информации разработчиков производительность клиенто с оптимизированным кодом выше оригинального BOINC.

Что же такое BOINC? Грубо говоря BOINC это просто платформа, на базе которой создаются кружки по интересам — проекты. BOINC = Berkeley Open Infrastructure for Network Computing — одна из самых популярная сетей распределенных вычислений.

Главное окно BOINC manager (расширенный вид)

Главное окно BOINC manager (расширенный вид)

Зачем нужен BOINC? Видь есть собственные клиенты для многих проектов распределенный вычислений? Вся прелесть BOINC заключается в том, что одновременно вы можете учавствать в нескольких независимых проектах! Во-вторых многие проекты не имеют собственных клиентов и работают только через BOINC. В зависимости от количества процессоров, установленных в ваш компьютер, проекты могут считаться одновременно или по очереди. Если вы выбрали только один проект, то ваш компьютер будет считать несколько заданий одного проекта. Например, на данный момент мой домашний компьютер одновременно считают три задания World Community Grid (Help Conquer Cancer) — это достигается за счет двухъядерного процессора и использования GPU (процессора видеокарты). Да-да. последние версии могут использовать большинство GPU от nVidia и ATI.

boinc logo

Сам по себе клиент BOINC — это служба (windows) или демон (linux), не имеющий графического интерфейса.  Управляется BOINC клиент по средствам RPC (через TCP/IP соединения в т.ч. loopback на локальном компьютере). Имеется множество портов клиентов BOINC под практически все операционные системы (windows, linus, mac os и т.д.). Графический интерфейс для клиента сети BOINC представляет BOINC manager (представлен на скриншотах) идущий в дистрибутиве. Также возможно использование более функциональный сторонних GUI, например, BAM!.

Скринсейвер BOINC (help cure cancer)

Скринсейвер BOINC (Help Conquer Cancer)

Также в довесок с windows дистрибутивом BOINC идет замечательный скринсейвер, визуализирующий процесс вычислений (особенно красиво это у SETI@home).

На мой взгляд, у платформы BOINC хорошие перспективы, т.к. проект разработан на основе LGPL лицензии , поэтому любой может ознакомиться с исходными текстами.

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

В заключение могу сказать, что BOINC — лишь одна из общедоступных платформ сетей распределенных  вычислений. На этом рассказ о самой платформе я закончу и расскажу о проекте World Community Grid >>

Понравилась статья?


Подпишитесь на RSS-ленту и получайте еще больше новой информации!

6 комментариев на «BOINC. Распределенные вычисления»

  1. Тимур пишет 15.03.2010 в 12:58 #

    >> Самым критичным минусом распределенных сетей является необходимость разбивки большой задачи — на мелке кусочки-задания. Связано это с отсутствием общей памяти для всех участников сети.

    Это не совсем корректное высказывание. Главная особенность распределенных сетей — это независимость по данным расчета одной порции от другой.

    Причем, взяв классические алгоритмы параллельного умножения матриц. Да, там требуется большое умножение разбить на более мелкие задачи. Но в основном — это требует зависимость по данным во время расчета. И для распределенных вычисление не совсем подходит.

  2. Alex пишет 15.03.2010 в 13:18 #

    Да вы правы. Но собственно это вытекает из моей формулировки — отсутствие общей памяти как раз и делает невозможными параллельные вычисления.

  3. Василич пишет 09.10.2011 в 0:20 #

    Не совсем ясно, нахрен я должен мучить своё железо ради какого-то непонятного проекта?

  4. Alex пишет 12.10.2011 в 13:32 #

    Вас ни кто не заставляет…а зачем, каждый решает для себя сам

  5. Граффити88 пишет 16.01.2012 в 11:44 #

    Василич, ты дебил расиянский!

  6. maksim пишет 26.11.2012 в 19:32 #

    а моё железо тормозить не будет если я установлю эту программу?

Адрес для трекбека | Comments RSS

Добавить комментарий