有 BOINC 编程经验吗?
我被 BOINC 吸引是因为我的一个小项目。我听说过 BOINC,但没有太多了解它的工作原理,主要是因为我现在专注于其他优先事项。我想知道的是,你们中是否有人真正尝试过为 BOINC 编程并让程序在分布式计算机网络上运行。我特别对以下问题感兴趣:
- 它是如何工作的?您是否编译代码,将其发布到某个地方,然后客户端下载它,然后您收到工作单元请求和结果?
- 它支持哪些语言?它如何处理运行时(我想您将能够提供包含所有必需内容的完整、独立的包)
- 人们如何知道您的项目存在并选择参与?
- 它提供哪些服务让我的生活更轻松?是否有用于常见任务的预制库?
我更喜欢真实的生活体验。维基百科可以是一个很好的信息来源,但我更喜欢实际的用例。
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:
- How does it work? do you compile the code, post it somewhere and the clients download it and you receive workunit requests and results ?
- 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)
- How do people know that your project exists, and opt-in to participate?
- 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我管理了一个 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 问题;)
但是您会得到一些与社区相关的独特信息:
当然,很明显,世界上拥有计算机的人口中 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:
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".
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.
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:
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!
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.
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!).
您是否尝试阅读BOINC 软件开发概述?看上去挺全面的,不过我自己没用过BOINC。
Did you try reading the BOINC software development overview? It looks pretty comprehensive, but I have not used BOINC myself.
我有“我自己的小”项目,所以也许我也可以提供帮助。
您可以将科学应用程序与服务器/客户端分开。确保您的科学应用程序在所需的操作系统上稳定运行,剩下的就是 boinc 客户端/服务器的职责。它会发送您的应用程序并完成后勤工作。您应该只知道一些与 DC 相关的问题,但在我看来,这不是起点。
它直接支持c++,但只要它可以“从USB笔驱动器运行”就可以了。有一个 boinc 包装器,可以处理非 C++ 程序。我们将 java 用于一个应用程序。我们只需要发送 java 运行时环境,而不仅仅是 jar,但它工作得很好。我们目前正在测试 Scilab 的应用程序:)。
宣传:)。 boinc 社区非常密集且快速。只要开始你的项目,他们就会找到你;)。
您的常见任务是什么?
http://aerospaceresearch.net/constellation/
安德烈亚斯
I have "my little own" project, so perhaps I can also help.
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.
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 :).
Propaganda :). The boinc community is really dense and fast. just start your project, THEY will find you ;).
What is a common task for you?
http://aerospaceresearch.net/constellation/
Andreas