Changes between Version 5 and Version 6 of RemoteOverview


Ignore:
Timestamp:
Apr 12, 2014, 2:55:28 PM (11 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • RemoteOverview

    v5 v6  
    11[[PageOutline]]
    2 = Remote job submission - overview =
     2= Remote job submission =
    33
    4 In early versions of BOINC, scientists submitted jobs to
    5 a BOINC server by logging in to the server and running programs or scripts.
    6 More recently, BOINC has been used to build systems,
    7 collectively called '''remote job submission''' systems,
    8 in which scientists can submit jobs without logging in to the BOINC server.
     4"Remote job submissions" means that jobs are submitted
     5by scripts or programs running on hosts other than the BOINC server.
    96
    10 In all these systems, job submitters are identified using accounts on the BOINC project
    11 (the same kind of accounts as volunteers; job submitters can also act as resource providers).
    12 Access control is provided by BOINC's [MultiUser multi-user project features]:
    13 users can submit jobs only if they have been given access by project administrators,
    14 and admins can restrict the apps for which each user is allowed to submit jobs.
    15 Users have '''quotas''' how resources are allocated to their jobs.
    16 
    17 The structure and details of remote job submission systems
    18 vary widely.
    19 BOINC doesn't include a pre-packaged remote job submission system,
     7BOINC doesn't include a generic remote job submission system,
    208but it provides a number of components that can be used to build such systems.
    219We'll list some example systems, then describe the components.
    2210
    23 == Example: single-server portal ==
    24 
    25 Users submit jobs using forms on the project web site:
    26 
    27 [[Image(submit2.png)]]
    28 
    29 These forms are application-specific; you must develop them yourself.
    30 Two examples are included in the BOINC distribution:
    31  * '''html/user/tree_threader.php'''
    32  * '''html/user/lammps.php'''
    33 
    34 TODO: the above are full of application-specific complexity;
    35 provide a minimal/generic example.
    36 
    37 The job-submission scripts use [RemoteOverview#LocalPHPinterfaces local PHP interfaces] to
    38 authenticate users and to create jobs and batches.
    39 
    40 Input files can be handled in any of several ways:
    41 
    42  * Uploading them (from the submitter's computer) as part of the submission form.
    43    The submission script would then [JobStage stage them].
    44  * Using the [RemoteInputFiles#Per-userfilesandbox user file sandbox] mechanism.
    45  * Serving them from a remote server.
    46 
    47 == Example: multi-server portal ==
     11== Example: Science portal ==
    4812
    4913Users submit jobs using forms on a web site other than the project web site:
     
    7135== Components supplied by BOINC ==
    7236
    73 === Job submission control panel ===
    74 
    75 The web page '''submit.php''' allows users to view submitted jobs
    76 and retrieve their output files.
    77 This link should be shown only to authorized users.
    78 You can do this, e.g., by putting the following on your home page (index.php):
    79 {{{
    80 $user = get_logged_in_user(false);
    81 if ($user && BoincUserSubmit::lookup_userid($user->id);
    82     echo '
    83         <li><a href=submit.php>Job submission</a>
    84         <li><a href=sandbox.php>File sandbox</a>
    85     ';
    86 }
    87 }}}
    88 (include the "File sandbox" link if you use this feature - see below).
    89 
    90 === Local PHP interfaces ===
    91 
    92 Job-submission scripts to be run on the BOINC server
    93 are best implemented in PHP.
    94 BOINC provides a large set of PHP APIs for accessing the BOINC database,
    95 staging files, and so on.
    96 
    97 For example, you can authorize a job submission request with code like
    98 {{{
    99 $user = get_logged_in_user();
    100 $user_submit = BoincUserSubmit::lookup_userid($user->id);
    101 if (!$user_submit) error_page("no submit access");
    102 $app = BoincApp::lookup("name='lammps'");
    103 if (!$app) error_page("no lammps app");
    104 if (!$user_submit->submit_all) {
    105     $usa = BoincUserSubmitApp::lookup("user_id=$user->id and app_id=$app->id");
    106     if (!$usa) {
    107         error_page("no submit access");
    108     }
    109 }
    110 }}}
    111 
    112 You can create a batch as follows:
    113 {{{
    114 $batch_id = BoincBatch::insert(
    115     "(user_id, create_time, njobs, name, app_id, state)
    116     values ($user->id, $now, $njobs, '$batch_name', $app->id, ".BATCH_STATE_IN_PROGRESS.")"
    117 );
    118 }}}
    119 
    120 '''TODO: document these interfaces, or provide simpler examples.'''
    121 
    12237=== Web RPCs for input file management ===
    12338