Changes between Version 31 and Version 32 of CreditNew
- Timestamp:
- Mar 26, 2010, 1:43:06 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
CreditNew
v31 v32 7 7 For GPUs, it's given by a manufacturer-supplied formula. 8 8 9 Other factors, such as the speed of a host's memory system,10 affect application performance.9 Application performance depends on other factors as well, 10 such as the speed of the host's memory system. 11 11 So a given job might take the same amount of CPU time 12 12 on 1 GFLOPS and 10 GFLOPS hosts. … … 19 19 20 20 Notes: 21 22 21 * For our purposes, the peak FLOPS of a device 23 22 uses single or double precision, whichever is higher. … … 26 25 27 26 Some goals in designing a credit system: 28 29 27 * Device neutrality: similar jobs should get similar credit 30 28 regardless of what processor or GPU they run on. 31 32 29 * Project neutrality: different projects should grant 33 30 about the same amount of credit per host, averaged over all hosts. 34 35 31 * Gaming-resistance: there should be a bound on the 36 32 impact of faulty or malicious hosts. … … 79 75 80 76 This system has several problems: 81 82 77 * It doesn't address GPUs properly; projects using GPUs 83 78 have to write custom code. … … 88 83 89 84 * Completely automated - projects don't have to change code, settings, etc. 90 91 85 * Device neutrality 92 93 86 * Limited project neutrality: different projects should grant 94 87 about the same amount of credit per host-hour, averaged over hosts. … … 171 164 After that we use an exponentially-weighted average 172 165 (with appropriate parameter for app version and host) 173 174 166 * A given sample may be wildly off, 175 167 and we can't let this mess up the average. 176 168 Samples after the first are capped at 10 times the current average. 177 178 169 * We keep track of the number of samples, 179 170 and use an average only if its number of samples … … 198 189 * If app.min_avg_pfc is defined then 199 190 200 D = app.min_avg_pfc * wu.fpops_est191 D = app.min_avg_pfc * wu.fpops_est 201 192 202 193 * Otherwise 203 194 204 D = wu.fpops_est195 D = wu.fpops_est 205 196 206 197 == Cross-version normalization == … … 221 212 and at least 2 versions are above sample threshold, 222 213 X is their average (weighted by # samples). 223 224 214 * If there are both, and at least 1 of each is above sample 225 215 threshold, let X be the min of the averages. … … 333 323 The algorithm: 334 324 325 {{{ 335 326 pfc = peak FLOP count(J) 336 327 approx = true; … … 356 347 if Scale(H, V) is defined and (H,V) is not on scale probation 357 348 F *= Scale(H, V) 349 }}} 358 350 359 351 == Claimed and granted credit == … … 370 362 Otherwise: 371 363 364 {{{ 372 365 if app.min_avg_pfc is defined 373 366 C = app.min_avg_pfc*wu.fpops_est 374 367 else 375 368 C = wu.fpops_est * 200/86400e9 369 }}} 376 370 377 371 == Cross-project version normalization == … … 397 391 Projects will export the following data: 398 392 399 for each app version 393 {{{ 394 for each app version 400 395 app name 401 396 platform name … … 403 398 plan class 404 399 scale factor 400 }}} 405 401 406 402 The BOINC server will collect these from several projects 407 403 and will export the following: 408 404 409 for each plan class 405 {{{ 406 for each plan class 410 407 average scale factor (weighted by RAC) 408 }}} 411 409 412 410 We'll provide a script that identifies app versions … … 529 527 R(J, H) = wu.fpops_est * ET^mean^(H, V) 530 528 531 532 529 == Implementation == 533 530