Самые опасные распределенные вычисления. Распределённые вычисления: краткое введение в проекты BOINC

Вот уже более шестнадцати лет у каждого пользователя есть хорошая возможность внести посильный вклад в развитие науки. Не нужны денежные пожертвования и даже профессиональный интерес к выбранному предмету исследований. Имеет значение лишь то, какими чертами характера обладает человек и насколько современные компьютеры есть в его распоряжении. При удачном сочетании этих факторов появляются надёжные узлы сетей распределённых вычислений – одного из самых мощных инструментов компьютерной обработки данных.

Благодаря совместным усилиям обычных пользователей удалось сделать множество значимых открытий. Только за последние три года они отыскали 53 пульсара, причём последние семь нашлись совсем недавно – в конце августа 2012 г. Результаты выполненных исследований используются при разработке лекарственных препаратов для лечения сахарного диабета второго типа, болезней Альцгеймера и Паркинсона, других тяжёлых заболеваний. По материалам выполненных работ опубликованы сотни научных статей.

Суперкомпьютеры и распределённые сети

Мощные суперкомпьютеры – это капля в море. Машин, которые представляют собой предмет гордости целых стран и занимают первые строчки рейтинга TOP 500, не так уж много, и на всех их не хватает. Чтобы получить доступ к суперкомпьютеру, требуется сначала обосновать необходимость выбранной задачи, а потом, если доводы оказались убедительными, дождаться очереди и успеть оптимизировать код для выполнения на своеобразной суперкомпьютерной архитектуре.

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

BOINC - программный комплекс для быстрой организации распределённых вычислений. Состоит из серверной и клиентской частей. Первоначально разрабатывался для крупнейшего проекта добровольных вычислений - SETI@home, но впоследствии разработчики из Калифорнийского университета в Беркли сделали платформу доступной для сторонних проектов. На сегодняшний день BOINC является универсальной платформой для проектов в области математики, молекулярной биологии, медицины, астрофизики и климатологии. BOINC даёт исследователям возможность задействовать огромные вычислительные мощности персональных компьютеров со всего мира .

Кратко изобразить этот процесс можно так:

В данный момент в сети BOINC насчитывается около 300 тысяч активных участников, что в сумме даёт более 9 миллионов компьютеров и производительность более 8 петафлопс (на момент написания статьи).

Cosmology@Home


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

Все мы смотрели трилогию “Назад в будущее” и представляем, чаще всего, ученых именно в виде Дока — немного сумасшедших, людей, увлеченных какими-то идеями. Иногда и нам хочется почувствовать себя таким же первооткрывателем, проверить гипотезу, доказать теорему, построить машину времени. Или хотя бы провести тест-драйв этой машинки.

Но давайте вернемся в действительность. Машины времени нет. Полеты в космос пока не столь далеки. Болезни не побеждены. “Где же эти ученые? Какая, например, мне польза от открытий Эйнштейна”, — думают многие, когда плывут на теплоходе по океану. А ведь теплоход ориентируется по GPS, спутники которой постоянно курсируют над планетой и помогают точно установить, где находится на Земле приёмник. И если бы не работы Эйнштейна, мы бы не могли пользоваться такой технологией, потому что при скоростях спутников уже заметны эффекты, которые, если их не учитывать, собьют все прицелы GPS. Значит, польза от науки, опосредованная, всё-таки есть. Можем ли мы помочь, если не Доку, то науке?

Наверное многие из вас слышали о волонтёрах — людях, которые добровольно делают что-то, во имя чего-то великого: защита китов, посадка деревьев, уборка мусора, помощь медикам в борьбе с болезнями — как участие в вакцинации народов Африки, так и испытание этих препаратов на себе. Многие люди хотят сделать что-то большое. Так, фонд Билла и Мелинды Гейтс спонсирует разнообразные здравоохранительные программы — предупреждение и лечение туберкулеза, СПИД, борьба с малярией и лихорадками.
Представьте будущее, лет через 10. К вам подходит ребенок, который по “Дискавери” увидел программу о гриппе и спрашивает: “Папа, а ты знал, что раньше люди каждый год болели болезнью гриппа, а недавно ученые открыли средство против него и теперь мы не болеем?”. И вы отвечаете: “Конечно, знаю! Я в этом участвовал.”
Понятно, это — пока фантастика, но вам было б приятно, верно?
А что, если бы вы могли помогать науке и медицине, не жертвуя состояния, как Билл Гейтс, не проливая пот и кровь в волонтерских мероприятиях, не рискуя заразиться от прививаемых людей малярией? Вы скажите, что это фантастика.

