Single job submission ¶
BOINC is designed to handle streams of millions of jobs. It takes some work to set up a stream: you need to create apps and app versions, WU and result templates, validators, assimilators, etc.
BOINC's single job submission mechanism lets you run a job without any of this hassle. To do this, configure your BOINC server to handle single jobs (see below). Set the environment variable BOINC_PROJECT_DIR to the root directory of the project. cd into a directory containing a program and its input files. Then type
~/boinc/tools/boinc_submit [boinc-options] program [program-options]
The boinc-options are:
- --infile name
- specifies an input file.
- --stdin name
- direct the given file to the program's stdin.
- --outfile name
- specifies an output file.
- --stdout name
- direct the program's stdout to the given file.
- --platform
- the platform on which the program is to be run (default: the server's platform; assumed to be Linux).
You can include as many --infile and --outfile options as you want, and at most one of others.
The program-options will be passed as command-line arguments to the program when it runs on the remote machine.
If the program requires any non-standard libraries, link these statically. Otherwise it will fail on machines that lack these libraries.
You can run boinc_submit from any host that NSF-mounts your project directory and can access the MySQL database.
When the job is completed successfully, the output files will appear in the job directory.
Monitoring jobs ¶
The following options are available for monitoring jobs:
boinc_submit --jobs
Show a list of jobs, both in progress and completed.
boinc_submit --abort jobID
Abort the given job.
Configuring BOINC for single jobs ¶
Download the latest server code and upgrade your project. The single-job mechanism uses the "wrapper" program from boinc/samples/wrapper. cd to your project's home directory and type
html/ops/single_job_setup.php path-to-boinc-samples
and follow the resulting instructions.
You should periodically update your boinc/ source code to get bug fixes for "wrapper". After you do this, re-run the single_job_setup.php script as above.
Job estimates and limits ¶
Jobs submitted this way will have the following parameters:
- processing estimate: 1 GFLOPS-hour
- processing bound: 1 GFLOPS-day
- memory bound: 500MB
- disk bound: 1GB
- delay bound: 1 week
You can change these by editing the boinc_submit script.
Using other platforms ¶
By default, this mechanism works only for the server platform. For example, if your server is Linux/x86_64, then your applications must be for that platform, and your jobs will run only on hosts of that platform.
You can use other platforms (says, windows_intelx86) by doing the following:
- Go to your project's apps directory.
- Create directories apps/single_job_windows_intel86/1.0/windows_intel86.
- Download the BOINC wrapper executable for windows_intelx86, and put it in the windows_intelx86 directory.
- Go to your project's root directory
- Run bin/update_versions. Answer yes to all questions.
- Restart the project.
You can then submit jobs to Windows/x86 hosts:
- Create a directory with a Windows executable for your application, say app.exe
- Type a command of the form
boinc_submit --platform windows_intelx86 app.exe
Notes ¶
The single job submission system is a work in progress. Various features haven't been implemented (let us know if you need them).
- Redundancy greater than 1 (could require homogeneous redundancy).
- Control over job parameters such as deadline, FLOPS, disk, and memory limits.
- Code-signing of the program file