| 136 | | == Putting input files in the download directory == |
| 137 | | |
| 138 | | To move an input file to the download directory, use |
| 139 | | {{{ |
| 140 | | dir_hier_path filename |
| 141 | | }}} |
| 142 | | which prints the full pathname and creates the directory if needed (run this in the project's root directory). |
| 143 | | For example: |
| 144 | | {{{ |
| 145 | | cp test_files/12ja04aa `bin/dir_hier_path 12ja04aa` |
| 146 | | }}} |
| 147 | | copies an input file from the test_files/ directory to the download directory hierarchy. |
| 148 | | |
| 149 | | [[PageOutline]] |
| 150 | | = Submitting jobs = |
| 151 | | |
| 152 | | To submit a job you must |
| 153 | | |
| 154 | | 1. Write XML 'template files' that describe the job's input and outputs (typically the same template files can be used for many jobs). |
| 155 | | 1. Create the job's input file(s), and put them in the right place (as determined by the file name) in the [DirHierarchy download directory hierarchy]. |
| 156 | | 1. Invoke a BOINC function or script that submits the job. |
| 157 | | |
| 158 | | Once this is done, BOINC takes over: it creates one or more instances of the job, |
| 159 | | distributes them to client hosts, collects the output files. |
| 160 | | It [ValidateIntro validates] and |
| 161 | | [AssimilateIntro processes] the results, |
| 162 | | and deletes the input and output files. |
| 163 | | |
| 164 | | Typically, steps 2) and 3) are done by a [WorkGeneration work generator] program |
| 165 | | that creates lots of jobs. |
| 166 | | |
| 167 | | == Input and output template files == #templates |
| 168 | | |
| 169 | | An input template file has the form |
| 170 | | {{{ |
| 171 | | <file_info> |
| 172 | | <number>0</number> |
| 173 | | [ <sticky/> ] |
| 174 | | [ <nodelete/> ] |
| 175 | | [ <report_on_rpc/> ] |
| 176 | | </file_info> |
| 177 | | [ ... other files ] |
| 178 | | <workunit> |
| 179 | | <file_ref> |
| 180 | | <file_number>0</file_number> |
| 181 | | <open_name>NAME</open_name> |
| 182 | | [ <copy_file/> ] |
| 183 | | </file_ref> |
| 184 | | [ ... other files ] |
| 185 | | [ <command_line>-flags xyz</command_line> ] |
| 186 | | [ <rsc_fpops_est>x</rsc_fpops_est> ] |
| 187 | | [ <rsc_fpops_bound>x</rsc_fpops_bound> ] |
| 188 | | [ <rsc_memory_bound>x</rsc_memory_bound> ] |
| 189 | | [ <rsc_disk_bound>x</rsc_disk_bound> ] |
| 190 | | [ <delay_bound>x</delay_bound> ] |
| 191 | | [ <min_quorum>x</min_quorum> ] |
| 192 | | [ <target_nresults>x</target_nresults> ] |
| 193 | | [ <max_error_results>x</max_error_results> ] |
| 194 | | [ <max_total_results>x</max_total_results> ] |
| 195 | | [ <max_success_results>x</max_success_results> ] |
| 196 | | [ <credit>X</credit> ] |
| 197 | | </workunit> |
| 198 | | }}} |
| 199 | | Elements and tags must be on separate lines as shown. |
| 200 | | The components are: |
| 201 | | |
| 202 | | '''<file_info>''':: describes an [BoincFiles#Fileproperties input file]. |
| 203 | | '''<open_name>''':: the physical name of the file. |
| 204 | | '''<sticky/>''':: if present, the file remains on the client after job is finished. |
| 205 | | '''<nodelete/>''':: if present, the file is not deleted from the server after job is completed. |
| 206 | | '''<report_on_rpc/>''':: if present, report file in each scheduler request (sticky files) |
| 207 | | |
| 208 | | '''<file_ref>''':: describes [BoincFiles#Filereferences the way the file is referenced]. |
| 209 | | '''<open_name>''':: the logical name of the file |
| 210 | | '''<copy_file>''':: if present, the file is copied into the job's slot directory |
| 211 | | |
| 212 | | '''<command_line>''':: The command-line arguments to be passed to the main program. |
| 213 | | |
| 214 | | '''<credit>''':: |
| 215 | | The amount of credit to be granted for successful completion of this workunit. |
| 216 | | Use this only if you know in advance how many FLOPs it will take. |
| 217 | | Your [ValidationSimple validator] must use {{{get_credit_from_wu()}}} |
| 218 | | as its compute_granted_credit() function. |
| 219 | | |
| 220 | | '''<rsc_fpops_est>''' etc.:: |
| 221 | | [JobIn Work unit attributes] |
| 222 | | |
| 223 | | An output template file has the form |
| 224 | | {{{ |
| 225 | | <file_info> |
| 226 | | <name><OUTFILE_0/></name> |
| 227 | | <generated_locally/> |
| 228 | | <upload_when_present/> |
| 229 | | <max_nbytes>32768</max_nbytes> |
| 230 | | <url><UPLOAD_URL/></url> |
| 231 | | </file_info> |
| 232 | | <result> |
| 233 | | <file_ref> |
| 234 | | <file_name><OUTFILE_0/></file_name> |
| 235 | | <open_name>result.sah</open_name> |
| 236 | | [ <optional>0|1</optional> ] |
| 237 | | [ <no_validate>0|1</no_validate> ] |
| 238 | | </file_ref> |
| 239 | | </result> |
| 240 | | }}} |
| 241 | | |
| 242 | | Elements and tags must be on separate lines as shown. |
| 243 | | The elements include: |
| 244 | | |
| 245 | | '''<file_info>''':: describes an output file. |
| 246 | | '''<name>''':: the physical file name. |
| 247 | | Typically use <OUTFILE_0>, <OUTFILE_1> etc.; |
| 248 | | this will be replaced with a generated name based on the job name. |
| 249 | | |
| 250 | | '''<file_ref>''' describes an the output file will be referenced by the application. |
| 251 | | '''<open_name>''':: the "logical name" by which your application will reference the file. |
| 252 | | '''<generated_locally/>''':: always include this for output files. |
| 253 | | '''<max_nbytes>''':: maximum file size. |
| 254 | | If the actual size exceeds this, the file will not be uploaded, |
| 255 | | and the job will be marked as an error. |
| 256 | | '''<url>''':: the URL of the file upload handler. |
| 257 | | You may include this explicitly, or use '''<UPLOAD_URL/>''' |
| 258 | | to use the URL in your project's config.xml file. |
| 259 | | '''<optional>''':: if 0 or absent, your application must create the file, |
| 260 | | otherwise the job will be marked as an error. |
| 261 | | '''<no_validate>''':: if true, don't include this file in the result validation process |
| 262 | | (relevant only if you are using the sample bitwise validator). |
| 263 | | |
| 264 | | Note: when a job is created, the name of its output template file is stored in the database. |
| 265 | | The file is read when instances of the job are created, which may happen days or weeks later. |
| 266 | | Thus, editing an output template file can affect existing jobs. |
| 267 | | If this is not desired, you must create a new output template file. |
| 268 | | |
| 269 | | You can safely remove a workunit template file after creating your last WU with it. |
| 270 | | However, you can't delete a result template file until any WU that refers to it is completed |
| 271 | | (i.e. no more replicas will be created). |
| 272 | | |