有BOINC编程经验吗? [英] Any experience programming for BOINC?

查看:101
本文介绍了有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:

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

我更喜欢现实生活中的经历. Wikipedia可能是很好的信息来源,但我更喜欢实际用例.

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

推荐答案

我已经管理了一个BOINC项目(现已终止),我参与了BOINC的开发(以及与开发人员的多次激烈角逐!) ,我现在至少已在服务器中实现了一项功能,并且入侵了一个或两个BOINC项目,这些项目不了解保持软件最新"的重要性.我现在正与其他三个人一起使用BOINC客户程序.够了吗? :)

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? :)

除非您正在寻找要雇用的人(提示!),否则您应该在安装BOINC服务器或开发应用程序之类的问题上就SO提出具体问题,而不是做任何人"对这个话题有什么了解吗?"

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?"

关于您提出的问题:

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

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

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

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).

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

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)

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

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).

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

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

广泛地,他们知道您的博客存在的方式相同:这是您的营销/SEO问题;)

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:

  • 有BOINCaholics会附加到周围的任何项目中,并积极地进行搜索.并告诉他们的朋友和队友.将您的项目放到网上,启用论坛,至少与一个网站建立链接,使其出现在Google中,我保证,几天后,论坛主题中将出现带有"ATA"的主题(匿名Alpha测试人员).如果您愿意,我什至可以告诉您将要在那里的人的用户名.它们是可预测的. (为公平起见,您也可能在这里找到 me :D)
  • 有许多统计站点,这些站点从多个项目中收集用户的信用统计信息并将其汇总.您的项目在其中一个站点上的存在是人们看到它的重要方式.但是,仅导出统计信息并不意味着您会到达那里.您必须向统计网站的管理员表明您的项目正在做一些有用的事情(以征询他们的意见),并且值得信任.
  • 如果您与用户保持良好的沟通,应用程序具有良好的稳定性等,那么您将通过口碑传播吸引更多的用户,而且也许更重要的是,您可以吸引现有的用户留下来和/或给予您将获得更大的CPU时间份额.注意您只有一次留下第一印象的机会".不要在首次启动时就大宣传您的项目,而要让其口口相传,直到它变得足够稳定为止.
  • 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.

当然,很明显,拥有计算机的世界人口中BOINCaholics的比例微不足道.少于10%的人完全使用BOINC.如果您要针对广泛的人群:请返回常规的网站营销,我对此无能为力.请注意,在这种情况下,您还必须向他们解释BOINC的工作原理以及安装方法!

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?

他们从BOINC客户端附加了该项目(如果对BOINC并不陌生,请先下载该项目).他们可以直接从BOINC GUI创建一个帐户.

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.

请甚至不要尝试开发自己的BOINC项目,直到您以用户的身份使用BOINC已有一段时间.这就像创建一个没有使用网络浏览器经验的网站(我认为它正在运行,但现在如何看待它?").去下载客户端,找到一个很棒的项目,附加并观看它的工作.

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.

我曾经试图帮助某人建立一个项目,然后发现他从用户角度来看既没有LAMP经验,也没有BOINC经验.这是一次痛苦的经历.

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 ?

我无法详细说明;您必须更具体地说明您的项目将要做什么,工作"来自何处,需要在服务器端进行哪些处理,客户端应用程序使用哪种语言/运行时/库等,以及 then 我可以告诉你BOINC是否有可以帮助您的东西.

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.

...我想这已经足够了(星期三,凌晨3:15!).

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

这篇关于有BOINC编程经验吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