gem5
v20.1.0.0
|
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... | |
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.
|
inline |
Definition at line 90 of file compute_unit.hh.
|
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.
|
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.
|
inline |
Mark that a WF has reached the barrier.
Definition at line 131 of file compute_unit.hh.
References _maxBarrierCnt, and _numAtBarrier.
|
inline |
Definition at line 112 of file compute_unit.hh.
References _maxBarrierCnt.
|
inline |
Definition at line 97 of file compute_unit.hh.
References _numAtBarrier.
|
inline |
Number of WFs that have not yet reached the barrier.
Definition at line 106 of file compute_unit.hh.
References _maxBarrierCnt, and _numAtBarrier.
|
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.
|
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.
|
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.
|
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().
|
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().
|
static |
Definition at line 94 of file compute_unit.hh.
Referenced by Wavefront::barrierId(), ComputeUnit::barrierSlot(), ComputeUnit::dispWorkgroup(), Gcn3ISA::Inst_SOPP__S_ENDPGM::execute(), Wavefront::hasBarrier(), Wavefront::releaseBarrier(), and ComputeUnit::startWavefront().