= 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 [BoincPlatforms 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 [ToolUpgrade 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 [WrapperApp 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