gem5  v20.1.0.0
Public Member Functions | Static Public Attributes | Private Attributes | List of all members
WFBarrier Class Reference

WF barrier slots. More...

#include <compute_unit.hh>

Public Member Functions

 WFBarrier ()
 
int numAtBarrier () const
 
int numYetToReachBarrier () const
 Number of WFs that have not yet reached the barrier. More...
 
int maxBarrierCnt () const
 
void setMaxBarrierCnt (int max_barrier_cnt)
 Set the maximum barrier count (i.e., the number of WFs that are participating in the barrier). More...
 
void incNumAtBarrier ()
 Mark that a WF has reached the barrier. More...
 
bool allAtBarrier () const
 Have all WFs participating in this barrier reached the barrier? If so, then the barrier is satisfied and WFs may proceed past the barrier. More...
 
void decMaxBarrierCnt ()
 Decrement the number of WFs that are participating in this barrier. More...
 
void release ()
 Release this barrier resource so it can be used by other WGs. More...
 
void reset ()
 Reset the barrier. More...
 

Static Public Attributes

static const int InvalidID = -1
 

Private Attributes

int _numAtBarrier
 The number of WFs in the WG that have reached the barrier. More...
 
int _maxBarrierCnt
 The maximum number of WFs that can reach this barrier. More...
 

Detailed Description

WF barrier slots.

This represents the barrier resource for WF-level barriers (i.e., barriers to sync WFs within a WG).

Definition at line 87 of file compute_unit.hh.

Constructor & Destructor Documentation

◆ WFBarrier()

WFBarrier::WFBarrier ( )
inline

Definition at line 90 of file compute_unit.hh.

Member Function Documentation

◆ allAtBarrier()

bool WFBarrier::allAtBarrier ( ) const
inline

Have all WFs participating in this barrier reached the barrier? If so, then the barrier is satisfied and WFs may proceed past the barrier.

Definition at line 143 of file compute_unit.hh.

References _maxBarrierCnt, and _numAtBarrier.

◆ decMaxBarrierCnt()

void WFBarrier::decMaxBarrierCnt ( )
inline

Decrement the number of WFs that are participating in this barrier.

This should be called when a WF exits.

Definition at line 153 of file compute_unit.hh.

References _maxBarrierCnt.

◆ incNumAtBarrier()

void WFBarrier::incNumAtBarrier ( )
inline

Mark that a WF has reached the barrier.

Definition at line 131 of file compute_unit.hh.

References _maxBarrierCnt, and _numAtBarrier.

◆ maxBarrierCnt()

int WFBarrier::maxBarrierCnt ( ) const
inline

Definition at line 112 of file compute_unit.hh.

References _maxBarrierCnt.

◆ numAtBarrier()

int WFBarrier::numAtBarrier ( ) const
inline

Definition at line 97 of file compute_unit.hh.

References _numAtBarrier.

◆ numYetToReachBarrier()

int WFBarrier::numYetToReachBarrier ( ) const
inline

Number of WFs that have not yet reached the barrier.

Definition at line 106 of file compute_unit.hh.

References _maxBarrierCnt, and _numAtBarrier.

◆ release()

void WFBarrier::release ( )
inline

Release this barrier resource so it can be used by other WGs.

This is generally called when a WG has finished.

Definition at line 164 of file compute_unit.hh.

References _maxBarrierCnt, and _numAtBarrier.

◆ reset()

void WFBarrier::reset ( )
inline

Reset the barrier.

This is used to reset the barrier, usually when a dynamic instance of a barrier has been satisfied.

Definition at line 175 of file compute_unit.hh.

References _numAtBarrier.

◆ setMaxBarrierCnt()

void WFBarrier::setMaxBarrierCnt ( int  max_barrier_cnt)
inline

Set the maximum barrier count (i.e., the number of WFs that are participating in the barrier).

Definition at line 122 of file compute_unit.hh.

References _maxBarrierCnt.

Member Data Documentation

◆ _maxBarrierCnt

int WFBarrier::_maxBarrierCnt
private

The maximum number of WFs that can reach this barrier.

This is essentially the number of WFs in the WG, and a barrier is satisfied when the number of WFs that reach the barrier equal this value. If a WF exits early it must decrement this value so that it is no longer considered for this barrier.

Definition at line 195 of file compute_unit.hh.

Referenced by allAtBarrier(), decMaxBarrierCnt(), incNumAtBarrier(), maxBarrierCnt(), numYetToReachBarrier(), release(), and setMaxBarrierCnt().

◆ _numAtBarrier

int WFBarrier::_numAtBarrier
private

The number of WFs in the WG that have reached the barrier.

Once the number of WFs that reach a barrier matches the number of WFs in the WG, the barrier is satisfied.

Definition at line 186 of file compute_unit.hh.

Referenced by allAtBarrier(), incNumAtBarrier(), numAtBarrier(), numYetToReachBarrier(), release(), and reset().

◆ InvalidID

const int WFBarrier::InvalidID = -1
static

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

Generated on Wed Sep 30 2020 14:02:34 for gem5 by doxygen 1.8.17