mirror of https://github.com/BOINC/boinc.git
137 lines
4.3 KiB
PHP
137 lines
4.3 KiB
PHP
<?
|
|
require_once("docutil.php");
|
|
page_head("Generating work");
|
|
echo "
|
|
<p>
|
|
Workunits and results can be created using either a utility program
|
|
or a C++ function.
|
|
In either case you must first <a href=key_setup.html>generate a key pair</a>
|
|
for file upload authentication.
|
|
<hr>
|
|
The utility program is
|
|
<pre>
|
|
create_work
|
|
-appname name // application name
|
|
-wu_name name // workunit name
|
|
-wu_template filename // WU template filename
|
|
-result_template filename // result template filename
|
|
-redundancy n // # of results to create
|
|
-db_name x // database name
|
|
-db_passwd x // database password
|
|
-upload_url x // URL for output file upload
|
|
-download_url x // base URL for input file download
|
|
-download_dir x // where to move input files
|
|
-rsc_fpops x // est. # floating-point ops
|
|
-rsc_iops x // est. # integer ops
|
|
-rsc_memory x // est. RAM working set size, bytes
|
|
-rsc_disk x // est. disk space required
|
|
-keyfile x // path of upload private key
|
|
-delay_bound x // delay bound for result completion
|
|
infile_1 ... infile_m // input files
|
|
</pre>
|
|
<p>
|
|
The WU template file has the form
|
|
<pre>
|
|
[ <file_info>...</file_info> ]
|
|
[ ... ]
|
|
<workunit>
|
|
[ <command_line>-flags xyz</command_line> ]
|
|
[ <env_vars>name=val&name=val</env_vars> ]
|
|
[ <max_processing>...</max_processing> ]
|
|
[ <max_disk>...</max_disk> ]
|
|
[ <file_ref>...</file_ref> ]
|
|
[ ... ]
|
|
</workunit>
|
|
</pre>
|
|
The components are:
|
|
<table border=1 cellpadding=6>
|
|
<tr><td><command_line></td>
|
|
<td>The command-line arguments to be passed to the main program.
|
|
</td></tr>
|
|
<tr><td><env_vars></td>
|
|
<td>A list of environment variables in the form
|
|
name=value&name=value&name=value.
|
|
</td></tr>
|
|
<tr><td valign=top><max_processing></td>
|
|
<td>Maximum processing
|
|
(measured in <a href=credit.html>Cobblestones</a>).
|
|
An instance of the computation that exceeds this bound will be aborted.
|
|
This mechanism prevents an infinite-loop bug from
|
|
indefinitely incapacitating a host.
|
|
The default is determined by the client; typically it is 1.
|
|
</td></tr>
|
|
<tr><td><max_disk></td>
|
|
<td>Maximum disk usage (in bytes).
|
|
The default is determined by the client; typically it is 1,000,000.
|
|
</td></tr>
|
|
<tr><td><file_ref></td>
|
|
<td> describes a <a href=files.html>reference</a> to an input file,
|
|
each of which is described by a <b><file_info></b> element.
|
|
</td></tr></table>
|
|
<p>
|
|
The workunit template file is processed as follows:
|
|
<ul>
|
|
<li>
|
|
Within a <file_info> element,
|
|
<number>x</number> identifies the order of the file.
|
|
It is replaced with elements giving
|
|
the filename, download URL, MD5 checksum, and size.
|
|
file.
|
|
<li>
|
|
Within a <file_ref> element,
|
|
<file_number>x</file_number> is replaced with the filename.
|
|
</ul>
|
|
<p>
|
|
The result file template is macro-substituted as follows:
|
|
<ul>
|
|
<li>
|
|
<OUTFILE_n> is replaced with a string of the form
|
|
'wuname_resultnum_n' where wuname is the workunit name and resultnum is
|
|
the ordinal number of the result (0, 1, ...).
|
|
<li>
|
|
<UPLOAD_URL> is replaced with the upload URL.
|
|
</ul>
|
|
<p>
|
|
<hr>
|
|
<p>
|
|
The C++ library (backend_lib.C,h) provides the functions:
|
|
<pre>
|
|
int read_key_file(char* path, R_RSA_PRIVATE_KEY& key);
|
|
|
|
int create_work(
|
|
WORKUNIT&,
|
|
char* wu_template, // contents, not path
|
|
char* result_template_filename, // path
|
|
int redundancy,
|
|
char* infile_dir, // where input files are
|
|
char** infiles, // array of input file names
|
|
int ninfiles
|
|
R_RSA_PRIVATE_KEY& key, // upload authentication key
|
|
char* upload_url,
|
|
char* download_url
|
|
);
|
|
</pre>
|
|
<p>
|
|
<b>read_key_file()</b> reads a private key from a file.
|
|
Use this to read the file upload authentication key.
|
|
<p>
|
|
<b>create_work()</b>
|
|
creates a workunit and one or more results.
|
|
The arguments are similar to those of the utility program;
|
|
some of the information is passed in the WORKUNIT structure,
|
|
namely the following fields:
|
|
<pre>
|
|
name
|
|
appid
|
|
batch
|
|
rsc_fpops
|
|
rsc_iops
|
|
rsc_memory
|
|
rsc_disk
|
|
delay_bound
|
|
</pre>
|
|
All other fields should be zeroed.
|
|
";
|
|
page_tail();
|
|
?>
|