|
Orrery
A GPU-accelerated N-body gravitational simulator
|
One worker's record, accumulated over every region since the last reset. More...
#include <orrery/backend/worker_statistics.hpp>
Public Attributes | |
| std::uint64_t | chunks {} |
| How many chunks of work this worker executed. | |
| std::uint64_t | items {} |
| How many items those chunks covered, an item being one index of the range the caller asked to have divided up. | |
| std::uint64_t | steals {} |
| How many of those chunks were taken from another worker's range. | |
| Duration | busy {} |
| Time spent inside the caller's work. | |
| Duration | idle {} |
| Time inside a parallel region spent not working, as defined above. | |
One worker's record, accumulated over every region since the last reset.
| std::uint64_t orrery::backend::WorkerStatistics::items {} |
How many items those chunks covered, an item being one index of the range the caller asked to have divided up.
For the direct solver that is one particle, but the scheduler does not know or need to know that.
This is the work-completed half of what Phase 6 reports. Under static partitioning it is the same for every worker by construction, which is the entire problem: the fast cores are given no more to do than the slow ones, so they finish early and wait.
| std::uint64_t orrery::backend::WorkerStatistics::steals {} |
How many of those chunks were taken from another worker's range.
Zero for every scheme that does not steal. For the work-stealing executor it is the direct evidence that dynamic balancing happened, and its distribution across workers should show the performance cores taking work from the efficiency cores rather than the reverse.