Changes between Initial Version and Version 1 of GpuSync


Ignore:
Timestamp:
Nov 5, 2010, 3:11:01 PM (14 years ago)
Author:
davea
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • GpuSync

    v1 v1  
     1= Support for synchronous GPU apps =
     2
     3GPU apps run much faster, like 2X,
     4if their CPU and GPU parts synchronize using busy-waiting instead of interrupts.
     5(Busy-waiting means it uses 100% of a CPU,
     6and this process runs at normal OS scheduling priority.)
     7E.g. you might get a 100 GFLOPS increase in GPU speed
     8at the expense of 5 GFLOPS of CPU speed.
     9
     10However, many volunteers do not want this behavior,
     11so we can't make it the default.
     12
     13This raises several issues:
     14
     15== What is the volunteer interface? ==
     16
     17Possibilities:
     18 * A new preference.
     19   Pros: automatically propagated; available to server.
     20   Cons: too many prefs already.
     21 * Config file flag.
     22   Pros: simple.
     23   Cons: nor propagated.
     24
     25I'd lean towards a new pref.
     26
     27Gianni suggested adding a new "Use GPU Full Speed" item to
     28the activity menu, but this isn't practical - among other things,
     29it would prevent the use of GPU prefs like
     30"don't use GPU when computer is in use".
     31
     32What are the semantics?
     33If the user changes the pref (or config option)
     34should running GPU jobs change their synch mode?
     35What about unstarted jobs?
     36
     37== How does it affect apps? ==
     38
     39Should there be separate app versions for the 2 types of synch?
     40No; that would prevent users from changing mode mid-job.
     41Apps should be able to do either type of synch, based on a flag in APP_INIT_DATA.
     42Let's call such app versions '''synch-selectable'''.
     43
     44BOINC needs to know whether a given app version is synch-selectable.
     45We'll do this with an element in the app version's XML doc
     46(update_versions will have to be changed to support this).
     47
     48== How does it affect server scheduling? ==
     49
     50What avg_ncpus does the scheduler report?
     51
     52What avg_ncpus does it use in accounting the CPU seconds for jobs sent?
     53
     54How is job completion time estimation impacted?
     55(potentially not at all - the system will adapt).
     56
     57== How does it affect client scheduling? ==
     58
     59Let's assume that app_version.avg_ncpus is the non-busywait value (e.g. 0.1 or so).
     60
     61If the full-speed pref is set,
     62and the app version is synch-selectable,
     63then the client needs to set avg_ncpus to 1.
     64Otherwise we'll overcommit the CPUs.
     65(Note: we need to save the original avg_ncpus somewhere,
     66in case the user turns off the pref).