Skip to content

SingleJob

Vitalii Koshura edited this page Apr 7, 2023 · 2 revisions

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
Clone this wiki locally