Wildmeshing Toolkit
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
wmtk::ExecutePass< AppMesh >::PassStats Struct Reference

What the last pass cost in contention, as opposed to in work. More...

#include <ExecutionScheduler.hpp>

Public Member Functions

PassStats & operator+= (const PassStats &o)
 

Public Attributes

size_t lock_failures = 0
 
size_t overflowed = 0
 Operations that exhausted max_retry_limit and were pushed to the post-barrier queue.
 
size_t final_queue_size = 0
 Size of that queue once every task had finished.
 
double parallel_seconds = 0.
 
double serial_tail_seconds = 0.
 
double busiest_task_seconds = 0.
 
double idlest_task_seconds = 0.
 
size_t rounds = 1
 

Detailed Description

template<class AppMesh>
struct wmtk::ExecutePass< AppMesh >::PassStats

What the last pass cost in contention, as opposed to in work.

Populated by every operator() call, so under run_localized_to_convergence it describes the most recent round only. Zeroed at the start of each pass. A screened pass (screen_before_commit) adds up the commit phases of all its rounds – the busiest and idlest task times too, one round's after another's – and a round committed inline, on the calling thread, counts as serial tail.

Member Data Documentation

◆ busiest_task_seconds

template<class AppMesh >
double wmtk::ExecutePass< AppMesh >::PassStats::busiest_task_seconds = 0.

Busy time of the longest- and shortest-running task. A wide gap means the partitions split the work unevenly: a task drains a partition alone, so with one partition per thread the tail is one thread (cut the mesh finer to balance it).

◆ lock_failures

template<class AppMesh >
size_t wmtk::ExecutePass< AppMesh >::PassStats::lock_failures = 0

Operations that could not claim their ring and were requeued. Counts attempts, so one stubborn operation can contribute up to max_retry_limit.

◆ parallel_seconds

template<class AppMesh >
double wmtk::ExecutePass< AppMesh >::PassStats::parallel_seconds = 0.

Wall time inside the parallel region, and in the serial drain that follows it. The pass is billed as "parallel" in the driver's log line, but it is the sum of these.

◆ rounds

template<class AppMesh >
size_t wmtk::ExecutePass< AppMesh >::PassStats::rounds = 1

Rounds the parallel region took: more than one when the tasks ran through their slot budgets and the storage had to grow between rounds. For a screened pass, the most any one commit took.


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