Changes between Initial Version and Version 1 of AppCoprocessor


Ignore:
Timestamp:
Mar 6, 2008, 3:10:04 PM (16 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AppCoprocessor

    v1 v1  
     1= Managing allocated resources =
     2
     3BOINC has a hardwired model of the following resources:
     4
     5 * CPUs
     6 * physical memory and swap space
     7 * disk space
     8
     9What about other types of resources, such as
     10
     11 * GPU(s)
     12 * SPEs in a Cell processor
     13
     14We'll assume that these resources are "allocated" rather than "scheduled":
     15an application using a resource has it "locked"
     16while the app is in memory,
     17even if the app is suspended by BOINC or descheduled by the OS.
     18
     19== Proposed design ==
     20
     21 1. We define an XML notation for resources.  This might look like
     22{{{
     23<resource>
     24    <type>Cell SPE</type>
     25    <number>6</number>
     26</resource>
     27<resource>
     28    <type>NVIDIA 8800 GPU with 1.7 driver</type>
     29    <number>1</number>
     30</resource>
     31}}}
     32 1. The BOINC client will discover resources, and will pass the resource description in scheduler request messages
     33 1. An app_version record (in the server DB) will have a new field '''resource_requirements''' of the form
     34{{{
     35<resource>
     36    <type>REGEXP</type>
     37    <number>n</number>
     38</resource>
     39...
     40}}}
     41 A host is "compatible" with an app_version if, for each required resource, the host has at least n instances of a resource whose name matches REGEXP.
     42 1. In addition, app_version will have an '''acceleration''' field, representing the (approximate) speedup relative to CPU-only execution.
     43 1. The scheduler will be modified so that, when sending a job to a host, it finds the compatible app_version for which '''acceleration''' is greatest.
     44 1. The scheduler reply will include app_version.resource_requirements and app_version.acceleration.
     45 1. The client will be modified so that it keeps track of resource allocation, i.e. how many instances of each resource are free. It only runs an app if enough instances are available, and it decrements the counts accordingly.
     46 1. The client will be modified to use app_version.acceleration in estimating job completion times.
     47
     48== Possible future additions ==
     49
     50 * Allow app_versions to specify min and max requirements (and have a corresponding allocation scheme in the client).
     51 * Let projects define their own resources, unknown to BOINC, and have "probe" programs (using the assigned-job mechanism) that surveys the resources on each host
     52 * Store the resource descriptions in the DB (or maybe flat files), so that you can study your host population