Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовик.docx
Скачиваний:
12
Добавлен:
29.08.2019
Размер:
321.33 Кб
Скачать

2.10. Приложения boinc

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

Для того чтобы какая-то программа была приложением BOINC, она должна вызывать специальные функции BOINC API, которые реализованы на языке C. В частности, каждое приложение BOINC должно вызывать специальные функции в начале и конце программы: функцию инициализации и функцию завершения. Между этими двумя функциями приложение BOINC должно также вызывать функции, говорящие клиенту о стадии выполнения подзадания (в процентах), чтобы пользователь мог видеть прогресс вычислений. Некоторые пользователи также ожидают, что приложение BOINC будет демонстрировать какие-то картинки, поэтому необходимо вызывать функции рисования, если клиентское приложение запрашивает отображение графики.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]