Tutorial on Setting up a BOINC Project
This page is a tutorial for the setup of a BOINC project on the basis of the boinc-server-maker package soon to ship with Debian and Ubuntu. It is currently (12/2012) being updated and that recent version of the boinc-server-maker package is not yet publicly availalble. Contact us about it. Also, the tutorial is not consistent in the amount of insights in Linux that is required from the reader. Some obvious-to-many bits are explained, some less obvious pointers may not be given. At some point, it should be understood by anyone with sincere interest in computing and sufficient time to follow things up. Feedback helps.
Contents
Overview
The path towards a complete BOINC project we see four major components.
- With the project initialisation, the basis of everything, comes the setup of the web pages.
- The web page is contacted by clients of the volunteers asking for applications to run. Those need to be set up for many platforms, like 32 and 64 bit environments, Windows, Mac and Linux, whatever the volunteer's community is equipped with and the software is available for.
- Work units that are shipped to the clients to make up compute tasks need to be created. This is not required to happen in one go. It is OK (some may say preferable, this depends on the problem) to have the generation of later workunits depend on the results sent back for the early ones.
- Validation and archiving of results.
This tutorial supports an order like the above. This introduction works closely with what the BOINC developers already provide and as such also use their example projects. Its ends with a complete BOINC project and the reader will know what parts to substitute for its own project.
What you need: disk space and internet connection
The hardware you need depends on the problem you address. When distributing many jobs, you need strong upload bandwidth, which means that with the typical asymmetric DSL connects at home this is difficult. Universities obviously will not have such a problem. In clinical or other strongly firewalled setups find an external hoster or a collaborating non-clinical institute with a demilitarised zone. You may also decide to use the Cloud or just rent some external machine. A regular 32 bit machine is likely to be sufficient if that machine can concentrate on distributing the job and does not need too much of work for post-processing of results.
To just learn and get started, and fix bugs of this tutorial, just use what you have. If on a non-Debian machine, consider running a virtual machine with 512MB memory and 10 GB of disk sapce, leaving some room for many binaries and work units / results.
How to read this tutorial
The tutorial is split into a series of sections which (to some degree) may be read on their own.
Installation of Debian package (or manual compilation of BOINC sources) and the execution of 'make_project' to set the basic website up. |
The 'upper case' binaries shipping with Debian for multiple architectures are collected, described for the BOINC Wrapper and placed into appropriate directories of the BOINC project. |
Description of input files for volunteers to run. |
|
|
|
||
|
|
||
|
Loosely nit collection of text fragments to present an overview of changes to be performed for this default project for one's own runs. Pointer to projects built along this setup. |
Instruction for clients of arbitrary platforms to run BOINC in a virtual machine. |
|
Disclaimer
This section is not yet complete. While the instructions on how to get your project up are basically fine, albeit extendable, there are a few issues that frankly we don't know how to solve exactly, yet, i.e.:
- updates of the project pages
- the web pages are most likely straight forward to bring to a new version
- the database needs the schema to be adjusted ... how?
- integration with Debian infrastructure
- what clients are built through the Debian build daemons and which are not?
- shall there be static applications only or do we also allow dynamically linking ones?
- shall there be additional tests be performed by the client to report on issues prior to the distribution of work? Say checking the output of ldd?
- cross-platform compatibility with MacOS and Windows
- virtualisation is obvious and
- may be preferred by many, needs to be prepared, though
- GPU computing may not be supported that route
- support for cross-platform wrapper
- virtualisation is obvious and
- ... what is there that we are not even aware of, yet ...?
See also
Debian PTS for BOINC package and the build demon status for unstable and Build demon status for experimental
BOINC project wiki and here especially BOINC Software Development Wiki, update_versions, what upstream thinks a package could look like
Tutorials by upstream, spy-hill.net (neat and extensive, some stale links), Black Sheep Software (command line only)
BOINC Article in Linux Magazine issue 71 by Marc Seil (2006) "Idle Cycles".
BOINC. BOINC/Server, BOINC/Development, BOINC/Development/GitUsage,