有 BOINC 编程经验吗?

发布于 2024-08-14 14:42:55 字数 371 浏览 1 评论 0原文

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

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

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

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

来日方长 2024-08-21 14:42:55

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

除非你正在找人雇用(提示!),否则你应该就你在设置 BOINC 服务器或开发应用程序或其他什么时遇到的实际问题提出具体问题,而不是“有人知道吗?”有什么关于这个话题的事吗?”

关于您提出的问题:

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

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

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

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

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

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

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

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

大致上,就像他们知道您的博客存在一样:这是您的营销/SEO 问题;)

但是您会得到一些与社区相关的独特信息:

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

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

并选择参与?

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

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

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

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

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

...我想现在就足够了(哇,凌晨 3:15!)。

I have admin'd a BOINC project (now defunct), I have been a bit involved in development of BOINC (and in many flamewars with the developers!), there is at least one feature I implemented that is now in the server, and I have hacked one or two BOINC projects that don't understand the importance of "keeping software up to date". I'm now working with three other people on a fork of the BOINC client. Is that enough? :)

Unless you're looking for somebody to hire (hint!), you should just ask specific questions on SO on actual problems you're having while setting up a BOINC server or developing an app or whatever, instead of "does anyone know anything about the topic?"

On the questions you asked:

How does it work? do you compile the code, post it somewhere and the clients download it and you receive workunit requests and results ?

You have to install your own server with LAMP and BOINC. (Note that SETI@Home used to use Solaris instead of Linux; and I'm pretty sure you can use non-Apache webservers if you write the config yourself).

You create an app that uses the BOINC API (or modify an existing computation app to use it), install it on the server, create "workunits", and get clients to attach to your project. Clients download the work, process it, and upload it back. (That's a bit oversimplified...)

Once on the server, the completed task goes through a "validator" (which you write or use one of the sample ones) that checks the computation is valid, and an "assimilator" (which you write) that does something useful with the result; such as parsing the output file and putting the data into a relational database, or email you that you found The Answer To Life, The Universe, And Everything. Or package up the results of several workunits, and send them back to the "scientist".

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)

It mainly supports C++. The API is compatible with C, and there are production projects using it from Fortran (climateprediction.net is a ~million lines of Fortran).

I also wrote a wrapper for Python. The Python app inside doesn't get much access to the API, but that's easy to add. I just exposed the minimal I needed. But it's probably a bad idea. If you need BOINC, it's because you need lots of CPU time. And in that case you wouldn't be using a slow interpreted language to begin with.

How do people know that your project exists

Broadly, the same way they would know your blog exists: that's your marketing/SEO problem ;)

However you get a few unique things related to the community:

  • There are BOINCaholics who will attach to any project that comes around, and actively search for them. And tell their friends and team-mates. Put your project online, enable forums, get it linked from at least one website so it appears in Google, and I guarantee that within a few days a forum thread will appear with 'ATA' in the subject (Alpha Testers Anonymous). I could even tell you the usernames of people who will be there, if you want. They are that predictable. (To be fair, you might find me there too :D)
  • There are many stats sites that collect users' credit statistics from multiple projects and aggregate them. Your project's presence on one of those sites is an important way for people to see it. But just exporting stats doesn't mean you'll get there; you have to show the stats sites' admins your project is doing something useful (to their opinion) and that it can be trusted.
  • If you keep good communication with your users, good stability in the apps, etc. you'll get more users through word-of-mouth and, maybe more importantly, you will get your existing users to stay and/or give you a bigger share of CPU time. Careful about "you only have one opportunity to make a first impression". Don't advertise your project big at first launch, let word of mouth take care of it at first, until it gets stable enough.

Of course, it's pretty obvious that the proportion of the computer-owning world population who are BOINCaholics is insignificant. And less than 10% use BOINC at all. If you want to target the broad population: back to usual website marketing, and I can't assist you on that. Note that in that case you will also have to explain them how BOINC works and how to install it!

and opt-in to participate?

They attach the project from their BOINC client (or download it first if they're new to BOINC). They can create an account from the BOINC GUI directly.

Please don't even think of trying to develop your own BOINC project until you have used BOINC yourself as a user for a while. That's like making a website without experience using a web browser (“I think it's working but how do I look at it now?”). Go download the client, find a cool project, attach, and watch it work.

I once tried to help someone set up a project, then found he had no experience with either LAMP nor with BOINC from the user side. It was a painful experience.

What services does it provide to make my life easier ? Is there a pre-made library for common tasks ?

I can't elaborate on this; you'll have to be more specific on what your project will do, where the "work" comes from, what processing needs to be done server-side, what language/runtime/library your client-side app uses, etc. and then I could tell you if BOINC has something that can help you with that.

...and I guess that's enough for now (whew, 3:15 am!).

梓梦 2024-08-21 14:42:55

您是否尝试阅读BOINC 软件开发概述?看上去挺全面的,不过我自己没用过BOINC。

Did you try reading the BOINC software development overview? It looks pretty comprehensive, but I have not used BOINC myself.

〆一缕阳光ご 2024-08-21 14:42:55

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

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

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

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

  4. 您的常见任务是什么?

http://aerospaceresearch.net/constellation/

安德烈亚斯

I have "my little own" project, so perhaps I can also help.

  1. You can seperate between the science app and the server/client side. Make sure your science app is working stable on the desired os, the rest is duty of boinc's client/server. it will send your app and do the logistic stuff. you shouldjust be aware of some dc related issues, but that is not the starting point, in my opinion.

  2. It supports c++ directly, but as long as it can "run from a usb pen drive" it's okay. There is a boinc wrapper, that can handle non c++ programmes. We use java for one application. We just have to send java runtime environment as well and not just the jar, but it works fine. We are currently testing Scilab for an app :).

  3. Propaganda :). The boinc community is really dense and fast. just start your project, THEY will find you ;).

  4. What is a common task for you?

http://aerospaceresearch.net/constellation/

Andreas

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文