Changes between Version 3 and Version 4 of AutoFlops
- Timestamp:
- Sep 21, 2009, 11:12:00 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AutoFlops
v3 v4 10 10 == App units == 11 11 12 '''App units''' are a project-defined measure of how much computation a completed job did.12 '''App units''' are a project-defined, application-specific measure of computation. 13 13 They are typically a count of iterations of the app's main loop. 14 They should be approximately proportional to FLOPs performed,14 They should be roughly proportional to FLOPs performed, 15 15 but it doesn't matter what the proportion is 16 16 (i.e., you don't have to count the FLOPs in your main loop). … … 38 38 39 39 The predictions don't have to be exact. 40 In fact, it's OK if they're systematically too high or low, 41 as long as there's a linear correlation. 40 In fact, it's OK if they're systematically too high or low. 42 41 However, if predicted app units are not linearly correlated with 43 42 actual app units, bad completion time estimates will result. … … 50 49 == Job completion time estimates and bounds == 51 50 52 The BOINC client maintains a per-app-version estimate seconds_per_app_unit; 53 The completion time estimate of a job J is 54 {{{ 55 seconds_per_app_unit 51 The BOINC client maintains a estimate '''seconds_per_app_unit(V)''' 52 of elapsed time per app unit for the app version V. 53 It reports this to the scheduler. 54 55 The scheduler's completion time estimate for a job J 56 using app version V on a given host is 57 {{{ 58 seconds_per_app_unit(V) 56 59 * J.predicted_aus 57 60 * (app.mean_actual_aus/app.mean_predicted_aus + X*au_stdev) … … 66 69 == Estimating FLOPS per app unit == 67 70 68 For credit-granting purposes 69 we want to estimate the number of FLOPs per app unit. 71 For credit-granting purposes we want to estimate the number of FLOPs per app unit. 70 72 71 73 When the scheduler dispatches a job, … … 79 81 The server sends the client peak_flops_per_sec(J). 80 82 When the client returns a job, it includes a value 81 raw_flops_per_sec(J).83 '''raw_flops_per_sec(J)'''. 82 84 This is usually the same as peak_flops_per_sec(J) 83 85 but it may be less (see note 2 below). … … 85 87 Suppose a job J is executed on a given host using app version V, 86 88 and that it reports A app units and uses elapsed time T. 87 We then define raw_flops(J) as T * raw_flops_per_sec(J). 88 We define raw_flops_per_au(J) as raw_flops(J)/A. 89 We then define 90 {{{ 91 raw_flops(J) = T * raw_flops_per_sec(J) 92 raw_flops_per_au(J) = raw_flops(J)/A 93 }}} 89 94 90 95 If we run jobs on lots of different hosts, … … 156 161 and aborting or discarding others. 157 162 158 This can be discouraged either by mechanisms 159 that reduce the number of jobs/day when a job is aborted or times out. 163 This can be discouraged by server mechanisms: 164 165 * reducing the number of jobs/day when a job is aborted or times out. 166 * resend jobs. 160 167 161 168 == Anonymous platform notes ==