Orrery
A GPU-accelerated N-body gravitational simulator
Loading...
Searching...
No Matches
orrery::backend::WorkerStatistics Struct Reference

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.

Detailed Description

One worker's record, accumulated over every region since the last reset.

Member Data Documentation

◆ items

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.

◆ steals

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.


The documentation for this struct was generated from the following file: