| | 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 | --------------- |