Сайт о телевидении

Сайт о телевидении

» » Распределённые вычисления: как собрать с миру по гигафлопсу на развитие науки. Распределённые вычисления

Распределённые вычисления: как собрать с миру по гигафлопсу на развитие науки. Распределённые вычисления

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

Но давайте вернемся в действительность. Машины времени нет. Полеты в космос пока не столь далеки. Болезни не побеждены. “Где же эти ученые? Какая, например, мне польза от открытий Эйнштейна”, — думают многие, когда плывут на теплоходе по океану. А ведь теплоход ориентируется по 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) заработали. Количество очков зависит от производительности компьютера , от числа задействованных машин (можно под одним именем использовать несколько компьютеров) и времени, сколько компьютер может заниматься вычислениями. Некоторые проекты несколько раз в год проводят так называемые заезды или челленджи — когда соревнуются команды: кто из команд за определенный промежуток времени заработает больше всех кредитов.

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

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

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

  • Tutorial

Девять лет назад я начал «в свободное от основной работы время» преподавать компьютерные дисциплины в одном из университетов Санкт-Петербурга. И только сравнительно недавно к своему удивлению обнаружил, что в наших вузах практически отсутствуют курсы с фокусом на проблематику распределённых вычислений. И даже на Хабре эта тема не раскрыта в достаточной мере! Надо прямо сейчас исправлять ситуацию.

Этой теме я и хотел посвятить статью или даже серию статей. Но потом решил выложить своё учебное пособие по основам распределённых вычислений, вышедшее в свет в этом году (читай, небольшую книгу объемом 155 страниц). В итоге получился гибрид – статья со ссылкой на книгу. Книга распространяется бесплатно и доступна в электронном виде.

Вместо пролога. Приступив к тексту статьи, я в очередной раз задумался, а зачем программисту нужно знать теоретические основы распределённых вычислений. Этот вопрос я неоднократно слышал (и продолжаю слышать) от студентов и специалистов, уже работающих в области ИТ. Действительно, зачем, например, знать, что «множество событий распределённого вычисления упорядочено частично, а не линейно»? В чем, так сказать, каждодневная практическая польза этого фундаментального знания?

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

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

Все мы совершенно естественным образом рассчитываем на то, что перед тем как начать какие-либо манипуляции с человеческим организмом врачи всё-таки изучают его внутреннее устройство и принципы работы. Мы абсолютно не согласны с утверждением, что хирургам гораздо важнее пройти практические курсы кройки и шитья вместо многолетней зубрежки теоретического материала о том, что у нас там внутри и зачем оно там. Так почему же программистам, занимающимся разработкой системы с сетевым взаимодействием (т.е. к настоящему моменту практически любой системы), не нужно знать «что там внутри и зачем оно там»? Почему ошибки в ИТ воспринимаются максимум с легкой иронией? Ну да, ну баг. А кто не пьет не делает багов?! Назови! Нет, я жду! Среди требований к программистам очень часто почему-то на передний план выходят практические навыки владения тем или иным языком программирования. Причем сильно на передний план, полностью затмевая собой требования к пониманию основных концепций, теоретических моделей, алгоритмов, в конце концов… Да и сами программисты, чего греха таить, с началом разговора «про никому не нужную теорию» вянут как цветы в пустыне… Чудеса, не правда ли…

Приведу небольшое высказывание Л. Лэмпорта на эту тему (чуть ниже я постарался перевести это высказывание на русский язык, не сильно отдаляясь от оригинала):

For quite a while, I"ve been disturbed by the emphasis on language in computer science. One result of that emphasis is programmers who are C++ experts but can"t write programs that do what they"re supposed to. The typical computer science response is that programmers need to use the right programming / specification / development language instead of / in addition to C++. The typical industrial response is to provide the programmer with better debugging tools, on the theory that we can obtain good programs by putting a monkey at a keyboard and automatically finding the errors in its code.
I believe that the best way to get better programs is to teach programmers how to think better. Thinking is not the ability to manipulate language; it"s the ability to manipulate concepts. Computer science should be about concepts, not languages.

Уже довольно длительное время меня беспокоит слишком большое внимание, уделяемое компьютерному языку в ИТ. В результате переизбытка такого внимания появляются программисты, которые являются экспертами в С++, но которые не в состоянии написать программы, делающие то, что от этих программ требуется. Типичная реакция представителей ИТ на эту проблему заключается в предложении программистам использовать другой более подходящий язык (программирования, спецификаций и т.п.) вместо / вдобавок к С++. В свою очередь характерный для индустрии разработки ПО выход из ситуации видится в предоставлении программистам более совершенных инструментов отладки, видимо, основываясь на предположении, что получить хорошие программы можно просто посадив мартышку за клавиатуру и затем отыскивая и исправляя ошибки в её коде.
Моё твердое убеждение в том, что для получения качественных программ необходимо учить программистов думать лучше. Умение думать – это не способность оперировать компьютерным языком; это способность оперировать концепциями. Изучение информационных технологий должно быть сфокусировано на изучении концепций, а не языков.

Для иллюстрации того насколько могут быть важны «концепции» и «элементы теории» в вопросах построения распределённых систем давайте рассмотрим парочку простеньких примеров. Для начала - групповую рассылку сообщений электронной почты между пользователями A, B, C и Х. Предположим, что пользователь А отправляет всей группе письмо с темой «Общее собрание». Пользователи В и С отвечают на него всей группе своими сообщениями с темой «Re: Общее собрание».

В действительности события происходят в следующей последовательности:

  1. Первым отправляется сообщение от пользователя А.
  2. Пользователь В получает его, читает и отправляет ответ.
  3. Пользователь С получает оба сообщения от А и В и затем отправляет свой ответ, опирающийся на оба сообщения от А и В.
Однако в связи с произвольными и независимыми задержками доставки сообщений, некоторые пользователи могут видеть другую последовательность наступления событий. Например, согласно сценарию, приведённому на рисунке ниже, в почтовом ящике пользователя Х сообщения будут располагаться в следующем порядке:
  1. Сообщение от пользователя С с темой «Re:Re: Общее собрание».
  2. Сообщение от пользователя А с темой «Общее собрание».
  3. Сообщение от пользователя В с темой «Re: Общее собрание».

Ага, оказывается порядок поступления сообщений, наблюдаемый различными процессами, может быть различным даже для FIFO каналов! А что делать, если мы хотим, чтобы наблюдаемый порядок был везде одинаков (и при этом не хотим использовать синхронный обмен сообщениями)? К примеру, если мы пишем свой транспорт с соответствующими гарантиями. Или хотим построить отказоустойчивую службу (replicated state machine), где каждая реплика должна обрабатывать поступающие запросы в едином для всех реплик порядке, чтобы состояния реплик не различались? Вопрос…

Рассмотрим теперь еще одно выполнение распределённой системы, в которой процессы взаимодействуют только с помощью обмена сообщениями, и каждый процесс занимается включением / выключением фонаря с определенным светом. Пусть первый процесс управляет фонарем с красным светом, второй – с желтым, а третий – с зеленым. Такая вот светофорная система. На рисунке ниже включение процессом своего фонаря обозначено прямоугольником, а выключение – вертикальной линией; отправка и получение сообщения – стрелкой. Вопрос: могут ли процессы определить, какие фонари светили одновременно?

Так вот оказывается, что в данном выполнении асинхронной системы процессы никак не смогут определить был ли включен красный свет одновременно с желтым. Может быть да. А может и нет… Сие останется неизвестным. Но зато будет точно известно, что красный и зеленый фонари одновременно находились во включенном состоянии. Другими словами, оказывается, нет особого смысла говорить о том, что то или иное глобальное состояние достигается по ходу выполнения распределённой системы! Равно как и очень часто нельзя сказать, выполнялось ли какое-либо условие (предикат), заданное на множестве его глобальных состояний! Опять же вопрос: почему?

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

Из этой книги вы узнаете:

  • про причинно-следственный порядок событий распределённого вычисления
  • что такое справедливость, безопасность и живучесть
  • что такое конус прошлого и конус будущего для события вычисления
  • чем логический параллелизм отличается от физического параллелизма
  • почему не имеет особого смысла говорить о совокупности глобальных состояний вычисления, а имеет смысл говорить о совокупности событий вычисления
  • как нам упорядочить события распределённого вычисления в одну или несколько последовательностей, которые «могли бы» происходить в системе
  • что такое логические часы, и какое такое логическое время они отсчитывают
  • почему логическое время останавливается, если в системе ничего не происходит
  • чем скалярное время отличается от векторного
  • как и для чего можно использовать логическое время в распределённых алгоритмах
  • какие есть подходы к эффективной реализации векторных часов
  • зачем нам может понадобиться матричное время
  • чем распределённый алгоритм отличается от централизованного
  • как решать задачу взаимного исключения без использования разделяемых переменных
  • на какие категории делятся все распределённые алгоритмы взаимного исключения
  • зачем в алгоритмах на основе получения разрешений используется логическое время
  • почему философам так трудно пообедать в распределённой системе
  • зачем нам граф конфликтов и граф предшествования
  • почему граф предшествования должен меняться со временем
  • почему в алгоритмах на основе передачи маркера есть еще много чего кроме собственно «передачи маркера»
  • и, я надеюсь, ещё кое-что…
