Class AAHDSweepChunk

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class AAHDSweepChunk : public opensn::SweepChunk

Fused all-at-once batch runs

Used only by SweepScheduler::ScheduleAlgoAAOFused.

A batch run sweeps every level of every member angle set as one uninterrupted sequence of fused kernel launches on a lane’s stream. Several lanes run at once. Angle sets that become ready later, for example when upstream angular fluxes arrive from another rank, start on a free lane. They do not wait for the runs already in flight.

inline std::size_t NumFusedLanes() const

Return the number of lanes, which is DiscreteOrdinatesProblem::GetFusedAAOLanes.

inline crb::Stream &GetLaneStream(std::size_t lane)

Return the stream of a lane.

The members of a run on that lane use it for their FLUDS copies.

Parameters:

lane – Lane index.

Returns:

Stream of the lane.

void SubmitBatchRun(std::size_t lane, const std::vector<AAHD_AngleSet*> &batch)

Enqueue a batch run on an idle lane and return without waiting.

The run sweeps every level of every angle set in the batch, followed by their completion copies (AAHD_AngleSet::SubmitCompletionCopies). Every member must have been prepared for this lane with AAHD_AngleSet::PrepareForBatch.

Parameters:
  • lane – Index of an idle lane.

  • batch – Angle sets of the run.

inline bool IsLaneIdle(std::size_t lane)

Check whether a lane is idle.

Parameters:

lane – Lane index.

Returns:

True when all work submitted to the lane has completed.

Public Functions

AAHDSweepChunk(DiscreteOrdinatesProblem &problem, LBSGroupset &groupset)
inline DiscreteOrdinatesProblem &GetProblem()
inline MeshContinuum &GetGrid()
inline const LBSGroupset &GetGroupset() const
virtual void Sweep(AngleSet &angle_set) override

Sweep chunks should override this.

Protected Attributes

DiscreteOrdinatesProblem &problem_