Go to the documentation of this file.
41 #ifndef __GPU_COMPUTE_HSA_QUEUE_ENTRY__
42 #define __GPU_COMPUTE_HSA_QUEUE_ENTRY__
54 #include "enums/GfxVersion.hh"
65 Addr host_pkt_addr,
Addr code_addr, GfxVersion gfx_version)
80 kernargAddress(((_hsa_dispatch_packet_t*)disp_pkt)->kernarg_address),
82 _ldsSize((
int)((_hsa_dispatch_packet_t*)disp_pkt)->
85 private_segment_size),
103 if (gfx_version == GfxVersion::gfx90a) {
104 numVgprs = (akc->granulated_workitem_vgpr_count + 1) * 8;
106 numVgprs = (akc->granulated_workitem_vgpr_count + 1) * 4;
111 std::numeric_limits<decltype(akc->wavefront_sgpr_count)>::max()) {
113 uint16_t version = akc->amd_machine_version_major;
114 assert((version == 0) || (version == 8) || (version == 9));
119 if ((version == 0) || (version == 8)) {
121 numSgprs = (akc->granulated_wavefront_sgpr_count + 1) * 8;
122 }
else if (version == 9) {
123 numSgprs = ((akc->granulated_wavefront_sgpr_count + 1) * 16)/2;
505 #endif // __GPU_COMPUTE_HSA_QUEUE_ENTRY__
void parseKernelCode(AMDKernelCode *akc)
uint32_t enable_vgpr_workitem_id
int privMemPerItem() const
uint32_t enable_sgpr_workgroup_id_x
Addr completionSignal() const
uint32_t enable_sgpr_dispatch_id
uint32_t enable_sgpr_grid_workgroup_count_z
uint32_t enable_sgpr_dispatch_ptr
uint32_t enable_sgpr_private_segment_wave_byte_offset
int _outstandingInvs
Number of outstanding invs for the kernel.
uint32_t enable_sgpr_workgroup_id_z
void wgId(int dim, int val)
uint32_t enable_sgpr_private_segment_buffer
int numScalarRegs() const
uint32_t enable_sgpr_private_segment_size
int numWgAtBarrier() const
_amd_queue_t amdQueue
Keep a copy of the AMD HSA queue because we need info from some of its fields to initialize register ...
int numWgArrivedAtBarrier
bool isInvStarted()
Whether invalidate has started or finished -1 is the initial value indicating inv has not started for...
void markInvDone()
Forcefully change the state to be inv done.
uint32_t enable_sgpr_workgroup_info
int numVectorRegs() const
uint32_t enable_sgpr_flat_scratch_init
bool vgprBitEnabled(int bit) const
std::array< int, MAX_DIM > _numWg
uint32_t enable_sgpr_kernarg_segment_ptr
bool isInvDone() const
Is invalidate done?
Addr hostDispPktAddr() const
void updateOutstandingInvs(int val)
update the number of pending invalidate requests
int wgSize(int dim) const
uint32_t enable_sgpr_queue_ptr
bool dispComplete() const
std::array< int, MAX_DIM > _gridSize
int gridSize(int dim) const
Addr hostAMDQueueAddr
Host-side addr of the amd_queue_t on which this task was queued.
std::bitset< NumScalarInitFields > initialSgprState
int numWgCompleted() const
std::bitset< NumVectorInitFields > initialVgprState
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
static constexpr T divCeil(const T &a, const U &b)
const std::string & kernelName() const
int outstandingWbs() const
uint32_t enable_sgpr_workgroup_id_y
void updateOutstandingWbs(int val)
Update the number of pending writeback requests.
HSAQueueEntry(std::string kernel_name, uint32_t queue_id, int dispatch_id, void *disp_pkt, AMDKernelCode *akc, Addr host_pkt_addr, Addr code_addr, GfxVersion gfx_version)
bool sgprBitEnabled(int bit) const
int _outstandingWbs
Number of outstanding wbs for the kernel values: 0: 1)initial value, flush has not started for the ke...
std::array< int, MAX_DIM > _wgSize
uint32_t enable_sgpr_grid_workgroup_count_y
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
std::array< int, MAX_DIM > _wgId
uint32_t enable_sgpr_grid_workgroup_count_x
Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17