Распределённые вычисления. Вычислительные сети, теория и практика

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

Часть 1. Высокопроизводительные вычисления в каждый дом

Серия контента:

1. Введение

Что делает ваш компьютер, когда ничего не делает? Пользователи одной из альтернативных операционных систем знают, что самый прожорливый процесс – это «System Idle»: как правило, он «съедает» около 90% ресурсов процессора. А чем занят ваш компьютер?

Выполните команду uptime, чтобы узнать среднюю загруженность системы. Если в этот момент ваш компьютер не занимается перекодированием видео или компиляцией ядра, то, скорее всего, средняя загруженность будет невелика – ниже 1.0. Такие действия, как просмотр Интернет-страниц, редактирование офисных документов и загрузка файлов с помощью торрент-клиента почти незаметны (с точки зрения производительности) для современных компьютеров.

Как же можно с пользой потратить время «безделья» компьютера? Ответу на этот вопрос и посвящена статья. Я расскажу вам, как можно заставить свою машину работать на благо человечества. В следующей статье речь пойдет о том, как создать собственный сервер распределенных вычислений.

2. Загадочная «решетка»

Речь пойдет об одной из форм распределенных вычислений (в международной терминологии такие вычисления называют GRID – решетка) – Volunteer Computing. Сначала поясним термины.

GRID – это объединение нескольких компьютеров для решения единой вычислительно сложной задачи, разбитой на подзадачи. Каждый компьютер решает несколько подзадач, а результаты отдельных вычислений объединяются. Основное преимущество GRID в том, что она может состоять из компьютеров, находящихся друг от друга на тысячи километров и имеющих различные характеристики (как аппаратные, так и программные). Задачу объединения этих разнородных компьютеров выполняет промежуточное программное обеспечение, которое (виртуально) связывает все компьютеры через Интернет в единый суперкомпьютер. Идея GRID возникла в 1990-х годах, когда с развитием средств компьютерных коммуникаций объединение географически удаленных друг от друга компьютеров стало более дешевым, простым и потенциально более мощным средством повышения производительности, чем наращивание мощности одного-единственного суперкомпьютера.

Существуют различные виды GRID. Volunteer Computing – это форма реализации GRID-вычислений, специфика которой заключается в использовании времени простоя компьютеров обычных пользователей по всему миру. На текущий момент самым крупным проектом Volunteer Computing как по числу участников, так и по суммарной мощности является Folding@home – проект по проведению компьютерной симуляции свертывания молекул белка, запущенный в октябре 2000 года учеными из Стэнфордского университета. Однако речь в этой статье пойдет не о Folding@home, а о втором по величине проекте – системе BOINC. Причина проста – в отличие от специализированного Folding@home, проект BOINC предоставляет возможность участия в самых разнообразных научных проектах, начиная от взлома криптографических систем и заканчивая поиском внеземных цивилизаций!

3. BOINC

Производительность

По состоянию на момент написания статьи, BOINC насчитывает 340 тысяч активных компьютеров, а суммарная производительность компьютеров участников проекта составляет 1,9 Петафлопа. Это почти в 2 раза превышает производительность мощнейшего современного суперкомпьютера IBM Roadrunner. Статистику проекта BOINC можно увидеть на официальной странице http://boinc.berkeley.edu/

Для организации распределенных вычислений (GRID-вычислений) необходима соответствующая программная платформа. Система должна уметь разбивать одну большую задачу на множество маленьких подзадач, распределять эти подзадачи по вычислительным узлам, принимать результаты вычислений и объединять их в единое целое. Для этого были созданы различные программные «прослойки» между управляющим сервером и вычислительными узлами. Одной из таких программных «прослоек» является BOINC.

3.1. Что такое BOINC

SETI@HOME

SETI@HOME – это некоммерческий проект по поиску внеземного разума с помощью анализа радиосигналов с радиотелескопа Аресибо.

SETI (Search for Extra Terrestrial Intelligence, Поиск ВнеЗемного Разума) – это направление исследований, направленное на обнаружение разумной жизни за пределами Земли. Основной метод – исследование радиосигналов, которыми пронизан космос. Ученые пытаются найти радиосигналы, источники которых не могут быть природными.

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

Предыдущие проекты SETI использовали специализированные суперкомпьютеры, выполнявшие основной объем анализа данных. В 1995 году Дэвид Андерсон (David Anderson) запустил проект по обработке данных SETI на виртуальном суперкомпьютере, состоящем из множества компьютеров, подключенных к сети Интернет, и организовал проект SETI@home (SETI на дому) для апробирования этой идеи. Проект SETI@home был запущен в мае 1999 года, а в 2005 году полностью перешел на платформу BOINC.

Выступление Дэвида Андерсона, посвященное SETI@HOME, распределенным вычислениям и BOINC, можно найти на YouTube: http://www.youtube.com/watch?v=8iSRLIK-x6A (EN).

BOINC (Berkeley Open Infrastructure for Network Computing – открытая платформа Университета Беркли для сетевых вычислений) – это свободная (распространяется под лицензией GNU LGPL) программная платформа для проведения распределенных вычислений (если точнее, то Volunteer Computing). Система BOINC была разработана в Калифорнийском университете в Беркли под руководством Дэвида Андерсона (David Anderson) командой, создавшей легендарный проект SETI@home. Основным мотивом разработки системы послужила нехватка свободных вычислительных мощностей для обработки данных, поступающих от радиотелескопов. Именно поэтому разработчики решили привлечь вычислительные ресурсы и объединить сообщества нескольких научных проектов. Для решения этой масштабной задачи и была создана программная платформа BOINC.

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

Пользователи, передающие вычислительные мощности BOINC-проектам типа SETI@home, «зарабатывают» кредиты, начисляемые за выполнение отдельных подзадач. Эти кредиты нужны только для создания духа соревновательности среди участников проекта – пользователи, имеющие наибольшее число кредитов, имеют шанс «засветиться» на главной странице проекта.

3.2. Установка

Установка программы-клиента BOINC в Linux проста до невозможности – пользуясь любимым пакетным менеджером, установите из репозитариев пакеты boinc-client, boinc-manager и boinc-gui. Если вы предпочитаете пользоваться новейшим программным обеспечением или если ваш дистрибутив Linux не имеет пакетного менеджера/репозитариев (а такие еще остались?), то получить установочный пакет свежей версии программы можно со страницы загрузки официального сайта проекта (ищите адрес сайта в разделе «Ссылки» под номером 1).

Вне зависимости от способа, которым вы установили программу-клиент, все основные файлы вы найдете в своем домашнем каталоге в подкаталоге BOINC – здесь находятся не только исполняемые файлы, но и файлы настроек, а также данные, необходимые для обсчета заданий. (Благодаря этому вы можете с легкостью «заставить работать» на один проект все компьютеры вашей корпоративной сети).

Для начала нужно запустить графический менеджер программы:

user: /home/user/run_manager

При первом запуске вам будет предложено подключиться к какому-либо проекту, упрощать этот процесс будет специальный помощник (см. рисунок 1).


На следующем шаге нужно будет выбрать проект, к которому вы хотите присоединиться, затем ввести свой электронный адрес и придумать пароль, а потом, возможно, потребуется завершить регистрацию на сайте самого проекта. В частности, на сайте можно выбрать команду (например, «Russia Team ») или даже создать свою собственную (я создал команду «Linux users Team» на проекте Climateprediction.net, присоединяйтесь!). Команды, как и отдельные участники, тоже участвуют в неформальном соревновании «Собери больше кредитов!».

К сожалению, описаний проектов менеджер BOINC при регистрации не предоставляет, поэтому выбором придется озаботиться заранее, например, просмотрев списки проектов, представленные по адресам в разделе «Ссылки» (). Не все так гладко и с предлагаемыми менеджером проектами, например, Einstein@home требует значительных аппаратных ресурсов, а SHA-1 Collision Search Graz уже не предоставляет заданий для обработки...

3.3. Работаем на благо науки!

Сразу после регистрации в проекте, программа-клиент BOINC начнет загрузку данных, необходимых для выполнения заданий. Учтите, что в зависимости от проекта этот этап может занять довольно продолжительное время и повлиять на вашу статистику полученного Интернет-трафика. Проекту ClimatePrediction.net понадобилось загрузить более 100 MБ, прежде чем начать обсчитывать первое задание.

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

Помимо такого (упрощенного) вида окна программы-клиента BOINC, есть и более информативный расширенный вид – нажмите на кнопку Advanced View в правом нижем углу (см. рисунок 3).


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

На вкладке «Задания» выделите строчку с заданием – тогда станут активными кнопки на панели слева (как на рисунке 3). Нажмите кнопку «Показать графику», и вашему взору предстанет замечательная картинка – это та самая модель, которую обсчитывает ваш компьютер. Поиграв управляющими клавишами (см. подсказки слева: T – температурная карта, R – снег и дождь, P – давление, C – облачность, S – запуск/остановка вращения глобуса, G – показать/скрыть сетку, H – помощь), можно наблюдать что-то аналогичное показанному на рисунке 4.


Конечно, какую картинку вы увидите – это зависит от проекта. Ничто не мешает вам поискать для себя что-то более интересное.

Еще одно замечание практического плана. На рисунках 2 и 3 видно, что общее время, необходимое для расчета задания, превышает 200 часов. Конечно, не каждый (особенно домашний) компьютер имеет время непрерывной работы порядка 10 суток. Для того чтобы не потерять все результаты расчетов при выключении компьютера, BOINC устанавливает контрольные точки. Кнопка «Информация» на вкладке «Задания» покажет, в том числе, и информацию о времени последней контрольной точки – при выключении компьютера вы потеряете лишь порядка 15 минут работы процессора.

3.4. Настройка программы-клиента «под себя»

Пользователю дается большой контроль над программой-клиентом BOINC с помощью различных настроек. Некоторые из этих настроек специфичны для проекта, другие являются общими и влияют на работу программы в целом. В расширенном виде окна программы-клиента выберите пункт меню «Дополнительно» – «Настройки клиента». Здесь вы можете указать такие параметры использования компьютера, что работа программы-клиента BOINC будет практически незаметна! Вы можете ограничить объем используемых для распределенных вычислений ресурсов процессора. Кроме всего прочего, можно указать, будет ли программа-клиент запускать на обсчет задания в то время, когда пользователь активно использует компьютер, или работа над распределенным проектом начнется только после определенного времени простоя процессора.

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

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

Если вы до сих пор не определились, какому именно проекту отдать свободные силы своего компьютера, не переживайте! Вы можете участвовать сразу в нескольких проектах («Сервис» –«Добавить проект» в расширенном виде окна программы или кнопка «Add Project» – в упрощенном) – по умолчанию программа-клиент BOINC будет каждые 60 минут (этот параметр тоже можно изменить) переключаться между заданиями различных проектов.

3.5. Некоторые технические подробности

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

Каждая программа-клиент подключается к серверу и получает задание на обработку. Через некоторое время, когда задание выполнено, программа-клиент снова подключается к серверу и передает ему результаты (а также получает новое задание). За выполнение задания зарегистрированный участник проекта, которому принадлежит программа-клиент, получает кредиты – баллы, характеризующие процессорное время, потраченное на проведение вычислений.