Из чего состоит книга и как её читать?

В начале я постарался в двух словах изложить, какие цели ставились при написании книги, и как она соотносится с другой литературой. Этому посвящено введение к книге. Оно занимает всего чуть более двух страниц, поэтому прочитать его стоит.

Первый раздел по большей части болтологический и посвящен «качественным» особенностям распределённых систем. Если вы не знаете, что такое распределённая система, и какие к ней предъявляются требования, то первый раздел имеет смысл прочитать. Если же вы знаете, что поступающие процессу-получателю сообщения могут давать устаревшее представление о процессе-отправителе, точно так же, как и световое излучение, поступающее к нам от далекой звезды, дает представление о состоянии этой звезды в прошлом, то первые четыре пункта можно пропустить:) Отдельно стоит отметить п. 1.5 «Взаимодействие в распределённых системах», в котором я попытался привести несколько простых задач, демонстрирующих сложности, с которыми можно столкнуться при разработке распределённых систем. Эти задачи мы будем потом решать, вооружившись теоретическими знаниями, поэтому стоит с ними ознакомиться.

Во втором разделе представлена модель распределённого вычисления и основная теория, используемая при дальнейшем изложении. В определенном смысле этот раздел является ключевым. Однако надо быть готовым к работе с такими терминами как «множество / подмножество», «бинарное отношение», «отношение эквивалентности», «отношение порядка», «линейный / частичный порядок». В этом разделе вы встретите доказательства некоторых утверждений. Мне кажется, что их следует, как минимум, проглядеть (а лучше изучить) для более глубокого понимания существенных особенностей функционирования распределённых систем, выделяющих их среди систем других классов.

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

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

На кого ориентирована эта книга?

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

Чего бы мне хотелось?

"Ну и что, что у меня Crysis не запускается", — с бесхитростной простотой признался мой друг Владимир, — "зато в 1974 году мой компьютер смог бы управлять эскадрой военных спутников!"

Я не стал возражать, мощность современных компьютеров доставляет удовольствие только производителям компьютерных игр и создателям монстроподобных операционных систем. 9 пользователей из 10 загружают процессор процентов на 40 в день. Всё остальное время – бессмысленное взбалтывания кулерами воздуха пока четырёхгигарцевый образец человеческого гения играет роль медиацентра.

Те, кого мучает совесть за нерациональное использование мощностей, организовали на нашей планете нечто вроде клуба любителей 100 процентного КПД ПК. Хакер проект SETI, от рака и СПИДа, а также множество других гуманных и нравственных проектов, включая получение наибольшего простого числа.

Предположим, в инопланетян вы до первого литра не верите, а лекарства считаете противными истинной сути «матери-природы». Более того, вам плевать даже на новые делители для чисел Ферма. Но не теряйте надежду. В мире существуют десятки других распределённых проектов, некоторые из которых разработаны хакерами для хакеров (RainbowCrack), предлагают вам неплохо заработать (GIMPS), а то и вовсе несут угрозу частичного вымирания человечества (LHC@home). Выбрать из них – лишь дело вкуса и ваших личных предпочтений.

Распределенные вычисления кажутся скучными играми математиков. До тех пор, пока кто-то не начинает считать на вашем компьютере модель локальной ядерной войны в странах третьего мира. Или разрабатывать новое бактериологическое оружие под видом лекарства от рака. Есть и очень популярные проекты, которые прямым текстом кричат «мы опасны!», но за общими словами создателей «ах, как это полезно и вы совсем ничего не теряете», трудно разглядеть истинные цели исследований. Знать заранее – и быть готовым к последствиям – ваша прямая обязанность. Иначе есть большой шанс, что миллионы леммингов сдвинут колесо истории в пропасть.

Climate Prediction

Проект, который пытается разбить на тысячу хрустящих осколков основы теории хаоса и предсказать погоду на 50 лет вперёд. Основываются предсказания не на «новых революционных методах прогнозирования, с использование суперкомпьютеров и магии индейских шаманов», а на самых что ни на есть старых теориях и схемах. То есть тем самым образом, каким погоду предсказывают и сейчас. Таким образом проект ставит перед собой 2 цели: во-первых, установить какова точность и эффективность используемых сейчас методик; во-вторых, если методики эффективны, предсказать погоду на наибольший период.

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

Требования: во время работы программа занимает около 50 Мегабайт памяти, для сохранения данных потребуется 500 Мб на жёстком диске. В качестве бонуса отмечу интерактивность работы – вы сможете увидеть трёхмерную модель Земли и отследить своими глазами изменения в климате.

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

LHC@home

Если вы торопитесь приблизить конец света на Земле – этот проект для вас. Проект занимается моделированием процессов, которые будут происходить в строящемся сейчас в Швейцарии LHC (Large Hadron Collider ) — самом большом в мире ускорителе частиц . В ускорителе длиной около 27 километров планируют столкнуть два протона для того, чтобы экспериментально доказать существование некого бозона Хиггса. Некоторые специалисты и представители общественности высказывают опасения, что имеется отличная от нуля вероятность выхода проводимых в коллайдере экспериментов из-под контроля и развития цепной
реакции, которая при определённых условиях теоретически может уничтожить всю планету. Точка зрения сторонников катастрофических сценариев связанных с работой LHC изложена на сайте http://www.risk-evaluation-forum.org/anon1.htm .

Считаете, что за дело аннигиляции всей вселенной можно и умереть – тогда присоединяйтесь. Дело в том, что от LHC ежегодно планируют получать до 15 петабайт данных. Уже сейчас вы можете помочь начать обрабатывать эти данные скачав программу SixTrack , которая моделирует движущиеся по кольцу в LHC частицы для изучения стабильности их орбит. Результаты выполнения программы SixTrack очень важны, от них зависит как будет работать крупнейший в мире научный проект, деятельность которого может совершить революцию в физике или отправить нашу галактику в антипространство.

Требования: несущественны.

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

Muon1 Distributed Particle Accelerator Design

При маловероятном раскладе успешного испытания LHC , человечество непременно погубит Muon1 . К 2015 году планируется соорудить первую в мире The Neutrino Factory лабораторию генерации частиц нейтрино . Нейтрино – самая распространённая частица во вселенной. Проникает практически через любые объекты без существенного снижения скорости. Известно, что через тело человека ежесекундно проскакивают 10 14 нейтрино. Понимание природы нейтрино даст человечеству ключ к разгадке истории возникновения всей вселенной.

Для генерации нейтрино планируется использовать мюонный колайдер — ускоритель, благодаря которому можно будет достичь самых высоких энергий столкновения частиц, когда-либо осуществлённых человеком. По сравнению с ним LHC – игрушка для детсадовца. Будет ли эффективна Muon1 и какие вообще результаты следует ожидать от нового колайдера решит ваш компьютер, если присоединится к проекту. Какими конкретно расчётами занимается клиентская программа понятно только специалисту в области квантовой физики. Однако не сомневайтесь – результаты очень важны.

Требования: Pentium III-500 c 64 МБ памяти.

Результат: возможно именно вы дадите толчок к финансированию одного из самых амбициозных проектов в истории человечества.

RainbowCrack

В то время как большинство проектов, связанных с компьютерной безопасностью, занимаются утомительными, едва ли не бессмысленными методами взлома шифровальных систем, RainbowCrack создаёт базу по всем возможным видам паролей и соответствующим им хэшам по всем распространённым в мире алгоритмам хэширования. Обычно, хэшированный вариант пароля хранится в открытом доступе и известно, по какому алгоритму получен этот хэш (например MD5), но обратное преобразование считается слишком сложной операцией, требующей в общем случае перебор всех возможных комбинаций — это ставится в основу безопасности многих современных систем. Если же иметь сортированные таблицы хэшей и соответствующие им
пароли — получим систему, которая с помощью быстрого бинарного поиска по таблице может получать обратное преобразование хэша в пароль для любого существующего алгоритма хэширования.

Сейчас в проекте создано сотни гигабайт всех возможных паролей, которые позволяют с вероятностью порядка 99% найти за несколько минут обратное преобразование из хэша в любой пароль длиной до 7 символов (не только из букв, но также цифр и многих спец-символов), зашифрованных по алгоритмам LanMan (авторизация в Windows), NT LanMan (авторизация в Windows NT, в том числе сетевых доменах), MD2 , MD4 , MD5 , SHA1 , RIPEMD-160 , Cisco PIX (большинство маршрутизаторов), MySQL 3.23 , MySQL SHA1 .

Всем участникам проекта предоставляется возможность уже сейчас пользоваться полученной системой расшифровки паролей в виде онлайн-сервиса — частота использования сервиса одним участником неограниченна, но ограничено время действия каждого аккаунта. Для продления времени доступа участникам предлагается рассчитывать новые таблицы, увеличивающие количество поддерживаемых алгоритмов и комбинаций паролей. Обычно на расчёт таблицы уходит от нескольких дней до недели процессорного времени (2 ГГц) — за каждую таблицу время доступа продляется на 2 недели.

Требования: 640 Мегабайт на жёстком диске, исходящий трафик – около 3 Гигабайт в месяц. Почти не требует входящего трафика, процессорного времени или специфической оси.

Результат: редкий случай, когда работаете вы, скорее всего, на себя и результат используете в деле.

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

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. – Режим доступа: .]

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

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

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

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