BOINC applications are native-mode programs, so different versions are required for each platform (a "platform" is the combination of an operating system and a CPU architecture: e.g., Linux/Intel32). Each BOINC-based project has application versions for one or more platforms. When the BOINC client requests work from the project's server, the client tells the server its platform, and the server gives it the appropriate version.
This addresses the needs of most BOINC participants, but it's inadequate if:
- your computers have platforms not supported by BOINC or by the project;
- for security reasons, you want to only run executables you have compiled yourself;
- you want to optimize applications for particular architectures.
To handle these cases, BOINC offers a mechanism called anonymous platform. This lets you build applications yourself, or obtain them from a third party, rather than getting them from the project server. This can be used only for projects that make their source code available. As an example, see the instructions for SETI@home.
If the BOINC client is not available for your platform, you must build it yourself.
To use the anonymous platform mechanism for a particular project:
- Get the project's application source code and compile it, or download an executable from a third party.
- Run the BOINC client and attach to the project. This will create a 'project directory' (whose name is the project URL) in the BOINC directory. Exit the client. Put your executables in the project directory (Mac OS X users: see note below).
- Create a file app_info.xml in the project directory. This file describes the applications you have compiled or downloaded. Its format is described below.
- Run the BOINC client again. When it requests work from the scheduling server, it will report its platform as 'anonymous' and send a list of the applications you have supplied. The server will sends tasks for those applications.
Mac OS X note: When you add files inside the Mac's BOINC Data directory, you must set ownership and permissions properly. If you are using the BOINC Manager, simply run the BOINC Installer again. If you are running the Unix command-line version, run the Mac_SA_Secure.sh shell script; it is bundled with the command-line BOINC Client and also available at Mac_SA_Secure.sh.
To switch back to using the project-supplied executables, delete the app_info.xml file and reset the project.
You may want to check out the following email lists (e.g. the port may already exist):
- email@example.com: discussion of porting and optimization of BOINC applications.
- firstname.lastname@example.org: discussion of development and porting of BOINC software.
- email@example.com: checkins to the BOINC source are reported here.
The format of app_info.xml
The file app_info.xml is an XML description of the applications you have compiled or downloaded. It has elements describing the files that make up the application, and describing the attributes of the application. The format is as follows:
<app_info> <app> <name>setiathome_enhanced</name> </app> <file_info> <name>setiathome_6.6_windows_intelx86.exe</name> <executable/> </file_info> <file_info> <name>setiathome_graphics_6.6_windows_intelx86.exe</name> <executable/> </file_info> <app_version> <app_name>setiathome_enhanced</app_name> <version_num>660</version_num> <api_version>6.1.0</api_version> [ <coproc> <type>CUDA</type> <count>1</count> </coproc> ] [ <plan_class>cuda</plan_class> ] [ <flops>X</flops> ] [ <avg_ncpus>X</avg_ncpus> ] [ <max_ncpus>X</max_ncpus> ] [ <cmdline>args</cmdline> ] <file_ref> <file_name>setiathome_6.6_windows_intelx86.exe</file_name> <main_program/> </file_ref> <file_ref> <file_name>setiathome_graphics_6.6_windows_intelx86.exe</file_name> <open_name>graphics_app</open_name> </file_ref> </app_version> </app_info>
The elements include:
<version_num>: the application's version number.
<api_version>: the BOINC version number of the API the app uses.
<coproc>: describes a coprocessor requirement. The type element can refer to a GPU type specified in cc_config.xml.
<flops>: the expected FLOPS of the application (for multi-thread and coprocessor apps).
<avg_ncpus>: the average number of CPUs used by the app.
<max_ncpus>: the max number of CPUs used by the app.
Generally this should match the corresponding elements in a scheduler reply message (sched_reply_URL.xml), except that the <platform> element should be removed.