Любое программирование опыта для BOINC?

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

  • Как это работает? вы компилируете код, размещаете его где-нибудь, а клиенты загружают его, и вы получаете запросы и результаты рабочего процесса?
  • Какие языки он поддерживает? как это касается времени выполнения (я думаю, вы сможете предоставить полный, независимый пакет со всеми необходимыми материалами).
  • Как люди знают, что ваш проект существует, и принять участие в нем?
  • Какие услуги он предоставляет, чтобы облегчить мою жизнь? Есть ли готовая библиотека для общих задач?

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

Ответ 1

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

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

По вопросам, которые вы задали:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

... и я догадываюсь, что этого достаточно (вот, 3:15 утра!).

Ответ 3

У меня есть "мой маленький собственный" проект, поэтому, возможно, я также могу помочь.

  • Вы можете обойтись между научным приложением и сервером/клиентом. Удостоверьтесь, что ваше приложение для науки работает стабильно на желаемом os, остальное - долг клиента/сервера. он отправит ваше приложение и выполнит логистику. вы должны знать о некоторых проблемах, связанных с постоянным током, но это не отправная точка, на мой взгляд.

  • Он поддерживает С++ напрямую, но до тех пор, пока он может "работать с USB-накопителем USB", все в порядке. Существует оболочка boinc, которая может обрабатывать не С++-программы. Мы используем java для одного приложения. Нам просто нужно отправить среду выполнения Java, а не только банку, но она работает нормально. В настоящее время мы тестируем Scilab для приложения:).

  • Пропаганда:). Сообщество boinc очень плотное и быстрое. просто запустите свой проект, ОНИ найдет вас;).

  • Какая общая задача для вас?

http://aerospaceresearch.net/constellation/

Андреас