Проект по поиску разумной внеземной жизни SETI знаком многим. Сеть радиотелескопов, сканируют небо на предмет необычных сигналов. Необычные — это которые повторяются, но которые нельзя объяснить за счёт человеческой деятельности — радары, спутники, радиостанции — или за счет естественных причин (пульсары, реликтовое излучение и др.). Во время поиска чего-то интересного в этом “шуме”, прослушивается частота за частотой — будто вы крутите медленно настройку радиоприемника, и все это шипение между радиостанциями и является шумом — и в каждой частоте пробуют найти что-то повторяющееся. Как? Каждый сигнал можно изобразить в виде графика функции. Путем сложных вычислений можно “подобрать” формулу, которая бы это описала — выполнить преобразование Фурье для графика. Это невероятно сложно, потому что данных поступает много и над всеми из них требуется проводить долгие расчеты. Использовать для этого суперкомпьютеры было бы дорого.

В 1994 году Дэвидом Джиди была предложена идея использовать для расчета объединенную сеть компьютеров добровольцев, которых постоянно, или же периодически подключены к сети. Данные с телескопов разбиваются на тысячи независимых шумов, на определенных частотах и отсылаются на компьютеры людей, которые согласились помочь в поиске внеземного разума.

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

Архитектура, которая была таким образом изобретена, называется BOINC (англ. Berkeley Open Infrastructure for Network Computing ) - открытая программная платформа (университета) Беркли для GRID вычислений). Для того чтобы помочь науке теперь достаточно скачать программу клиент BOINC и подключиться к одному из проектов.

Folding@Home (F@H, FAH) - проект распределенных вычислений для проведения компьютерного моделирования свёртывания молекул белка. Цель данного проекта понять технику и принципы биохимического процесса создания (сворачивания) и разрушения (разворачивания) белков. Это требуется для борьбы с такими болезнями, как болезнь Альцгеймера, Паркинсона, диабет, склерозы. В результате вычислительной помощи добровольцев в данном проекте было много симуляций и на их основе было опубликовано множество промежуточных научных работ. Это наибольший из проектов добровольных распределенных вычислений, общая производительность систем, задействованных в нем способна соревноваться с производительностью мощнейших суперкомпьютеров планеты.

Einstein@Home — проверяем гипотезу Энштейна

Einstein@Home — проект, созданный для проверки гипотезы Эйнштейна о гравитационных волнах — способа распространения гравитации во Вселенной. Для этого изучают и составляют подробный атлас “тяжелых” объектов космоса — нейтронных звезд, черных дыр, пульсирующих звезд, чтобы понять как могут распространятся гравитационные волны, если они, конечно, существуют. Наблюдения и измерения в рамках этого проекта позволяют глубже понять и подтвердить (а быть может в будущем — опровергнуть?) общую теорию относительности (Помним GPS?), узнать с какой скоростью перемещаются гравитационные волны — со скоростью ли света, определить физические свойства этих гипотетических волн. Кроме того, с 2009 года часть мощностей проекта и, соответственно, часть вычислений добровольцев направлено на поиски радиопульсаров и других необычных объектов Вселенной.

MilkyWay@Home — астрофизика

MilkyWay@Home — это проект добровольных распределенных вычислений в области астрофизики, целью которого является исследование потоков звездного вещества Млечного Пути и составление высокоточных трехмерных динамических моделей. Сейчас в основном моделируется звездный поток Стрельца. Он имеет нестабильную орбиту и скорее всего образовался в результате сближения карликовой галактики с галактикой Млечный Путь.

World Community Grid — помогаем IBM

World Community Grid (WCG) — проект добровольных распределенных вычислений, созданный IBM, на базе которого создано множество подпроектов. Некоторые из этих подпроектов проводят исследования по борьбе с раком и СПИД. Другие моделируют средства для лучшей очистки питьевой воды, средств борьбы с гриппом и простудой. Решение о том, к каким расчётам следует привлечь первостепенное внимание, принимается совместно с ведущими учёными разных стран.

PrimeGrid — поиск простых чисел

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

На самом деле проектов, где вы можете помочь науке, частью мощностей вашего ПК, очень много. Перечислим несколько интересных и разнообразных, буквально одной строкой:
sudoku@vtaiwan — выяснение минимального количества начальных чисел, необходимого для единственного решения головоломки;


Leiden Classical — численное решение задач классической механики;
Seventeen or Bust — проверка одной из гипотез математики;
Renderfarm — создание фермы рендеринга для всех желающих — любой может проявить свои 3D-модели, превратив их в картинку или видео высокой четкости;
Enigma — Попытка расшифровки некоторых перехваченных и не расшифрованных до сих пор сообщений немцев времен Второй мировой войны;
LHC@home — проект, позволяющий моделировать поведение пучков частиц в Большом Адронном Коллайдере — эти данные в последствии используются при калибровке установки;
Magnetism@home — проект по расчету магнитных конфигураций цилиндрических нано-элементов, созданный Константином Метловым из Донецкого физико-технического института. Проект решает задачи статики, динамики и термодинамики для магнитных нано-элементов различной формы.

Очень часто люди с одинаковыми хобби соединяются в группы. Так и с добровольными распределенными вычислениями. Есть множество групп людей, которые соединяются по разным признакам — один университет, одна страна, просто понравилась группа. В Украине есть национальная команда, сайт которой distributed.org.ua . На сайте есть форум, где проводится обсуждение на разные темы и где можно получить более детальную информацию о каждом проекте. Такие же национальные команды есть и в России, и в Польше, и в Германии — во многих странах.

Для того чтобы было интереснее, люди устраивают соревнования — меряются тем, сколько полезной работы сделали и сколько очков (кредитов или Cobblestones) заработали. Количество очков зависит от производительности компьютера , от числа задействованных машин (можно под одним именем использовать несколько компьютеров) и времени, сколько компьютер может заниматься вычислениями. Некоторые проекты несколько раз в год проводят так называемые заезды или челленджи — когда соревнуются команды: кто из команд за определенный промежуток времени заработает больше всех кредитов.

“Недостатком” вашей такой помощи науки может служить увеличивающийся счет за электричество. Это и есть та малая плата, благодаря которой вы, сможете вместе с другими добровольцами победить болезни, решить сложные задачи и сформировать карту нашей Галактики. Возможно вы спросите, можно ли на этом зарабатывать? Нет, нельзя. Да, точно нельзя. Это волонтерская помощь. Безвозмездная.

В этом видео расскажу как подключиться к проекту добровольных распределенных вычислений

Если у вас возникли какие то вопросы, задавайте их в комментариях. Благодарю, что поделились статьей в социальных сетях. Всего Вам Доброго!

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

О процессоре и ресурсах.

Давайте задумаемся, чем занят наш компьютер, когда мы его используем? Сердцем компьютера является центральный процессор . Именно он производит все математические и логические операции.
Ведь каждая компьютерная игра, каждый фильм - это все последовательности операций сдвигов, сложений и переносов отдельных битов (это самый маленький кусочек информации в компьютере). Чем больше операций в секунду может производить процессор - тем он быстрее. Практически все компьютерные игры используют ресурсы процессора на 100%, т.е. процессор отдает максимум скорости на игру. Но все обстоит иначе с просмотром фильмов, редактированием документов и т.д. Например, фильму не нужно использовать весь ресурс процессора, ему нужно лишь столько этого "ресурса", чтобы при просмотре пользователь не видел "скачков" и протяжек. На современных компьютерах просмотр фильма использует всего 10-15 процентов процентов процессора. А редактирование документов и того меньше - 1-4 процента. Получается. что большую часть времени процессор стоит без дела. И как раз эту неиспользуемую часть его времени и ресурса можно использовать под распределенные вычисления.

Что такое распределенные вычисления?

Грубо говоря, это процесс разбиения одного большого расчета, требующего мощнейшего компьютера, на много маленьких фрагментов, и предоставление этих фрагментов на обработку множеству обыкновенных компьютеров. Реализовать это помогает программа BOINC (Berkeley Open Infrastructure for Network Computing - открытая система для распределенных вычислений университета Беркли (спасибо им за FreeBSD =) ))
Когда Вы запускаете BOINC на своем компьютере происходит следующее:

1. Ваш компьютер запрашивает список инструкций с сервера. Причем инструкции зависят от возможностей Вашего компьютера. Например, сервер не выдаст инструкции которые требуют от вашего компьютера слишком большого объема оперативной памяти.
2. Ваш компьютер скачивает программу и данные для расчетов.
3. Ваш компьютер начинает вычисления.
4. Ваш компьютер формирует выходные файлы расчетов.
5. Ваш компьютер передает результаты на главный сервер и запрашивает данные для нового расчета. Цикл повторяется вновь.

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

В каких проектах можно принять участие?

  • Climateprediction.net : - изучение перемен климата.
  • http://einstein.phys.uwm.edu/ : поиск гравитационных импульсов, излучаемых пульсарами.
  • http://lhcathome.cern.ch/ : улучшение ускорителя частиц CERN LHC

Возможные полезные результаты использования параллельных вычислений:

1) Повышение скорости счёта, т. е., проделывание того же объёма работы за меньшее время (интересно, в первую очередь, для задач, имеющих ограничения по времени).

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

3) Повышение мощности, т. е., решение задач большего объёма (интересно, в первую очередь, для задач, модели в которых недостаточно подробны).

Указанные полезные результаты могут быть недостижимы одновременно , с использованием одного и того же набора методов и технологий.

