ПредишенСледващото

Това съдържание е част от поредицата: Cloud Computing

Останете на линия за предстоящите статии в тази серия.

1. Въведение

API взаимодействие

BOINC платформа за разработчиците предоставят документирани API интерфейс за работа с приложения и уеб-сайтове. Възможностите, които дават тези интерфейси включват:

  • местно и дистанционно управление на графичния интерфейс на клиентската програма BOINC;
  • предоставяне на информация за натрупаните кредити (за целия проект, за един и същи потребител, екип или страната);
  • сметка управление на множество проекти чрез една уеб-базиран интерфейс;
  • обобщени статистически данни по кредитите за домакините, екипи и потребителите, които участват в няколко проекта;
  • механизми за местни програми за редактиране на конфигурацията BOINC клиент.

2. Най-простият пример на приложение в разпределена

Първият пример, че ние смятаме да се намерят сред източниците Boinc в проби / example_app директория. Този пример е най-простият еднонишкови приложение BOINC. Програмата изпълнява проста операция (например, с), което може да се извърши или успешно или неуспешно. Един пример може да се използва като основа за свои собствени приложения - трябва само да се замени с изпълнението на патентовани алгоритми тази част, която се отнася до изчислението.

Сорс кодът за примера е разделена на заглавния файл, два файла с кода и Makefile за изграждане на проекта (не вярвайте на файловете, съдържащи наставка «Мак»):

След това, ние погледнем по-отблизо в източник на пример програмата. Но по-добре да имаме пред очите ми оригиналния източник файл - фрагменти и без значение за целите на изследването BOINC кодови блокове, ние ще пропусне или да се разглеждат в различен ред. частите, които са свързани с процесите на взаимодействие в рамките на един и същи компютър, както и всички изходни графика ще бъдат пропуснати, наред с други неща. И няма никакви други функции, свързани с BOINC. Раздел 2.3 е таблица API BOINC функции, използвани в програмата. Тази таблица може да бъде достъпен, тъй като те се появяват в изходния код на съответните функции (в текста те са в курсив).

2.1 проба програма главни

Програми на езици, различни от C / C ++

Има повече или по-малко прост начини за използване на други езици за програмиране, в допълнение към основната заявка за BOINC-C и C ++. Разработчиците описват "трикове" за следните езици:

Основният код заявление се съдържа в uc2.cpp файл, програмата се превежда за въвеждане на текст файл в главни букви. За да демонстрира възможностите на BOINC, разработчиците са внедрили обработката програма на следните параметри на командния ред:

  • run_slow. приложение "заспива" за 1 секунда след всяка обработена символ;
  • cpu_time Н. програма след обработка допълнително използва N секунди от времето на процесора;
  • early_exit. принудени прекратяване програма след лечение на 30 символа;
  • early_crash. Програма, се срива след лечение с 30 знака;
  • early_sleep. програма "отива да спи" след лечение с 30 знака.

Разбира се, изходният код започва с свързващи заглавията:

След това свържете различните платформи заглавни файлове, съдържащи функционални дефиниции API BOINC.

Всички тези заглавни файлове (с изключение на стандартната C ++) в директория BOINC код са в поддиректории Пб и API. Там можете да намерите разнообразие от определения (и внедряване) на други функции API BOINC.

Програмата работи с три файлове: входен файл с изходен код, изходен файл, към който ще се запише резултата, както и помощен файл за изчисляване на кредити. Техните имена (логично) са определени в изходния код:

Сега е ред на основните функции на програмата.

Като предварителна стъпка е необходимо да се инициализира подсистема BOINC. В този случай, един-единствен резба инициализиране на програмата:

Важна особеност на развитието при приложенията за платформата BOINC - е да се работи с файлове. Както споменах по-рано (вж. 2 статия "Архитектура на вътрешното НРС»), BOINC приложения работят с логически имената на файловете и логично име за превръщане във физическата използвате специални функции на. Освен това, в изходния код на нашия пример само демонстрира как се работи с файлове.

За да прочетете входния файл е отворен. boinc_resolve_filename функция се използва за определяне на физическото пътя към файла, определен от логично име INPUT_FILENAME на:

След това се отваря файла за четене, намиращ се на изясняването на ранното физическо път:

Същият алгоритъм се използва за отваряне на контакта и помощни файлове, обаче, логиката на програмата изисква някои допълнителни стъпки.

Необходимо е да се извлече полза от помощен файл се определя от «доброволец изчисления» самата същност. Програма (BOINC клиент) може да бъде завършена до края на задачата за изчисление. Въпреки това, би било неразумно в този случай, за да започне работа отново (особено, ако искате няколко часа непрекъснато компютри за завършване). помощен файл се използва за възстановяване на текущото състояние:

Четем от помощен файл брой вече обработени символи:

Липсва в входния файл, всички герои са обработени:

"Отрежете" на изходния файл на броя на обработените символи (по друг начин, в случай на аварийно спиране - например, когато захранването е изключено или "замразяване" на операционната система - в изходния файл може да бъде дори по-Скритите обработват символ, което ще доведе до неправилни резултати!):

За да работите с изходния файл, разработчиците чувстваме по-добре да се използва MFILE клас (който е собственик на променливата си) - това е определено в ИЪ / mfile.h файл.

И накрая, когато е готово цялата подготвителна работа, време е основната линия на програмата:

(. Вижте по-горе) Ако някой от параметрите е посочен от командния ред, програмата ще променят поведението си:

Запазване на сегашното състояние се извършва чрез периодични API функция повикване BOINC boinc_time_to_checkpoint (). Тази функция, позовавайки се на потребителски настройки на клиента BOINC, определя дали е време да се определи междинни резултати от работа (ако е в нашата програма, наречена do_checkpoint функция).

do_checkpoint записи функция в спомагателен файл брой на обработените символи.

Клиентът е информиран за изпълнението на природозащитния статус на (междинни резултати), използвайки boinc_checkpoint_completed () функция разговор:

Сега доклади за напредъка на заданието - преведената на клиента стойността ще се показва като процент от работата.

Според настройките (вж. Преди, когато е писано за опциите на командния ред), отделите малко машина на времето "за нищо". Имайте предвид, че в този случай ние не забравяйте да се актуализира информацията относно процента на работата!

функция do_a_giga_flop изпълнява един трилион операции с плаваща запетая (Gflop).

Насочване 100%

заявление излиза BOINC

В края на себе си работа BOINC клиент ще се свърже със сървъра ще му даде резултатите и да поиска нова работа.

2.2 BOINC програма Структура

Сега обратно към стандартната структура на приложения. Първата функция API BOINC, които могат да бъдат причинени в програмата - тя boinc_init () инициализиране функция. Съответно, прилагането трябва да бъде завършена boinc_finish (функция). В този процес, е необходимо да се актуализира информацията за степента на задача (функция boinc_fraction_done ()) и се съхранява междинните резултати от изчисленията (boinc_time_to_checkpoint сухожилие () и boinc_checkpoint_completed ()).

При разработването на програмата за платформата BOINC, вие също трябва да са наясно с особеностите на работа с файлове и точността на резултатите от намаляване на междинните изчисления.

2.3 Функции API BOINC

Този раздел предоставя списък на API BOINC функции, срещани в програмата за проба.

Таблица 1. Списък на функциите използва API BOINC

вътр boinc_finish (инт статус)

Функцията трябва да бъде извикана в края на програмата. Различна от нула статус е грешка.

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

В тази статия, ние погледна един прост пример за приложение в разпределена за изпълнение въз основа на платформа BOINC. Пример снабден с изходния код на проекта BOINC и показва основната архитектура и функции. Този проект може да се използва като основа за създаването на разпределени приложения, алгоритмично прости, но се нуждае от повече изчислителни ресурси.

Както можете да видите, няма нищо по-трудно в създаването на приложения, които могат да използват разпределена структура на калкулатори. През по-голямата част от работата предполага BOINC платформа: от страната на сървъра разпределя задачите между клиентите, както и на клиента се изпълнява задачата да извърши и докладва на сървъра (и между другото също така показва на потребителя на напредъка на работата). Въпреки това, до сега наш клиент BOINC изпълнява една единствена задача. Как се прави на голям брой работни места? Следната статия ще ви обясни как да се автоматизира процеса на генериране на работните поръчки за приложението.

Изтегляне ресурси

Свързани теми

Свързани статии

Подкрепете проекта - споделете линка, благодаря!