12

I am attracted by BOINC for a little project of mine. I heard of BOINC but not read much about how it works, mostly because I am focusing on other priorities right now. What I would like to know is if any of you actually tried to program for BOINC and have a program run on the distributed computer network. In particular I am interested in the following questions:

  1. How does it work? do you compile the code, post it somewhere and the clients download it and you receive workunit requests and results ?
  2. What languages does it support? how does it deal with runtimes (I guess you will be able to provide a full, independent package with all the required stuff)
  3. How do people know that your project exists, and opt-in to participate?
  4. What services does it provide to make my life easier ? Is there a pre-made library for common tasks ?

I prefer real life experience. Wikipedia can be a great source of info but I prefer actual use cases.

4

3 回答 3

23

我管理了一个 BOINC 项目(现在已经不复存在),我参与了 BOINC 的开发(并与开发人员发生了许多激烈的争吵!),我实现了至少一个现在在服务器中的功能,并且我已经破解了一两个不了解“保持软件最新”重要性的 BOINC 项目。我现在正在与其他三个人一起开发 BOINC 客户端的一个分支。够了吗?:)

除非您正在寻找可以雇用的人(提示!),否则您应该只针对您在设置 BOINC 服务器或开发应用程序或其他任何东西时遇到的实际问题就 SO 提出具体问题,而不是“有人知道吗?话题?”

关于您提出的问题:

它是如何工作的?您是否编译代码,将其发布到某个地方,然后客户下载它,您会收到工作单元的请求和结果吗?

你必须用 LAMP 和 BOINC 安装你自己的服务器。(请注意,SETI@Home 过去使用 Solaris 而不是 Linux;我很确定如果您自己编写配置,您可以使用非 Apache 网络服务器)。

您创建一个使用 BOINC API 的应用程序(或修改现有的计算应用程序以使用它),将其安装在服务器上,创建“工作单元”,并让客户端附加到您的项目。客户下载工作,处理它,然后上传回来。(这有点过于简单了......)

一旦在服务器上,完成的任务会通过一个“验证器”(您编写或使用其中一个示例)来检查计算是否有效,以及一个“同化器”(您编写的)对结果做一些有用的事情; 例如解析输出文件并将数据放入关系数据库,或者通过电子邮件向您发送您找到了生命、宇宙和一切的答案。或者把几个workunit的结果打包,发回给“科学家”。

它支持哪些语言?它如何处理运行时(我想您将能够提供包含所有必需内容的完整、独立的包)

它主要支持C++。该 API 与 C 兼容,并且有来自 Fortran 的生产项目使用它(climateprediction.net 是大约百万行的 Fortran)。

我还为 Python 编写了一个包装器。内部的 Python 应用程序无法访问 API,但很容易添加。我只是暴露了我需要的最低限度。但这可能是个坏主意。如果你需要 BOINC,那是因为你需要大量的 CPU 时间。在那种情况下,您一开始就不会使用慢速解释语言。

人们怎么知道你的项目存在

从广义上讲,他们知道您的博客存在的方式相同:那是您的营销/搜索引擎优化问题;)

但是,您会得到一些与社区相关的独特事物:

  • 有 BOINCaholics 会加入任何出现的项目,并积极寻找它们。并告诉他们的朋友和队友。将您的项目放到网上,启用论坛,从至少一个网站链接它,以便它出现在 Google 中,我保证在几天之内,论坛主题将出现主题中带有“ATA”的主题(Alpha Testers Anonymous)。如果你愿意,我什至可以告诉你将在那里的人的用户名。他们是可以预见的。(公平地说,你也可以在那里找到:D)
  • 有许多统计网站从多个项目中收集用户的信用统计数据并将其汇总。您的项目出现在其中一个网站上是人们看到它的重要方式。但是仅仅导出统计数据并不意味着你会到达那里。你必须向统计网站的管理员展示你的项目正在做一些有用的事情(在他们看来)并且它可以被信任。
  • 如果您与用户保持良好的沟通,应用程序的良好稳定性等。您将通过口碑获得更多用户,也许更重要的是,您将让现有用户留下和/或给您更大CPU 时间的份额。小心“你只有一次机会给人留下第一印象”。不要在第一次发布时宣传你的项目,首先让口碑来照顾它,直到它变得足够稳定。

当然,很明显,拥有计算机的世界人口中 BOINCaholics 的比例微不足道。不到 10% 的人使用 BOINC。如果您想针对广大人群:回到通常的网站营销,我无法为您提供帮助。请注意,在这种情况下,您还必须向他们解释 BOINC 的工作原理以及如何安装它!

并选择参加?

他们从他们的 BOINC 客户端附加项目(或者如果他们是 BOINC 的新手,请先下载它)。他们可以直接从 BOINC GUI 创建一个帐户。

在您自己作为用户使用 BOINC 一段时间之前,请不要考虑尝试开发自己的 BOINC 项目。这就像在没有使用网络浏览器经验的情况下制作网站(“我认为它可以工作,但我现在如何看待它?”)。去下载客户端,找一个很酷的项目,附上,然后看它工作。

我曾经试图帮助某人建立一个项目,然后发现他在用户方面没有使用 LAMP 和 BOINC 的经验。这是一次痛苦的经历。

它提供哪些服务让我的生活更轻松?是否有用于常见任务的预制库?

我无法详细说明这一点;您必须更具体地说明您的项目将做什么,“工作”来自哪里,需要在服务器端完成哪些处理,您的客户端应用程序使用什么语言/运行时/库等等,然后我可以告诉你 BOINC 是否有可以帮助你的东西。

...我想这已经足够了(哇,凌晨 3 点 15 分!)。

于 2009-12-23T06:15:53.087 回答
3

您是否尝试阅读BOINC 软件开发概述?它看起来很全面,但我自己没有使用过BOINC。

于 2009-12-19T12:19:25.890 回答
1

我有“我自己的小”项目,所以也许我也可以提供帮助。

  1. 您可以在科学应用程序和服务器/客户端之间分开。确保您的科学应用程序在所需的操作系统上稳定运行,剩下的就是 boinc 的客户端/服务器的职责。它将发送您的应用程序并执行后勤工作。你应该知道一些与直流相关的问题,但这不是起点,在我看来。

  2. 它直接支持 c++,但只要它可以“从 USB 笔驱动器运行”就可以了。有一个 boinc 包装器,可以处理非 c++ 程序。我们将 java 用于一个应用程序。我们只需要发送 java 运行时环境,而不仅仅是 jar,但它工作正常。我们目前正在测试 Scilab 的应用程序:)。

  3. 宣传 :)。boinc 社区非常密集和快速。刚开始你的项目,他们会找到你的;)。

  4. 你的共同任务是什么?

http://aerospaceresearch.net/constellation/

安德烈亚斯

于 2011-06-23T21:26:39.990 回答