| 1 | = Input and output templates = |
| 2 | |
| 3 | == Input template files == |
| 4 | |
| 5 | An input template file has the form |
| 6 | {{{ |
| 7 | |
| 8 | <input_template> |
| 9 | <file_info> |
| 10 | <number>0</number> |
| 11 | [ <gzip/> ] |
| 12 | [ <sticky/> ] |
| 13 | [ <no_delete/> ] |
| 14 | [ <report_on_rpc/> ] |
| 15 | [ <url>...</url> ] |
| 16 | [ <url>...</url> ] |
| 17 | [ <md5_cksum>...</md5_cksum> ] |
| 18 | [ <nbytes>...</nbytes> ] |
| 19 | </file_info> |
| 20 | [ ... other files ] |
| 21 | <workunit> |
| 22 | <file_ref> |
| 23 | <file_number>0</file_number> |
| 24 | <open_name>NAME</open_name> |
| 25 | [ <copy_file/> ] |
| 26 | </file_ref> |
| 27 | [ ... other files ] |
| 28 | [ <command_line>-flags xyz</command_line> ] |
| 29 | [ <rsc_fpops_est>x</rsc_fpops_est> ] |
| 30 | [ <rsc_fpops_bound>x</rsc_fpops_bound> ] |
| 31 | [ <rsc_memory_bound>x</rsc_memory_bound> ] |
| 32 | [ <rsc_disk_bound>x</rsc_disk_bound> ] |
| 33 | [ <delay_bound>x</delay_bound> ] |
| 34 | [ <min_quorum>x</min_quorum> ] |
| 35 | [ <target_nresults>x</target_nresults> ] |
| 36 | [ <max_error_results>x</max_error_results> ] |
| 37 | [ <max_total_results>x</max_total_results> ] |
| 38 | [ <max_success_results>x</max_success_results> ] |
| 39 | </workunit> |
| 40 | </input_template> |
| 41 | }}} |
| 42 | Elements and tags must be on separate lines as shown. |
| 43 | The components are: |
| 44 | |
| 45 | '''<file_info>''':: describes an [BoincFiles#Fileproperties input file]. |
| 46 | '''<number>''':: use 0, 1, ... |
| 47 | '''<gzip/>''':: transfer the file in gzipped (compressed) format to reduce network usage. '''You must stage the file with the --gzip option (see below)'''. Only 7.0+ clients can handle compressed transfers; older clients will get the file in uncompressed form. |
| 48 | '''<sticky/>''':: if present, the file remains on the client after job is finished. |
| 49 | '''<no_delete/>''':: if present, the file is not deleted from the server after job is completed. Use this if the file is used as input to more than one job. |
| 50 | '''<report_on_rpc/>''':: if present, report file in each scheduler request (for sticky files) |
| 51 | '''<url>, <md5_cksum>, <nbytes>''':: used only for "non-local" input files (see below) |
| 52 | |
| 53 | '''<file_ref>''':: describes [BoincFiles#Filereferences the way the file is referenced]. |
| 54 | '''<file_number>''':: 0, 1, etc. |
| 55 | '''<open_name>''':: the logical name of the file |
| 56 | '''<copy_file>''':: if present, the file is copied into the job's slot directory |
| 57 | |
| 58 | '''<command_line>''':: The command-line arguments to be passed to the main program. |
| 59 | Note: if you're using the [WrapperApp BOINC wrapper], |
| 60 | use <append_cmdline_args/> in your job.xml file to pass command-line arguments from the wrapper |
| 61 | to the wrapped application. |
| 62 | |
| 63 | '''<rsc_fpops_est>''' etc.:: |
| 64 | [JobIn Job attributes] such has how much disk space will be used. |
| 65 | BOINC will supply reasonable defaults for these, |
| 66 | but you should supply the correct values; |
| 67 | otherwise, for example, BOINC might try to run the job |
| 68 | on a host with insufficient disk space. |
| 69 | |
| 70 | Notes: |
| 71 | * The input template is copied into a BLOB column of the workunit table and will substitute filenames, |
| 72 | and have download urls, signatures and other elements inserted into your provided template. |
| 73 | The total expanded BLOB cannot exceed 65,535 bytes. |
| 74 | This is enough for about 200 input files, |
| 75 | fewer if you use long file names are multiple download URLs. |
| 76 | If this isn't enough, you can use [FileCompression BOINC file compression] to zip several files into a single file reference for download, |
| 77 | and expanding them prior to running on the client machine. |
| 78 | |
| 79 | == Output template files == |
| 80 | |
| 81 | An output template file has the form |
| 82 | {{{ |
| 83 | <output_template> |
| 84 | <file_info> |
| 85 | <name><OUTFILE_0/></name> |
| 86 | <generated_locally/> |
| 87 | <upload_when_present/> |
| 88 | <max_nbytes>32768</max_nbytes> |
| 89 | <url><UPLOAD_URL/></url> |
| 90 | </file_info> |
| 91 | <result> |
| 92 | <file_ref> |
| 93 | <file_name><OUTFILE_0/></file_name> |
| 94 | <open_name>result.sah</open_name> |
| 95 | [ <copy_file>0|1</copy_file> ] |
| 96 | [ <optional>0|1</optional> ] |
| 97 | [ <no_validate>0|1</no_validate> ] |
| 98 | </file_ref> |
| 99 | [ <report_immediately/> ] |
| 100 | </result> |
| 101 | </output_template> |
| 102 | }}} |
| 103 | |
| 104 | Elements and tags must be on separate lines as shown. |
| 105 | The elements include: |
| 106 | |
| 107 | '''<file_info>''':: describes an output file. |
| 108 | '''<name>''':: the physical file name. |
| 109 | Typically use <OUTFILE_0>, <OUTFILE_1> etc.; |
| 110 | BOINC will replace this with a generated name based on the job name. |
| 111 | |
| 112 | '''<file_ref>''':: describes how an output file will be referenced by the application. |
| 113 | '''<open_name>''':: the "logical name" by which the application will reference the file. |
| 114 | '''<copy_file/>''':: if present, the file will be generated in the slot directory, |
| 115 | and copied to the project directory after the job has finished. |
| 116 | Use this for [WrapperApp legacy applications]. |
| 117 | '''<generated_locally/>''':: always include this for output files. |
| 118 | '''<max_nbytes>''':: maximum file size. |
| 119 | If the actual size exceeds this, the file will not be uploaded, |
| 120 | and the job will be marked as an error. |
| 121 | '''<url>''':: the URL of the file upload handler. |
| 122 | You may include this explicitly, or use '''<UPLOAD_URL/>''' |
| 123 | to use the URL in your project's config.xml file. |
| 124 | '''<optional>''':: if 0 or absent, your application must create the file, |
| 125 | otherwise the job will be marked as an error. |
| 126 | '''<no_validate>''':: if true, don't include this file in the result validation process |
| 127 | (relevant only if you are using the sample bitwise validator). |
| 128 | '''<no_delete/>''':: if present, the file will not be deleted on the server |
| 129 | even after the job is finished. |
| 130 | |
| 131 | '''<report_immediately/>''':: if present, clients will report this job |
| 132 | immediately after the output files are uploaded. |
| 133 | Otherwise they may wait up to a day. |
| 134 | (Implemented in 6.12.27+ clients only). |
| 135 | |
| 136 | Note: when a job is created, the name of its output template file is stored in the database. |
| 137 | The file is read when instances of the job are created, which may happen days or weeks later. |
| 138 | Thus, editing an output template file can affect existing jobs. |
| 139 | If this is not desired, you must create a new output template file. |
| 140 | |
| 141 | You can safely remove an input template file after creating your last job with it. |
| 142 | However, output template files must exist until any task that refers to it is completed |
| 143 | (i.e. no more replicas will be created). |
| 144 | |
| 145 | In general, you should not attempt to use more then 50 files in your output template. |
| 146 | This is because the provided template will have upload URLs, and file names expanded, and signatures added to it. |
| 147 | The total size of the result must remain under 65,535 bytes to fit in the xml_doc_in and xml_doc_out BLOBs in the result table. |
| 148 | Your actual limit on number of files will depend upon the length of your job names, and upload URLs. |
| 149 | If your expanded output template is approaching the size limit, |
| 150 | you can use [FileCompression BOINC file compression] to zip several files |
| 151 | into a single file reference for upload, prior to completing each task on the client machine. |
| 152 | Once you have run some jobs through your project, |
| 153 | you can compare the size of the expanded xml with the 65,535 limit by running the following MySQL statement:[[BR]] |
| 154 | {{{select max(length(xml_doc_in)), max(length(xml_doc_out)) from result;}}}[[BR]] |
| 155 | Note that here "_in" and "_out" are both references to the output template. |
| 156 | "_in" being when the task was created, and "_out" how it looked, |
| 157 | with actual file sizes and checksums, at the time the task was returned. |
| 158 | So don't confuse these column names with the "input" and "output" templates. |