32#ifndef __GPU_COMPUTE_WAVEFRONT_HH__
33#define __GPU_COMPUTE_WAVEFRONT_HH__
39#include <unordered_map>
42#include "arch/gpu_isa.hh"
47#include "config/the_gpu_isa.hh"
54#include "params/Wavefront.hh"
263 void start(uint64_t _wfDynId, uint64_t _base_ptr);
279 void setWaitCnts(
int vm_wait_cnt,
int exp_wait_cnt,
int lgkm_wait_cnt);
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
this represents a slice of the overall LDS, intended to be associated with an individual workgroup
Abstract superclass for simulation objects.
bool isOldestInstWaitcnt()
void reserveGmResource(GPUDynInstPtr ii)
std::vector< Addr > lastAddr
void setStatus(status_e newStatus)
void validateRequestCounters()
bool isOldestInstPrivMem()
bool isOldestInstScalarMem()
Wavefront(const Params &p)
bool isOldestInstBarrier()
void resizeRegFiles(int num_vregs, int num_sregs)
TheGpuISA::GPUISA & gpuISA()
int scalarOutstandingReqsWrGm
std::vector< uint32_t > oldVgpr
void initRegState(HSAQueueEntry *task, int wgSizeInWorkItems)
void setSleepTime(int sleep_time)
ComputeUnit * computeUnit
std::vector< uint32_t > workItemFlatId
int vmWaitCnt
the following are used for waitcnt instructions vmWaitCnt: once set, we wait for the oustanding numbe...
std::vector< int > vecReads
std::deque< GPUDynInstPtr > instructionBuffer
bool isLmInstruction(GPUDynInstPtr ii)
GPUDynInstPtr nextInstr()
std::vector< uint32_t > workItemId[3]
std::vector< uint64_t > oldDgpr
bool isOldestInstScalarALU()
bool isOldestInstFlatMem()
void decVMemInstsIssued()
void computeActualWgSz(HSAQueueEntry *task)
void setWaitCnts(int vm_wait_cnt, int exp_wait_cnt, int lgkm_wait_cnt)
void setParent(ComputeUnit *cu)
std::unordered_map< int, uint64_t > rawDist
std::vector< int > reserveResources()
void decLGKMInstsIssued()
void incLGKMInstsIssued()
virtual void init()
init() is called after all C++ SimObjects have been created and all ports are connected.
bool isOldestInstVectorALU()
int scalarOutstandingReqsRdGm
void incVMemInstsIssued()
void reserveLmResource(GPUDynInstPtr ii)
@ S_BARRIER
WF is stalled at a barrier.
@ S_WAITCNT
wavefront has unsatisfied wait counts
gem5::Wavefront::WavefrontStats stats
void freeRegisterFile()
Freeing VRF space.
bool isGmInstruction(GPUDynInstPtr ii)
void start(uint64_t _wfDynId, uint64_t _base_ptr)
TheGpuISA::GPUISA _gpuISA
A simple distribution stat.
This is a simple scalar statistic, like a counter.
The GPUDispatcher is the component of the shader that is responsible for creating and dispatching WGs...
HSAQueuEntry is the simulator's internal representation of an AQL queue entry (task).
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::shared_ptr< GPUDynInst > GPUDynInstPtr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
uint64_t Tick
Tick count type.
std::bitset< std::numeric_limits< unsigned long long >::digits > VectorMask
Declaration of Statistics objects.
statistics::Scalar numTimesBlockedDueRAWDependencies
statistics::Scalar schResourceStalls
WavefrontStats(statistics::Group *parent)
statistics::Distribution vecRawDistance
statistics::Distribution readsPerWrite
statistics::Scalar schCycles
statistics::Scalar numTimesBlockedDueWAXDependencies
statistics::Scalar schRfAccessStalls
statistics::Scalar schOpdNrdyStalls
statistics::Scalar numInstrExecuted
statistics::Scalar schStalls
statistics::Scalar schLdsArbStalls