Понятие параллельности вычислений в первую очередь означает их одновременность, т.е., одновременное использование для их проведения различных вычислительных устройств (процессоров, ядер и др.). Сама же одновременность исполнения может использоваться различными способами. Так, например, 1) одинаковое вычисление может одновременно производиться с частями одного набора данных по отдельности (например, задачи метеорологии, распределённые сети в задачах транспорта, вообще распределённые системы управления ); 2) различные вычисления могут одновременно производиться с одним набором данных (например, задача многих тел в молекулярной динамике или в астрофизике); 3) различные вычисления могут образовывать конвейер (pipeline), где каждый вычислитель получает данные частями, обрабатывает их и передаёт следующему вычислителю (например, внутренняя реализация операций над вещественными числами в процессорах).

Для того, чтобы вычисления вообще могли исполняться параллельно/распределённо, требуется их перевод в форму, пригодную для такого исполнения – параллелизация . Выбор конкретной модели параллелизации зависит от характера имеющейся задачи; скалярные вычисления , отдельные части которых необходимо исполняются взаимно последовательно, параллелизации не поддаются.

История

В 1973 году Джон Шох и Джон Хапп из калифорнийского научно-исследовательского центра Xerox PARC написали программу, которая по ночам запускалась в локальную сеть PARC и заставляла работающие компьютеры выполнять вычисления .

В 1978 году советский математик Виктор Глушков работал над проблемой макроконвейерных распределённых вычислений. Он предложил ряд принципов распределения работы между процессорами .Шаблон:R/ref На базе этих принципов им была разработана ЭВМ ЕС-2701 .

В январе 1996 года стартовал проект GIMPS по поиску простых чисел Мерсенна , также используя компьютеры простых пользователей как добровольную вычислительную сеть.

28 января 1997 года стартовал конкурс RSA Data Security на решение задачи взлома методом простого перебора 56-битного ключа шифрования информации RC5 . Благодаря хорошей технической и организационной подготовке проект, организованный некоммерческим сообществом distributed.net , быстро получил широкую известность .

17 мая 1999 года стартовал SETI@home на базе Grid , а в начале 2002 года завершилась разработка Калифорнийского Университета в Беркли открытой платформы BOINC (Berkeley Open Infrastructure for Network Computing), разрабатываемой с апреля 2000 года первоначально для SETI@Home , но первым на платформе BOINC стал проект Predictor@home запущенный 9 июня 2004 года.

Управление вычислительными заданиями

Проблема распределения различных вычислительных задач в рамках распределенной системы относится к проблеме принятия решений в условиях неопределённости . Данная проблема рассматривается в теории принятия решений и в теории неопределённости .

Распределённые операционные системы

Распределённая ОС, динамически и автоматически распределяя работы по различным машинам системы для обработки, заставляет набор сетевых машин обрабатывать информацию параллельно. Пользователь распределённой ОС, вообще говоря, не имеет сведений о том, на какой машине выполняется его работа.

Распределённая ОС существует как единая операционная система в масштабах вычислительной системы. Каждый компьютер сети, работающей под управлением распределённой ОС, выполняет часть функций этой глобальной ОС. Распределённая ОС объединяет все компьютеры сети в том смысле, что они работают в тесной кооперации друг с другом для эффективного использования всех ресурсов компьютерной сети.

В результате сетевая ОС может рассматриваться как набор операционных систем отдельных компьютеров, составляющих сеть. На разных компьютерах сети могут выполняться одинаковые или разные ОС. Например, на всех компьютерах сети может работать одна и та же ОС UNIX . Более реалистичным вариантом является сеть, в которой работают разные ОС, например, часть компьютеров работает под управлением UNIX, часть - под управлением NetWare, а остальные - под управлением Windows NT и Windows 98 . Все эти операционные системы функционируют независимо друг от друга в том смысле, что каждая из них принимает независимые решения о создании и завершении своих собственных процессов и управлении локальными ресурсами. Но в любом случае операционные системы компьютеров, работающих в сети, должны включать взаимно согласованный набор коммуникационных протоколов для организации взаимодействия процессов, выполняющихся на разных компьютерах сети, и разделения ресурсов этих компьютеров между пользователями сети.

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

Таким образом, термин «сетевая операционная система» используется в двух значениях: как совокупность ОС всех компьютеров сети и как операционная система отдельного компьютера, способного работать в сети. Из этого определения следует, что такие операционные системы, как, например, Windows NT, NetWare, Solaris, HP-UX, являются сетевыми, поскольку все они обладают средствами, которые позволяют их пользователям работать в сети.

Ссылки и примечания

В статье использованы материалы из Википедии .

Открытая литература

  • Parallel and distributed computation: numerical methods / D.P. Bertsekas, J.N. Tsitsiklis. – Prentice-Hall, 1989 ; Athena Scientific, 1997. – Режим доступа: .]