Differences between revisions 49 and 50
Revision 49 as of 2005-12-08 08:21:51
Size: 9621
Comment: Para added on bug tracking [incomplete], Headers in more consistent levels now.
Revision 50 as of 2005-12-08 19:53:44
Size: 9595
Comment:
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:

  1. The server that the data flow to which, after registration to the project(s), is no longer of interest.
  2. The BOINC core client that is commonly wrapped by the BOINC Manager (boincmgr) and the only program that is actually started by the user.

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

  1. 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
  2. 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
  3. 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: