Я притягиваюсь BOINC для небольшого моего проекта. Я слышал о BOINC, но не читают очень о том, как он работает, главным образом потому что я фокусируюсь на других приоритетах прямо сейчас. То, что я хотел бы знать, - то, если какой-либо из Вас на самом деле пытался программировать для BOINC и иметь прогон программы в распределенной компьютерной сети. В особенности я интересуюсь следующими вопросами:
Я предпочитаю реальный опыт. Википедия может быть большим источником информации, но я предпочитаю фактические варианты использования.
Я был администратором проекта 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, незначительна. А менее 10% вообще используют BOINC. Если вы хотите нацелиться на широкие слои населения: вернитесь к обычному маркетингу веб-сайтов, и я не смогу вам в этом помочь. Обратите внимание, что в этом случае вам также придется объяснить им, как работает BOINC и как его установить!
и отказаться от участия?
Они прикрепляют проект из своего клиента BOINC (или сначала скачивают его, если они новички в BOINC). Они могут создать учетную запись непосредственно из графического интерфейса BOINC.
Пожалуйста, даже не думайте о попытке разработать свой собственный проект BOINC, пока вы сами не используете BOINC как пользователь в течение некоторого времени. Это все равно, что сделать веб-сайт без опыта использования веб-браузера ("Я думаю, что это работает, но как мне посмотреть на это сейчас?"). Скачайте клиент, найти классный проект, подключить его и посмотреть, как он работает.
Однажды я пытался помочь кому-то создать проект, а потом обнаружил, что у него нет опыта работы ни с LAMP, ни с BOINC со стороны пользователя. Это был болезненный опыт.
Какие услуги он предоставляет, чтобы облегчить мне жизнь? Есть ли готовые библиотеки для общих задач?
Я не могу подробно рассказать об этом; вам нужно уточнить, что будет делать ваш проект, откуда берется "работа", какую обработку нужно сделать на стороне сервера, какой язык/runtime/библиотеку использует ваше приложение на стороне клиента и т.д. и тогда я смогу сказать вам, есть ли у BOINC что-то, что может помочь вам с этим.
... и я думаю, что на сегодня достаточно (3:15 утра!).
Вы пробовали прочитать обзор разработки программного обеспечения BOINC ? Выглядит довольно полно, но я сам не использовал BOINC.