Однако в этой схеме для проекта распределенных вычислений спрятан ряд опасностей. Во-первых, программа-клиент, получившая задание, может по различным причинам никогда не выйти снова на связь с сервером. Например, если участник проекта, которому принадлежит программа-клиент, потерял интерес к проекту. Во-вторых, участники проекта (опять же по различным причинам) могут посылать неверные результаты. Это еще более опасно для проекта, чем просто отсутствие результата, так как одно-единственное неверно посчитанное задание может стать причиной полного фиаско проекта! И, в-третьих, участники проекта могут попытаться получить больше кредитов, чем они заработали. Конечно, так как заработанные кредиты используются только для статистики, эта опасность на первый взгляд не так уж страшна... Однако проблема лежит в психологии сохранения сообщества. Не такое уж большое число пользователей заинтересованы именно в помощи научному исследованию, большая часть пользователей будут раздражены «читерами» и, как следствие, разочарованы проектом, и перестанут уделять ему время.

Первую проблему система BOINC обходит просто – назначая конечный срок, к которому программа-клиент должна вернуть результат вычислений (например, на рисунке 3 видно, что конечный срок, к которому нужно вернуть результат задания – это 19 мая 2010 года).

Вторая проблема решается за счет передачи одного и того же задания нескольким пользователям (это называется избыточными вычислениями). Для каждого задания количество дублирующих друг друга исполнителей индивидуально, но значение по умолчанию платформы BOINC равняется пяти. Когда программа-клиент отчитывается о проведенных вычислениях, сервер сравнивает результаты, присланные разными участниками. Результат, принятый «кворумом» программ-клиентов, считается правильным, а неверные ответы отвергаются. Участники, вернувшие серверу неверные результаты, не получают кредитов. Число программ-клиентов, составляющее «кворум», также может быть указано для каждого задания в отдельности, а значение по умолчанию равняется трем. Кстати, именно из-за такой формы проверки результатов вы будете наблюдать задержки в подсчете заработанных кредитов.

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

3.6. Подведение итогов

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

Однако это далеко не все, что можно было бы рассказать о BOINC. Например, BOINC умеет использовать для вычислений GPU (Graphics Processing Unit) видеокарты NVIDIA. Вы можете создавать обложки («скины») для программы-клиента, запускать программу-клиента на разных компьютерах под одной учетной записью, управлять работой программы-клиента без графического интерфейса и даже найти свой украденный компьютер с помощью BOINC! Ну и, конечно же, любой человек может создать свой собственный проект распределенных вычислений на основе BOINC. Начните с этой страницы http://boinc.berkeley.edu/wiki/User_manual официального сайта, а в случае затруднений обратитесь на русскоязычный форум: http://boinc.ru/forum/ .

В следующей статье мы подробно остановимся на том, как создать свой собственный сервер BOINC. Кто знает, быть может, это послужит появлению новых отечественных проектов распределенных вычислений? А пока подождем, когда на полную мощность будет запущен российский проект DrugDiscovery@Home (смотрите адрес сайта в разделе «Ссылки» под номером 9), созданный и поддерживаемый интернациональной командой разработчиков и находящийся в стадии альфа-тестирования.

4. Заключение

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

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

Тем не менее, развитие Всемирной Сети и увеличение производительности процессоров в полном соответствии с законом Мура привело к тому, что сейчас распределенные сети на равных конкурируют с топовыми суперкомпьютерами, причем, в отличие от них, постоянно совершенствуются и не стоят ни копейки.

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

Наверное, самым важным и пока еще не до конца раскрывшим себя шагом стал переход на GPU-вычисления, в некоторых случаях ускоряющий расчеты на порядок. Значительную роль сыграла и оптимизация вычислительных алгоритмов под многоядерные процессоры, возможность одновременного выполнения расчетов на CPU и GPU, поддержка 64-битных вычислений, появление клиентов для игровых консолей, поддержка альтернативных операционных систем (Mac OS X, Linux), быстрое распространение Интернета, и что немаловажно, заметное упрощение клиентов, которые больше не требуют от пользователей запуска вычислений через командную строку.

Сравнение с суперкомпьютерами

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

По состоянию на октябрь 2012 года проект Folding@home «завербовал» 219 тыс. процессоров, 20 тыс. GPU, 16 тыс. консолей PlayStation 3, и его суммарная мощность составила 3.7 petaFLOPS (пиковая мощность 6 petaFLOPS была зарегистрирована в ноябре 2011 г.). По данным за этот же месяц, производительность BOINC (всех проектов, входящих в состав этой сети) составляет 6.6 petaFLOPS (на момент публикации материала — 7.4 petaFLOPS, по данным официального сайта, но эта цифра подсчитывается лишь за последние 24 часа).

Если эти виртуальные вычислительные системы разместить в списке суперкомпьютеров, то они втиснутся между третьей и четвертой строчкой рейтинга, заметно опережая ближайшего конкурента (производительность SuperMUC, занимающего сейчас четвертое место, составляет 3.1 petaFLOPS).

Для того, чтобы подняться на первое место, Boinc необходимо быть быстрее приблизительно в три раза, поскольку рейтинг Sequoia (самого производительного на текущий момент суперкомпьютера в мире) составляет 20.1 petaFLOPS. Учитывая, что этот компьютер в полную мощность заработал лишь летом этого года, можно предположить, что распределенные вычислительные системы смогут вырваться вперед уже в течение нескольких лет, даже с учетом появления новых суперкомпьютеров.

Основные направления исследований

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

Как подключиться к сети распределенных вычислений

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

Проще всего это сделать, скачав клиент BOINC и запустив мастер добавления нового проекта. На одном из шагов необходимо будет зарегистрироваться (что можно сделать прямо в программе), вот и все трудности. Если возникли затруднения с выбором конкретного проекта, то можно указать сразу несколько, и они будут считаться по очереди.

По умолчанию BOINC использует компьютер все свободное время, однако выставляет для своих расчетов самый низкий приоритет, так что процессорные ресурсы используются клиентом в самую последнюю очередь.

Что касается памяти, то здесь понятие приоритета неприменимо, а поскольку на многоядерных процессорах BOINC запускает сразу несколько копий расчетов, каждая из которых может занимать в памяти несколько сотен мегабайт (такие объемы нужны не для всех проектов), то в играх и других требовательных приложениях все же лучше ставить расчеты на паузу, что можно сделать непосредственно в клиенте.

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

Очки за участие

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

Boinc — это не распределенная сеть в традиционном понимании, а скорее посредник между проектами и пользователями. Изначально Boinc разрабатывался как клиент для SETI@home, но сейчас с его помощью можно подключиться и к десяткам других проектов.

Самый мощный проект по изучению климата Земли. Занимается моделированием погодных условий будущего (до 2080 года) с учетом различных входных данных. На текущий момент имеет в активе несколько миллионов просчитанных комбинаций. Проект был запущен в 2003 г.

Проект занимается поиском гравитационных волн, существование которых еще не доказано, но их наличие теоретически было предсказано Эйнштейном почти сто лет назад.

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

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

Einstein@home запущен в 2005 г. и на текущий момент его вычислительная мощность составляет приблизительно 0.5 petaFLOPS.

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

Проект запущен в 2005 г. и по состоянию на октябрь 2011 г. его вычислительная мощность составляла приблизительно 60 teraFLOPS (0.06 petaFLOPS)

Возможно, самый популярный проект распределенных вычислений. По вычислительной мощности уже сопоставим со всеми проектами, входящими в состав BOINC. Занимается практически тем же, что и Rosetta@home, т.е. изучением свойств белка, и с момента запуска благодаря ему были опубликованы более ста научных работ.

Большой мощности проект смог достичь как за счет раннего старта (2000 год), так и за счет выпуска очень производительного клиента для PlayStation 3 (2007 год), а также оптимизации расчетов под многоядерные процессоры и видеокарты, выполняющие вычисления, как правило, в несколько раз эффективнее самых современных CPU.

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

Несмотря на тринадцатилетний стаж, проект до сих пор не получил ни одного результата, сравнимого по скандальности с сигналом «Wow!» , зарегистрированном в 1975 г. Тем не менее, на небе было найдено несколько точек — кандидатов на более тщательное сканирование, в связи с повышенной интенсивностью сигналов на фоне обычного шума. Вычислительная мощность проекта составляет приблизительно 0.5 petaFLOPS.

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

