Changes between Version 12 and Version 13 of WrapperApp


Ignore:
Timestamp:
May 28, 2007, 8:56:15 AM (17 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WrapperApp

    v12 v13  
    11= Legacy applications =
    22
    3 A '''legacy application''' is one which is difficult to modify to use the BOINC API
    4 (for example, because an executable is available, but not the source code).
     3A '''legacy application''' is one which doesn't use the BOINC API
     4(for example, because the source code is not available).
    55Such applications can be run under BOINC using a 'wrapper application' supplied by BOINC.
    66The wrapper handles all communication with the core client,
     
    99[[Image(http://boinc.berkeley.edu/wrapper.png)]]
    1010
    11 The wrapper program (called 'wrapper') is in [ExampleApps boinc_samples].
    12 It reads a file called 'job.xml' with format:
     11The wrapper program (called '''wrapper''') is in [ExampleApps boinc_samples].
     12It reads a file with [BoincFiles logical name] 'job.xml'.
     13This file has the format:
    1314
    1415{{{
     
    2627
    2728The job file specifies a sequence of tasks.
     29The descriptor for each task includes the name of the application.
     30If the application uses standard I/O (stdin, stdout or stderr)
     31the descriptor specifies the logical names of the files
     32to which these are to be connected.
     33The 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);
     35these are passed to each of the applications after those specified in the job file.
    2836
    2937The job file can specify multiple tasks.
     
    3139
    3240 * 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 be limited 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.
    3442
    3543Notes:
    3644
    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.
    4148
    4249== Example ==
    4350
    44 Here's an example that shows how to set this up:
     51Here's an example of this mechanism:
    4552 * 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.
    4653 * 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.).
     
    5764</job_desc>
    5865}}}
    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.
    6067 * Create a workunit template file
    6168{{{
     
    121128 to generate a workunit.
    122129
    123 
    124 
    125130To understand how all this works: at the beginning of execution, the file layout is:
    126131