Какое-либо программирование опыта для BOINC?

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

  1. Как это работает? Вы компилируете код, отправляете его где-нибудь, и клиенты загружают его, и Вы получаете запросы workunit и результаты?
  2. Какие языки это поддерживает? как это имеет дело со временем выполнения (я предполагаю, что Вы будете в состоянии предоставить полному, автономному блоку весь необходимый материал),
  3. Как люди знают, что Ваш проект существует, и подпишитесь для участия?
  4. Какие услуги это предоставляет для создания моей жизни легче? Существует ли предварительно сделанная библиотека для общих задач?

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

12
задан Stefano Borini 11 December 2009 в 14:26
поделиться

2 ответа

Я был администратором проекта BOINC (ныне несуществующего), я немного участвовал в разработке BOINC (и во многих флеймовых войнах с разработчиками!), есть по крайней мере одна реализованная мной функция, которая сейчас находится на сервере, и я взломал один или два проекта BOINC, которые не понимают важности "поддержания программного обеспечения в актуальном состоянии". Сейчас я работаю с тремя другими людьми над форком клиента BOINC. Этого достаточно? :)

Если вы не ищете кого-нибудь нанять (подсказка!), вам следует задавать конкретные вопросы на SO по реальным проблемам, с которыми вы сталкиваетесь при установке сервера BOINC или разработке приложения, вместо "кто-нибудь знает что-нибудь по этой теме?"

По заданным вами вопросам:

Как это работает? Вы компилируете код, размещаете его где-нибудь, клиенты скачивают его, а вы получаете запросы и результаты?

Вы должны установить свой собственный сервер с LAMP и BOINC. (Обратите внимание, что SETI@Home использовал Solaris вместо Linux; и я уверен, что вы можете использовать веб-серверы не на Apache, если сами напишете конфигурацию).

Вы создаете приложение, использующее BOINC API (или модифицируете существующее вычислительное приложение для его использования), устанавливаете его на сервер, создаете "рабочие блоки" и получаете клиентов для подключения к вашему проекту. Клиенты загружают работу, обрабатывают ее и отправляют обратно. (Это немного упрощенно...)

Попав на сервер, выполненное задание проходит через "валидатор" (который вы пишете сами или используете один из образцов), проверяющий правильность вычислений, и "ассимилятор" (который пишете вы), который делает что-то полезное с результатом; например, разбирает выходной файл и помещает данные в реляционную базу данных, или отправляет вам по электронной почте сообщение о том, что вы нашли ответ на вопрос "Жизнь, Вселенная и все остальное". Или упаковать результаты нескольких рабочих блоков и отправить их обратно "ученому".

Какие языки он поддерживает? Как он работает с временем исполнения (я полагаю, вы сможете предоставить полный, независимый пакет со всем необходимым)

В основном он поддерживает C++. API совместим с C, и есть производственные проекты, использующие его с Fortran (climateprediction.net - это ~миллион строк Fortran).

Я также написал обертку для Python. Приложение на Python внутри не имеет большого доступа к API, но это легко добавить. Я просто раскрыл тот минимум, который мне нужен. Но это, вероятно, плохая идея. Если вам нужен BOINC, то это потому, что вам нужно много процессорного времени. И в этом случае вы бы не стали использовать медленный интерпретируемый язык.

Как люди узнают о существовании вашего проекта

В целом, так же, как они узнают о существовании вашего блога: это ваша проблема маркетинга/SEO ;)

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

  • Есть BOINCaholics, которые будут привязываться к любому проекту, который появляется вокруг, и активно искать их. И рассказывают о них своим друзьям и товарищам по команде. Разместите свой проект в Интернете, включите форумы, сделайте так, чтобы на него ссылался хотя бы один сайт, чтобы он появился в Google, и я гарантирую, что в течение нескольких дней на форуме появится тема с 'ATA' в теме (Alpha Testers Anonymous). Я даже могу назвать вам имена пользователей, которые там будут, если хотите. Они настолько предсказуемы. (Если честно, вы можете найти там и меня :D)
  • Есть много сайтов статистики, которые собирают статистику кредитов пользователей из нескольких проектов и агрегируют ее. Присутствие вашего проекта на одном из таких сайтов - важный способ для людей увидеть его. Но просто экспортировать статистику - еще не значит попасть туда; вы должны показать администраторам сайтов статистики, что ваш проект делает что-то полезное (по их мнению) и что ему можно доверять.
  • Если вы поддерживаете хорошее общение с пользователями, хорошую стабильность приложений и т.д., вы получите больше пользователей из уст в уста и, что, возможно, более важно, вы заставите существующих пользователей остаться и/или предоставить вам большую долю процессорного времени. Осторожно, "у вас есть только одна возможность произвести первое впечатление". Не рекламируйте свой проект широко при первом запуске, позвольте сарафанному радио позаботиться о нем вначале, пока он не станет достаточно стабильным.

Конечно, совершенно очевидно, что доля населения планеты, владеющего компьютерами, которые являются BOINCaholics, незначительна. А менее 10% вообще используют BOINC. Если вы хотите нацелиться на широкие слои населения: вернитесь к обычному маркетингу веб-сайтов, и я не смогу вам в этом помочь. Обратите внимание, что в этом случае вам также придется объяснить им, как работает BOINC и как его установить!

и отказаться от участия?

Они прикрепляют проект из своего клиента BOINC (или сначала скачивают его, если они новички в BOINC). Они могут создать учетную запись непосредственно из графического интерфейса BOINC.

Пожалуйста, даже не думайте о попытке разработать свой собственный проект BOINC, пока вы сами не используете BOINC как пользователь в течение некоторого времени. Это все равно, что сделать веб-сайт без опыта использования веб-браузера ("Я думаю, что это работает, но как мне посмотреть на это сейчас?"). Скачайте клиент, найти классный проект, подключить его и посмотреть, как он работает.

Однажды я пытался помочь кому-то создать проект, а потом обнаружил, что у него нет опыта работы ни с LAMP, ни с BOINC со стороны пользователя. Это был болезненный опыт.

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

Я не могу подробно рассказать об этом; вам нужно уточнить, что будет делать ваш проект, откуда берется "работа", какую обработку нужно сделать на стороне сервера, какой язык/runtime/библиотеку использует ваше приложение на стороне клиента и т.д. и тогда я смогу сказать вам, есть ли у BOINC что-то, что может помочь вам с этим.

... и я думаю, что на сегодня достаточно (3:15 утра!).

22
ответ дан 2 December 2019 в 05:54
поделиться

Вы пробовали прочитать обзор разработки программного обеспечения BOINC ? Выглядит довольно полно, но я сам не использовал BOINC.

3
ответ дан 2 December 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: