代码之家  ›  专栏  ›  技术社区  ›  Stefano Borini

有为BOINC编程的经验吗?

  •  11
  • Stefano Borini  · 技术社区  · 16 年前

    我的一个小项目吸引了博伊恩。我听说过Boinc,但对它的工作原理了解不多,主要是因为我现在正专注于其他优先事项。我想知道的是,你们中是否有人试图为BOINC编程,并在分布式计算机网络上运行一个程序。我尤其对以下问题感兴趣:

    1. 它是如何工作的?您是否编译了代码,将其发布到某个地方,客户下载了代码,并收到了WorkUnit请求和结果?
    2. 它支持哪些语言?它如何处理运行时(我想您将能够提供一个完整的、独立的包,其中包含所有必需的东西)
    3. 人们如何知道你的项目存在并选择参与?
    4. 它提供哪些服务使我的生活更轻松?是否有一个为常见任务准备的库?

    我更喜欢真实的生活体验。维基百科是一个很好的信息来源,但我更喜欢实际的用例。

    3 回复  |  直到 10 年前
        1
  •  23
  •   Nicolás    16 年前

    我管理过一个boinc项目(现在已经不存在了),我参与了boinc的开发(以及与开发人员的许多火焰大战!),至少有一个我实现的特性现在在服务器中,我已经黑客了一两个BOINC项目,它们不理解“保持软件最新”的重要性。我现在正和另外三个人一起工作,在Boinc客户的一个分支上。够了吗?:)

    除非你在找人雇(提示!),您应该在设置BOINC服务器或开发应用程序时,就实际存在的问题提出具体的问题,而不是“有人知道这个主题吗?”

    关于你提出的问题:

    它是如何工作的?您是否编译了代码,将其发布到某个地方,客户下载了代码,并收到了WorkUnit请求和结果?

    您必须用LAMP和BOINC安装自己的服务器。(请注意,seti@home以前使用的是Solaris而不是Linux;如果您自己编写配置,我很肯定您可以使用非ApacheWebServer)。

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

    在服务器上,完成的任务将通过一个检查计算是否有效的“验证器”(您编写或使用其中一个示例)和一个对结果有用的“同化器”(您编写);例如,分析输出文件并将数据放入关系数据库,或者通过电子邮件向您发送发现对生命、宇宙和一切的力量。或者将多个工作单元的结果打包,然后发送给“科学家”。

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

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

    我还写了一篇 wrapper for Python . 里面的python应用程序对api没有太多的访问权限,但是很容易添加。我只暴露了我所需要的最低限度。但这可能是个坏主意。如果你需要boinc,那是因为你需要大量的CPU时间。在这种情况下,你将不会使用一个缓慢的解释语言开始。

    人们如何知道你的项目存在

    大体上,他们知道你的博客存在的方式是一样的:那是 你的 市场营销/搜索引擎优化问题;)

    但是,你会发现一些与社区相关的独特之处:

    • 有一些Boincaholics会附加到任何项目中,并积极地搜索它们。告诉他们的朋友和队友。把你的项目放到网上,启用论坛,从至少一个网站链接,这样它就会出现在谷歌,我 保证 几天之内,一个论坛线程将出现在主题“ata”中(alpha测试人员匿名)。如果你愿意的话,我甚至可以告诉你那些会在那里的人的用户名。他们是 那个 可预测。(公平地说,你可能会发现 也有:D)
    • 有许多统计网站从多个项目收集用户的信用统计数据并汇总它们。您的项目在其中一个站点上的存在是人们看到它的一个重要方式。但是仅仅导出统计数据并不意味着你就可以到达那里;你必须向统计站点的管理员展示你的项目正在做一些有用的事情(为了 他们的 意见),并且可以信任。
    • 如果你和你的用户保持良好的沟通,应用程序的稳定性等,你会通过口碑获得更多的用户,也许更重要的是,你会让你现有的用户留下来和/或给你更多的CPU时间。小心“你只有一次机会给人留下第一印象”。不要在第一次发布时就大张旗鼓地宣传你的项目,在项目稳定之前,首先让口头上的话来处理它。

    当然,很明显,拥有电脑的世界人口中,谁是巫师的比例是微不足道的。使用BOINC的比例不到10%。如果你想瞄准广大人群:回到通常的网站营销,我不能在这方面帮助你。请注意,在这种情况下,您还必须向他们解释BOINC是如何工作的以及如何安装它!

    选择参加?

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

    请不要甚至 认为 尝试开发自己的BOINC项目,直到自己使用了BOINC。 作为用户 有一段时间。这就像是在没有经验的情况下使用网络浏览器创建一个网站(我认为它是有效的,但是我现在该如何看待它呢?艾尔)去下载客户端,找到一个很酷的项目,附加,并观察它的工作。

    我曾经试图帮助别人建立一个项目,然后发现他没有经验,无论是灯或博伊恩从用户方面。它是一个 痛苦 经验。

    它提供哪些服务使我的生活更轻松?是否有一个为常见任务准备的库?

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

    …我想这已经足够了(哇,凌晨3:15!).

        2
  •  3
  •   lothar    16 年前

    你有没有试着读 BOINC software development overview ?它看起来很全面,但我自己没有使用boinc。

        3
  •  1
  •   Vinayak M Andreas Hornig    10 年前

    我有一个“我自己的小项目”,所以也许我也能帮上忙。

    1. 您可以在Science应用程序和服务器/客户端之间进行分离。确保您的科学应用程序在所需的操作系统上工作稳定,其余的是BOINC的客户机/服务器的职责。它会发送你的应用程序和做后勤工作。你应该知道一些与华盛顿特区有关的问题,但在我看来,这不是起点。

    2. 它直接支持C++,但是只要它能“从USB笔驱动器运行”就可以了。有一个BONC包装器,可以处理非C++程序。我们使用Java作为一个应用程序。我们只需要发送Java运行时环境,而不仅仅是JAR,但它运行良好。我们目前正在测试Scilab的应用程序:)。

    3. 宣传:博伊恩社区非常密集和快速。只要开始你的项目,他们就会找到你;)。

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

    http://aerospaceresearch.net/constellation/

    安德烈亚斯

    推荐文章