LaLanne - Exercising the whole BOINC API
This program is a complete test, a full exercise program, for the BOINC API and BOINC graphics.
Last modified: 3 October 2009
Exercising the BOINC API
This program is a BOINC application which demonstrates many (though not yet all) of the features of the BOINC basic, diagnostic and graphics APIs. These include:
Topics Graphics The Boinclet Additional Notes Release Notes
The features which are not yet included (but might be in a future version) are:
- Turning on diagnostic output and redirecting it to stderr
- Obtaining information about the user, application, and workunit
- Checkpointing - both saving and restarting
- Registering the fraction of work done for a running workunit
- Putting the graphics thread in separate file
- Graphics routines to initialize, render and resize.
- Display of a static graphic image
- Use of GLUT for text and Object rendering via a Display List
- Getting the version number of the BOINC code
- Termination based on condition (time limit or no graphics)
- Trickle messages
- Using "texture" fonts
- Texture mapping - Mapping an image file onto the surface of an object
- Bypassing the rendering routine when the window size is (0,0)
The BOINC APIs are documented on the BOINC website at
The application comes in several parts parts:
It is possible to compile and run the application without graphics by not setting the compiler macro BOINC_APP_GRAPHICS. It is also possible to compile and run with graphics but without relying on GLUT by not setting USE_GLUT. If you don't use GLUT you won't get text in the graphics.
- the generic main program thread (no graphics), called app_main.C,
- the code specific to this appliation (except graphics), demonstrating API features, called lalanne.C,
- the code to perform a similation of Buffon's Needle (this is the "worker" thread for this app), called buffon.C/h,
- the code to to display the static graphics image at the begining and end of the task, in the file lalanne_poster.C, and
- the graphics thread, called lalanne_gfx.C.
GraphicsThe application displays a simple OpenGL graphics animation, which provides a working example of how to do that. Just take out my silly drawings and put in your own graphics. Remember also that for the screensaver you must set the viewpoint and projection, there is no reasonable default as there usually is for GLUT programs.
At the end of the application a static image is loaded just to show off how to do that as well. This is copied almost completely from the file static_graphics.C which comes with the BOINC distribution.
The BOINC API for applications using graphics changed at version 4.52. This program demonstrates only the newer API (previous versions showed both, based on the BOINC version number).
The BoincletAlong with the lalanne app for BOINC, the Makefile contains instructions for building a program called the "boinclet", which is a test-stand for BOINC graphics. The idea is that you can build and test your graphics on Unix without having to build a complete BOINC application. Then you can just put your graphics into the application and it should work as expected. This speeds graphics development. The boinclet should work for any BOINC graphics code, not just this example. Separate documentation for the boinclet is under development.
There is a project file for a boinclet version of the graphics thread for Windows included in the Solution file, but it has not been yet been tested and probably does not yet work.
Additional NotesYou can get a tarball containing the source code and build scripts here.
On unix you can use CVS to get the code thus:$ cvs -d :pserver:firstname.lastname@example.org/usr/local/cvsroot/boinc checkout src/apps/lalanne.dThen move the directory lalanne.d to wherever you want to use it. On Windows you should move it to the boinc/apps folder to get the paths to match up correctly. Further documentation about how to use CVS, including how to get this application via CVS on Windows, is under development.
Please note there may still be some remaining spelling inconsistencies. This app was originally called "lalane" until I found out that Jack spells his name "LaLanne", with two n's. Ooops.
Release NotesHere are more specific notes for particular versions of lalanne as they are released:
- lalanne 5.06 (26 February 2008)
- In addition to the static poster display, we have a moving background (texture map), the interior of a globe. This app runs several simulations of Buffon's Needle, until it's run for at least an hour (or whatever is given for -max_time). After each simulation, it sends the result home via trickle, and checks for trickle messages from the server. (The 1hr run time is so as to last until at least one scheduler reply, to increase the chance of getting a trickle message from the server.)
- lalanne 5.04 (17 February 2008)
- Small adjustments to trickle messages. Generic "poster" name for static image shown before and after. (Which is shown only briefly, because I was testing and forgot to set the duration back to normal.) With this version we got our first trickle message back! Only released for Linux.
- lalanne 5.03 (5 February 2008)
- After sitting on the shelf for a long time, I am finally able to start updating this application. I've moved functionally separate parts to different files to make them easier to understand. The static graphics ("poster") demonstration comes first (and still last as well). And I'm adding a demonstration of trickle messages.
- lalanne 5.02 (14 August 2006)
- Updated the code to match the evolution of BOINC to version 5.5. Built on Windows and Linux with BOINC 5.5.12.
- lalanne 5.01 (15 January 2006)
- Built with BOINC 5.2.15 on Windows.
- lalanne 4.63-4.73 (14 June 2005)
- Built with the BOINC software in CVS from particular dates in Febrary 2005 in a succesful attempt to isolate the bug that is causing this app to bomb. The inner loop was also adjusted to keep track of time better. A workunit runs 2 minutes if graphics are never initialized, and up to 20 minutes if graphics are started.
- lalanne 4.62
- lalanne 4.55 (May 2005)
- Built with boinc_core_release_4_66, and it works.