| 2 | |
| 3 | NOTE: this document is outdated because of development in the 6.4 client |
| 4 | to handle GPU and multithread apps. |
| 5 | Changes include: |
| 6 | |
| 7 | 0) app versions now include avg_ncpus, coprocessor usage, and |
| 8 | a FLOPS estimate (this defaults to the CPU benchmark, |
| 9 | but for GPU and multithread apps it will be different). |
| 10 | This info is sent from the server. |
| 11 | |
| 12 | 1) Estimating the duration of unstarted jobs: |
| 13 | jobs are now associated with specific app versions. |
| 14 | The estimated duration of an unstarted job is the WU's |
| 15 | FLOP estimate divided by the app version's FLOPS, |
| 16 | scaled by the duration correction factor. |
| 17 | |
| 18 | 2) Duration correction factor: this is now based on elapsed time |
| 19 | (i.e. wall time during which the job has been running) rather than CPU time. |
| 20 | Yes, this is affected by non-BOINC CPU load; that's as it should be. |
| 21 | |
| 22 | 3) "CPU efficiency" is no longer maintained; it's subsumed in DCF. |
| 23 | |
| 24 | 4) Estimating the duration of running jobs: |
| 25 | this is a weighted average of static and dynamic estimates. |
| 26 | The dynamic estimate is now based on elapsed time rather than CPU time. |
| 27 | So if a GPU job has been running for 5 min, is 25% done, |
| 28 | and has used 1 min of CPU, its dynamic estimate is 20 min (not 4 min). |
| 29 | |
| 30 | 5) round-robin simulation: this was modified to reflect multi-thread |
| 31 | and coproc apps (e.g., if the host has 1 GPU, only one coproc app |
| 32 | can run at a time). |
| 33 | If CPUs are idle because coprocs are in use, |
| 34 | don't count it towards CPU shortfall. |
| 35 | |
| 36 | 6) scheduler_cpus() and enforce_schedule() take coprocs and |
| 37 | avg_ncpus into account. They try to keep GPUs busy if possible. |
| 38 | |
| 39 | --------------- |