Основная задача клиента, работающего на ПК, — индексирование страниц. В отличие от других типов распределенных вычислений, у Majestic-12 очень скромные требования к вычислительной мощности компьютера, но он очень интенсивно потребляет трафик.

По состоянию на октябрь 2009 Majestic-12 проиндексировал один триллион страниц. Google достиг той же цифры ненамного раньше — в июле 2008 года.

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

На текущий момент таблицы RainbowCrack уже занимают сотни гигабайт и позволяют за несколько минут найти любой пароль длиной до семи символов (состоящий из букв, цифр и других символов), зашифрованный с помощью нескольких разных алгоритмов (LanMan, MD5, SHA1, и др.).

Проект создания искусственного интеллекта, способного воспринимать и обрабатывать информацию в языковой форме.

Проект все еще находится в стадии разработки и предназначен для поиска экзопланет, в том числе земного типа.

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

Рендеринг 3D-анимации — весьма ресурсоемкая задача, поэтому и для нее нашлось место в распределенных вычислениях. Пока Burp находится в стадии Beta, а это значит, что сцены, загруженные для просчета, не обязательно будут выданы кому-то как задания, или могут быть выданы с задержкой, однако после полноценного запуска гарантируется рендеринг всех поступающих проектов.

Проект воссоздания трехмерной модели нашей Галактики, позволяющий узнать историю формирования Млечного Пути.

Помимо этого, просчитываются процессы столкновения и слияния Галактик.

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

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

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

Проект по расчету магнитных конфигураций цилиндрических нано-элементов . Интересен тем, что это единственный проект столь высокого уровня, запущенный в Украине (разработан и поддерживается сотрудником Донецкого физико-технического института).

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

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

Давайте задумаемся, чем занят наш компьютер, когда мы его используем? Сердцем компьютера является центральный процессор . Именно он производит все математические и логические операции.
Ведь каждая компьютерная игра, каждый фильм - это все последовательности операций сдвигов, сложений и переносов отдельных битов (это самый маленький кусочек информации в компьютере). Чем больше операций в секунду может производить процессор - тем он быстрее. Практически все компьютерные игры используют ресурсы процессора на 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. – Режим доступа: .]

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

Тремя основными вариантами архитектуры взаимодействия клиентских и серверной частей являются: CORBA, EJB и Microsoft COM. Они будут рассмотрены далее в этом разделе.

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

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

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

Искусственная нейронная сеть (ANN – artificial neural network) – это математическая или вычислительная модель, основанная на нейронной структуре мозга. Компьютеры выполняют такие виды деятельности, как расчеты с большими числами, хранение объемных документов, выполняют сложные математические функции, но они не могут распознавать образы или учиться на собственном опыте, как может это делать мозг. ANN состоит из множества модулей, симулирующих нейроны , каждый из которых обладает небольшим объемом памяти. Эти модули обрабатывают данные, которые вводятся через их многочисленные соединения. Используя правила обучения, такие системы способны учиться на примерах и могут обобщать.

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

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

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

Мозг использует кластеры нейронов, осуществляющих обработку информации интерактивными и динамическими способами. Нейроны не имеют биологических ограничений по взаимосвязям между собой, поэтому нейрон может иметь тысячи соединений. Кроме того, нейроны в мозге работают в трехмерном мире, в то время как электронные блоки в ANN имеют физические ограничения на возможное количество соединений и, поэтому, они работают в двумерном мире.

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

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

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

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

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

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

Традиционные компьютерные системы видят мир черно-белым и работают в мире точных значений. Нечеткая логика позволяет компьютеру включить неточность в язык программирования, что открывает совершенно новый мир для вычислений и решения сложных вопросов. Исследователи нейронных сетей пытаются больше узнать о работе мозга, и о природе его возможностей, чтобы усовершенствовать ANN, позволяя им решать все более сложные задачи, по сравнению с традиционными вычислительными средствами.