Я думаю, у многих, читающих этот блог, компьютер включен круглые сутки. Да и по собственному опыту знаю, что на работе у многих компьютеры так же не выключаются, зачем время тратить — электричество ведь ‘халявное’. В лучшем случае во время ‘простоя’ компьютеры занимаются раздачей данных на торрентах, но ведь какие вычислительные мощности простаивают!
Наверное, после таких размышлений и родился проект BOINC. Это программная платформа для распределенных вычислений. Проект разработан в университете Беркли и дает возможность ученым задействовать огромные вычислительные мощности персональных компьютеров со всего мира.
Для решения многих задач в области математики, молекулярной биологии, медицины, астрофизики, климатологии требуются очень большие вычислительные ресурсы, но деньги на суперкомпьютеры есть не у всех, тут то на помощь и приходит Boinc. Во время ‘простоя’ ваш компьютер будет заниматься решением сложных научных задач, учитывая, что в проекте участвует несколько сотен тысяч человек, вычислительная мощность больше чем у дорогостоящих суперкомпьютеров.
Что пишут на C++? Часть 1. Geant4 | SETI@home | BOINC | Mentor Graphics
На самом деле, проектов очень много и каждый найдет себе по душе:)
Изначально я поставил себе эту программу ради красивого скринсейвера))), но потом втянулся:)
Все-равно основной компьютер у меня включен всегда и выступает в роли файл-сервера/торрент-качался, так что мне жалко, что ли если он еще и чуть-чуть науке поможет:) Где-то в глубине души, тот факт, что компьютер не просто так стоит и качает всякую фигню из интернета, но еще и участвует в важной научной программе, производя сложные вычисления, тешит самолюбие:))) Кроме того существует множество рейтингов, и приятно когда российская команда Russia team, в которой я состою, обходит команду Англии:)
Так что пока остается помогать мировому научному сообществу и ждать запуска российских проектов.
Источник: miha-vxc.livejournal.com
LIFEWATCH
Эта лишь предисловие к моей следующей статье «Поможем победить Рак — Help Conquer Cancer«. Здесь я попытаюсь рассказать, что такое распределенные вычисления.
Схема сети распределенных вычислений
Сети распределенных вычислений можно сравнить с супер компьютером по производительности и служат они ровно для тех же целей — обработка трудных задач и больших объемов исходных данных .
Для простоты проведу аналогию: допустим супер компьютер, это большой, хороший экскаватор, который может выкапывать 3 кубометра грунта в минуту; тогда сеть распределенных вычислений — это множество работяг с лопатой…и каждый работяга за минуту может выкопать 0,03 кубометра грунта. А если таких работяг будет десять… сто…тысяча и работать они будут одновременно! Понятно, что уже сотня рабочих сможет обойти по производительности экскаватор.
Приведенная аналогия очень адекватна — она также отражает преимущеста и недостатки распределенных вычислений. Сеть в принципе более надежна, так как выход из строя одного узла почти ни как не повлияет на общую производительность. Но в тоже время выход на длительный срок из строя центрального сервера-«прораба» застопорит всю сеть. Последний момент успешно обходится резервированием серверов и баз данных.
BOINC manager — программа клиент, настройка, и общая информация по использованию.
Самым критичным минусом распределенных сетей является необходимость разбивки большой задачи — на мелке кусочки-задания. Связано это с отсутствием общей памяти для всех участников сети. По этой причине распределенные вычисления наилучшим образом подходят для задач требующих большого объема однообразных вычислений. Например: поиск искусственного сигнала среди регулярно поступающей информации с радиотелескопа.
Как я упомянул выше, у сети распределенных вычислений есть «прораб» — центральный сервер или несколько серверов, которые раздают задания. Задание — это кусочек кода, который требуется обработать по определенному алгоритму.
Главное окно BOINC manager (упрощенный вид)
Что же такое BOINC? Грубо говоря BOINC это просто платформа, на базе которой создаются кружки по интересам — проекты. BOINC = Berkeley Open Infrastructure for Network Computing — одна из самых популярная сетей распределенных вычислений.
Главное окно BOINC manager (расширенный вид)
Зачем нужен BOINC? Видь есть собственные клиенты для многих проектов распределенный вычислений? Вся прелесть BOINC заключается в том, что одновременно вы можете учавствать в нескольких независимых проектах! Во-вторых многие проекты не имеют собственных клиентов и работают только через BOINC.
В зависимости от количества процессоров, установленных в ваш компьютер, проекты могут считаться одновременно или по очереди. Если вы выбрали только один проект, то ваш компьютер будет считать несколько заданий одного проекта. Например, на данный момент мой домашний компьютер одновременно считают три задания World Community Grid (Help Conquer Cancer) — это достигается за счет двухъядерного процессора и использования GPU (процессора видеокарты). Да-да. последние версии могут использовать большинство GPU от nVidia и ATI.
Сам по себе клиент BOINC — это служба (windows) или демон (linux), не имеющий графического интерфейса. Управляется BOINC клиент по средствам RPC (через TCP/IP соединения в т.ч. loopback на локальном компьютере). Имеется множество портов клиентов BOINC под практически все операционные системы (windows, linus, mac os и т.д.). Графический интерфейс для клиента сети BOINC представляет BOINC manager (представлен на скриншотах) идущий в дистрибутиве. Также возможно использование более функциональный сторонних GUI, например, BAM!.
Скринсейвер BOINC (Help Conquer Cancer)
На мой взгляд, у платформы BOINC хорошие перспективы, т.к. проект разработан на основе LGPL лицензии , поэтому любой может ознакомиться с исходными текстами.
В заключение могу сказать, что BOINC — лишь одна из общедоступных платформ сетей распределенных вычислений. На этом рассказ о самой платформе я закончу и расскажу о проекте World Community Grid >>
Поделиться ссылкой:
- Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
- Нажмите здесь, чтобы поделиться контентом на Facebook. (Открывается в новом окне)
- Нажмите, чтобы поделиться в Google+ (Открывается в новом окне)
Источник: lifewatch.ru
Программный комплекс
автоматической установки связи с системой распределенных вычислений
В данной статье представлена разработка программного комплекса для облегчения установки и настройки распределенной платформы Berkeley Open Infrastructure for Network Computing (BOINC) Данный комплекс позволяет значительно сократить время, затрачиваемое сотрудниками на его разборку. Для реализации данной системы был выбран скриптовый язык программирования BASH, эта программа реализована при помощи скриптового консольного приложения, для хранения информации используется база данных MySQL. В исследованиях по математике, физике и в других науках требуется обработка информации или вычисление расчетных операций. С этой целью были созданы системы, способные сократить время обработки в десятки раз. Сделаны разнородные программные «прослойки» между управляющим сервером и вычислительными узлами. Одна из таких «прослоек» – BOINC. В данной статье рассмотрим следующие задачи:
- Как автоматизировать установку системы.
- Как настроить подключение к серверу.
- Как запустить виртуальный BOINC-сервер.
- Как создать проект на сервере.
- Как настроить BOINC-клиент для работы с нашим проектом.
Была поставлена цель создать систему, автоматизирующую процесс установки и настройки приложений клиент-серверного приложения Berkeley Open Infrastructure for Network Computing (BOINC) для разработки проектов системы распределенных вычислений BOINC. Далее нужно запустить BOINC-клиенты на компьютерах для работы над созданным проектом.
Нужно иметь понимание о кластерах. Кластер – это многопроцессорный набор, многоядерный компьютер, на котором выполняются задачи пользователя, связанные высокоскоростной сетью и объединенные специальным программным обеспечением. Для расчетных операций используются кластерные (распределенные) вычисления. Именно открытая программная платформа Berkeley Open Infrastructure for Network Computing организует распределенные вычисления.
Платформа BOINC-клиент-сервер состоит из программы-клиента и составного сервера BOINC, это дает возможность использовать несколько компьютеров в качестве сервера.
На сегодняшний день при установке и настройке платформы необходимо потратить много временных ресурсов. Для того чтобы уменьшить расход времени на данные операции, было принято решение разработать сервис для автоматического установления связи с системами распределенных технологий.
Программный комплекс предоставляет следующий функционал: автоматическую установку и настройку платформы для распределенных вычислений, связь и взаимодействие пользователей с данными платформами, а также обработку и хранение информации в ходе распределенных вычислений.
BOINC-сервер – центральный сервер, к которому делают запросы клиентские машины. Рассмотрим алгоритм автоматической сборки и установки сервера BOINC (см. рис. 1).
Рисунок 1. Алгоритм сборки и установки сервера
Для установки сервера потребуется:
- Определить установленный на компьютере дистрибутив (Ubuntu или Debian).
- В зависимости от установленной операционной системы добавить репозитории, совместимые с нашим дистрибутивом.
Выполняем с правами администратора следующие команды:
- подключаемся и добавляем репозиторий, в котором хранится пакет PHP 5, необходимый для запуска веб-сервера (который входит в состав BOINC):
# sudo add-apt-repository ppa:ondrej/php -y
- обновляем данные репозитория:
# sudo apt-get update
Скачиваем и устанавливаем всех необходимые для сборки BOINC-сервера пакеты и библиотеки:
# sudo apt-get install -y git apache2 python-pip m4 pkg-config autoconf automake perl libtool build-essential libssl-dev mysql-server libmysqlclient-dev libmysqld-dev curl libcurl4-openssl-dev software-properties-common python-software-properties php5.6 php5.6-mysql libapache2-mod-php5.6 php5.6-mbstring php5.6-simplexml
Клонируем репозиторий с исходным кодом BOINC-сервера:
# git clone https://github.com/BOINC/BOINC.git BOINC-server
Переходим в папку со скаченными файлами:
# cd BOINC-server
Конфигурируем и готовимся к сборке сервера:
#./_autosetup 1>../server-autosetup.log 2>../server-autosetup-error.log
#./configure —disable-manager —disable-client 1>../server-config.log 2>../server-config-error.log
- Параметр 1>./*.log – перенаправление стандартного потока в указанный файл.
- Параметр 2>./*.error.log – вывод сообщений об ошибках в указанный файл.
- Скрипт configure – означает, что компиляция будет только серверной части и дополнительных библиотек – если установка идет успешно, об этом скажет последняя строчка, выведенная с помощью скрипта.
- Параметры —disable-manager и —disable-client – указывают конфигуратору, что в процессе сборки нашего проекта не надо собирать manager и client.
— Build Components: ( libraries server) —
Обратите внимание на сообщения, выдаваемые в ходе работы скрипта configure, возможно, будут выведены предупреждения наподобие этого:
checking if CFLAG ‘-include fcgi_stdio.h’ works. no
configure: WARNING: fcgi-stdio.h not found.
Disabling FCGI. Will not build components that require FCGI
Если это не привело к ошибкам скрипта, вам можно либо игнорировать предупреждения, что может привести к возможным проблемам в будущем, либо установить недостающие компоненты и использовать скрипт заново.
# make 1>../server-make.log 2>../server-make-error.log
# ./tools/make_project —db_passwd=’123123′ —db_user=’root’ —delete_prev_inst —drop_db_first —url_base=»http://unixubuntu.my-BOINC-test-project.com» testappw
Параметрами —db_passwd и —db_user мы указываем логин и пароль для доступа к базе данных.
Скрипт выводит сообщения процесса сборки нового проекта. Прежде всего устанавливаются параметры, связанные с доступом к веб-странице проекта (здесь *server –IP*– это имя сервера в сети):
Creating project ‘ my_example_app ‘ (short name ‘ meapp ‘):
PROJECT_ROOT = /home/BOINCadm/projects/ meapp /
URL_BASE = http://*server -IP*/
HTML_USER_URL = http://* server -IP*/ meapp /
HTML_OPS_URL = http://* server -IP*/meapp_ops/
CGI_URL = ://*server -IP*/meapp_cgi/
KEY_DIR = /home/BOINCamd/projects/meapp/keys/
DB_NAME = meapp
Затем создаются необходимые каталоги.
Setting up server: creating directories
Происходит генерация криптографических ключей.
Keys don’t exist in /home/BOINCadm/projects/meapp/keys/; generate them? [Y/n]
Setting up server files: generating keys
Копирование необходимых файлов, создание таблиц базы данных и файлов настроек, установка независимых от приложения служб:
Setting up server files: copying files
Setting up database
Setting up server files: writing config files
Setting up server files: linking cgi programs
update_translations finished
Done installing default daemons
Настройка веб-страницы. Перед настройкой Apache нужно установить правильные права доступа на папку, где содержится сама страница.
# chmod –R 755 html/*
Настройки веб-сервера Apache для нового проекта содержатся в файле testappw.httpd.conf. Откроем файл, в котором мы видим, что данная конфигурация была сгенерирована для Apache 2.2, так как у нас установлена версия Apache 2.4, нам нужно заменить:
Order deny, allow
Deny from all
Require all denied
Order allow, deny
Allow from all
Require all granted
Содержимое файлов настроек подключается либо напрямую, либо через основной файл настроек (все действия необходимо выполнить с правами root):
# cat meapp.httpd.conf >> /etc/apache2/httpd.conf
Необходимо перезапустить сервер Apache:
# /etc/init.d/apache2 restart
Установим пароль для доступа к административной части:
# sudo htpasswd -c html/ops/.htpasswd admin