9621
Comment: Para added on bug tracking [incomplete], Headers in more consistent levels now.
|
9595
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
* [#Optimizing Optimizing the core client] | * [#Optimizing Advanced issues] |
Line 108: | Line 108: |
== Optimizing the core client == |
== Advanced issues == |
Line 111: | Line 110: |
BOINC - Berkeley Open Infrastructure for Network Computing
On this page:
- [#Introduction Introduction]
- [#Installation Installation]
- [#Optimizing Advanced issues]
[#?DevInfos Information for developers]
On sub pages:
?/ClientBenchmarks
?Anchor(Introduction)
Introduction
A detailed introduction to [http://boinc.berkeley.edu/ BOINC] itself is available on the Wiki pages of [http://boinc-doc.net/boinc-wiki/index.php?title=BOINC_FAQ:_Introduction_To_BOINC boinc-doc.net] and [http://en.wikipedia.org/wiki/BOINC en.wikipedia.org]. In short, BOINC provides an infrastructure for distributed computing that is currently applied for various scientific problems. Hence, everybody can do something beneficial to the world at large while one's computer is not in use.
The main crisicism of the BOINC project is that it would be difficult to install. Well, to install packages in Debian is not difficult and the motivation to create packages for this worthwhile cause requires no further explaination, except maybe the following special hint. Debian is special for its support of many different architectures, which is only sustainable because of an automated compilation of novel packages. Thus, the provision of BOINC on Debian significantly contributes to the acceptance of the project in all these non-mainstream architectures. Furthermore, the frequently distributed Live CDs of Debian may bring functional BOINC installations to the masses.
Technical overview
From the user's perspective, BOINC has three parts:
- The server that the data flow to which, after registration to the project(s), is no longer of interest.
The BOINC core client that is commonly wrapped by the BOINC Manager (boincmgr) and the only program that is actually started by the user.
The project specific application (e.g.setiathome) that is started by the BOINC core client.
The speed of the processor is measured by the BOINC core client. One gets the more credits, the faster the BOINC core client says the individual machine is. Hence, it makes perfect sense to have a very much optimized binary of the BOINC core client, if one is interested in the stats. However, the project specific application that does the real work, does not go any faster from that. And this is where the real interest is in. Hence, the ultimate goal is to have packages for the applications, too. Some are only distributed as binaries, though, which renders this process difficult.
?Anchor(Installation)
Installation
Installation of binary packages
If you are running DebianUnstable you should add the following lines to your /etc/apt/sources.list file:
# BOINC packages for Debian "sid" (unstable) deb http://pkg-boinc.alioth.debian.org/debian unstable main non-free deb-src http://pkg-boinc.alioth.debian.org/debian unstable main non-free
For DebianTesting use these lines for your /etc/apt/sources.list file:
# BOINC packages for Debian "etch" (testing) deb http://pkg-boinc.alioth.debian.org/debian testing main deb-src http://pkg-boinc.alioth.debian.org/debian testing main
And for DebianSarge use these lines for your /etc/apt/sources.list file:
# BOINC packages for Debian 3.1 "sarge" (stable) deb http://pkg-boinc.alioth.debian.org/debian sarge main deb-src http://pkg-boinc.alioth.debian.org/debian sarge main
Now update the package index files and install the BOINC core client and the BOINC Manager. Unfortunately the latter is not available for DebianSarge because of a missing build dependency (wxWidgets 2.6).
apt-get update apt-get install boinc-client boinc-manager
Finally, run the graphical user interface boincmgr and follow the instructions to attach a new project to your BOINC core client. A non-graphical alternative to boincmgr is the boinc_cmd program, which is included in the boinc-client package.
Installation from source
To install the BOINC packages from source one of the deb-src lines from the last section must be present in your /etc/apt/sources.list file. Also make sure that you have the build-essential and fakeroot packages installed on your system.
Prepare a source directory and download the BOINC source package and it's build dependencies:
mkdir -p ~/src/boinc cd !$ apt-get build-dep boinc apt-get source boinc
Change to the BOINC directory and build the sources. Before running dpkg-buildpackage you can apply patches to the BOINC source or set compiler flags to optimize the BOINC core client (see also: [#Optimizing Optimizing the core client] and ?/ClientBenchmarks).
cd boinc-X.Y.Z/ dpkg-buildpackage -rfakeroot -us -uc
After dpkg-buildpackage successfully finishes the build you can install your custom built packages:
cd ~/src/boinc dpkg -i boinc-client_X.Y.Z-R_ARCH.deb boinc-manager_X.Y.Z-R_ARCH.deb
If dpkg-buildpackage fails to build the BOINC packages this probably indicates a bug in our sources and it is worth reporting it to the pkg-boinc-devel mailing list pkg-boinc-devel@lists.alioth.debian.org.
?Anchor(Optimizing)
Advanced issues
Setting compiler flags
Frankly, we are ourselves a bit floating around on how to optimize the build process. At the moment, the following feels a nice path to go. Prior to the build, set the following environment variables which are picked up by debian/rules and configure:
CFLAGS C compiler flags CXXFLAGS C++ compiler flags
Then inspect man gcc for options specific to your hardware. The best settings should be exchanged on this Wiki (see: ?/ClientBenchmarks). For a laptop with a Pentium M processor the following might be appropriate:
export CFLAGS="-mtune=pentium-m" export CXXFLAGS=$CFLAGS
It was stated before that this settings will only influence the credits assigned to your machines, unless you also recompile the application performing the computation, for which we don't provide Debian packages yet.
Bug tracking
Everything works fine but some submissions get evaluated as erroneous
If this is fewer than 10 in 100 times then this may be some physiological behaviour. The submitted results are not all 100% identical when run on different machines.
Where to find status reports on clients
The boinc-client installed by the Debian package does not perform the actual computation. That is performed by the binary downloaded dynamically by that client. The web site of the project features entries for each result which may be indicative of one problem or the other.
E.g. for Einstein@Home to see the interesting graphics the X display requires to be accessible. When the client is started as a different user than the one running the X server, a very likely szenario, then no window can be opened by the boinc-client. The error is sadly not forwarded properly to the calling application (like boincmgr) but appears in the results entry ([http://einstein.phys.uwm.edu/result.php?resultid=11933009 see here]). An 'xhost +' allowed the window to open.
?Anchor(DevInfos)
Information for developers
Using the Subversion repository
Development is coordinated through a [http://svn.debian.org/wsvn/pkg-boinc Subversion repository]. It follows a brief HOWTO for working with this repository. For a detailed introduction in Subversion have a look at the [http://svnbook.red-bean.com/ Version Control with Subversion] book.
Download the files from the the repository. Substitute smoe-guest in the URL with your userid:
svn co svn+ssh://smoe-guest@svn.debian.org/svn/pkg-boinc
Now, files can be edited and subsequently be submitted (checked in) back to the repository:
svn ci
To get the latest version again, run update without the reqirement of specifying the URL again, which is stored in local files:
svn up
The program [http://packages.debian.org/unstable/devel/svn-buildpackage svn-buildpackage] is nice for creating Debian packages directly from a Subversion working directory. Before building packages you need a BOINC .orig.tar.gz file, see [http://svn.debian.org/wsvn/pkg-boinc/trunk/boinc/debian/README.Debian-source?op=file README.Debian-source]. Once you obtained a source tarball run
svn-buildpackage -rfakeroot
in the directory trunk/boinc/ and subsequently inspect the file trunk/boinc/.svn/deb-layout. That file defines origDir, the directory where the .orig.tar.gz files are stored. Once this variable is adjusted another run of svn-buildpackage -rfakeroot should build BOINC source and binary packages.
For remaining questions send an email to our [http://lists.alioth.debian.org/mailman/listinfo/pkg-boinc-devel mailing list].
?Anchor(TODO)
To-do list
Things that need to be done before uploading to DebianUnstable:
Implement a working solution for boinc-client and boinc-app-* packages.
Use test/test_sanity.py to check runtime dependencies of the boinc-server package.
- General major TODOs:
Write expressive long descriptions for boinc-manager, boinc-dev and boinc-server.
- General minor TODOs:
Explain in boinc-client's manpage or README how to restrict GUI RPC access by changing the permission of the gui_rpc_auth.cfg file.
- Revise all manpages.
- Things that need to be done before releasing the next upstream release: