Changes between Version 12 and Version 13 of WrapperApp
- Timestamp:
- May 28, 2007, 8:56:15 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
WrapperApp
v12 v13 1 1 = Legacy applications = 2 2 3 A '''legacy application''' is one which is difficult to modify touse the BOINC API4 (for example, because an executable is available, but not the source code).3 A '''legacy application''' is one which doesn't use the BOINC API 4 (for example, because the source code is not available). 5 5 Such applications can be run under BOINC using a 'wrapper application' supplied by BOINC. 6 6 The wrapper handles all communication with the core client, … … 9 9 [[Image(http://boinc.berkeley.edu/wrapper.png)]] 10 10 11 The wrapper program (called 'wrapper') is in [ExampleApps boinc_samples]. 12 It reads a file called 'job.xml' with format: 11 The wrapper program (called '''wrapper''') is in [ExampleApps boinc_samples]. 12 It reads a file with [BoincFiles logical name] 'job.xml'. 13 This file has the format: 13 14 14 15 {{{ … … 26 27 27 28 The job file specifies a sequence of tasks. 29 The descriptor for each task includes the name of the application. 30 If the application uses standard I/O (stdin, stdout or stderr) 31 the descriptor specifies the logical names of the files 32 to which these are to be connected. 33 The descriptor may also specify command-line argments to be passed to the application. 34 '''wrapper''' itself may be passed command-line arguments (specified in the workunit template); 35 these are passed to each of the applications after those specified in the job file. 28 36 29 37 The job file can specify multiple tasks. … … 31 39 32 40 * To handle jobs that involve multiple steps (e.g., preprocessing and postprocessing). 33 * To break a long job up into smaller pieces. This provides a form of checkpointing: ''wrapper'' does checkpointing at the task level, so that lost CPU time can belimited even if the legacy applications themselves are not restartable.41 * To break a long job up into smaller pieces. This provides a form of checkpointing: ''wrapper'' does checkpointing at the task level, so that lost CPU time is limited even if the legacy applications themselves are not restartable. 34 42 35 43 Notes: 36 44 37 * This requires version 5.5 or higher of the BOINC core client. 38 * Files opened directly by a worker program must have the <copy_file/> tag. 39 * If '''wrapper''' is passed command-line arguments (e.g., specified in the workunit template) these are passed to each of the applications, after those specified in the job file. 40 * If the wrapper is used in standalone mode (while debugging), you have to provide the input files with the proper logical, not physical, names. 45 * The job file can be part of the workunit (e.g. if its command line elements differ between workunits) or the application version (if it's the same between workunits). 46 * Files opened directly by a worker program must have the <copy_file/> tag. This requires version 5.5 or higher of the BOINC core client (you can specify this limit at either the [AppVersion application] or [ProjectOptions project] level. 47 * If you run wrapper in standalone mode (while debugging), you must provide input files with the proper logical, not physical, names. 41 48 42 49 == Example == 43 50 44 Here's an example that shows how to set this up:51 Here's an example of this mechanism: 45 52 * Compile the program 'worker' from the [ExampleApps boinc_samples] tree, producing (say) 'worker_5.10_windows_intelx86.exe'. This is the legacy app. If reads from stdin and writes to stdout; it also opens and reads a file 'in', and opens and writes a file 'out'. It takes one command-line argument: the number of CPU seconds to use. 46 53 * Compile the program 'wrapper' from the [ExampleApps boinc_samples] tree, producing (say) 'wrapper_5.10_windows_intelx86.exe'. This program executes your legacy application, and acts as a proxy for it (to report CPU time etc.). … … 57 64 </job_desc> 58 65 }}} 59 This file is read by 'wrapper'; it tells it the name of the legacy program, what files to connect to its stdin/stdout, and a command line.66 This file (which has logical name 'job.xml' and physical name 'job_1.12.xml') is read by 'wrapper'; it tells it the name of the legacy program, what files to connect to its stdin/stdout, and a command line. 60 67 * Create a workunit template file 61 68 {{{ … … 121 128 to generate a workunit. 122 129 123 124 125 130 To understand how all this works: at the beginning of execution, the file layout is: 126 131