gem5  [DEVELOP-FOR-23.0]
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
hsa_queue_entry.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2018 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
41 #ifndef __GPU_COMPUTE_HSA_QUEUE_ENTRY__
42 #define __GPU_COMPUTE_HSA_QUEUE_ENTRY__
43 
44 #include <bitset>
45 #include <cstdint>
46 #include <cstring>
47 #include <iostream>
48 #include <vector>
49 
50 #include "base/intmath.hh"
51 #include "base/types.hh"
52 #include "dev/hsa/hsa_packet.hh"
53 #include "dev/hsa/hsa_queue.hh"
54 #include "enums/GfxVersion.hh"
56 
57 namespace gem5
58 {
59 
61 {
62  public:
63  HSAQueueEntry(std::string kernel_name, uint32_t queue_id,
64  int dispatch_id, void *disp_pkt, AMDKernelCode *akc,
65  Addr host_pkt_addr, Addr code_addr, GfxVersion gfx_version)
66  : kernName(kernel_name),
67  _wgSize{{(int)((_hsa_dispatch_packet_t*)disp_pkt)->workgroup_size_x,
68  (int)((_hsa_dispatch_packet_t*)disp_pkt)->workgroup_size_y,
69  (int)((_hsa_dispatch_packet_t*)disp_pkt)->workgroup_size_z}},
70  _gridSize{{(int)((_hsa_dispatch_packet_t*)disp_pkt)->grid_size_x,
71  (int)((_hsa_dispatch_packet_t*)disp_pkt)->grid_size_y,
72  (int)((_hsa_dispatch_packet_t*)disp_pkt)->grid_size_z}},
73  numVgprs(akc->workitem_vgpr_count),
74  numSgprs(akc->wavefront_sgpr_count),
75  _queueId(queue_id), _dispatchId(dispatch_id), dispPkt(disp_pkt),
76  _hostDispPktAddr(host_pkt_addr),
77  _completionSignal(((_hsa_dispatch_packet_t*)disp_pkt)
78  ->completion_signal),
79  codeAddress(code_addr),
80  kernargAddress(((_hsa_dispatch_packet_t*)disp_pkt)->kernarg_address),
82  _ldsSize((int)((_hsa_dispatch_packet_t*)disp_pkt)->
83  group_segment_size),
84  _privMemPerItem((int)((_hsa_dispatch_packet_t*)disp_pkt)->
85  private_segment_size),
86  _contextId(0), _wgId{{ 0, 0, 0 }},
88  _globalWgId(0), dispatchComplete(false)
89 
90  {
91  // Precompiled BLIT kernels actually violate the spec a bit
92  // and don't set many of the required akc fields. For these kernels,
93  // we need to rip register usage from the resource registers.
94  //
95  // We can't get an exact number of registers from the resource
96  // registers because they round, but we can get an upper bound on it.
97  // We determine the number of registers by solving for "vgprs_used"
98  // in the LLVM docs: https://www.llvm.org/docs/AMDGPUUsage.html
99  // #code-object-v3-kernel-descriptor
100  // Currently, the only supported gfx version in gem5 that computes
101  // this differently is gfx90a.
102  if (!numVgprs) {
103  if (gfx_version == GfxVersion::gfx90a) {
104  numVgprs = (akc->granulated_workitem_vgpr_count + 1) * 8;
105  } else {
106  numVgprs = (akc->granulated_workitem_vgpr_count + 1) * 4;
107  }
108  }
109 
110  if (!numSgprs || numSgprs ==
111  std::numeric_limits<decltype(akc->wavefront_sgpr_count)>::max()) {
112  // Supported major generation numbers: 0 (BLIT kernels), 8, and 9
113  uint16_t version = akc->amd_machine_version_major;
114  assert((version == 0) || (version == 8) || (version == 9));
115  // SGPR allocation granularies:
116  // - GFX8: 8
117  // - GFX9: 16
118  // Source: https://llvm.org/docs/AMDGPUUsage.html
119  if ((version == 0) || (version == 8)) {
120  // We assume that BLIT kernels use the same granularity as GFX8
121  numSgprs = (akc->granulated_wavefront_sgpr_count + 1) * 8;
122  } else if (version == 9) {
123  numSgprs = ((akc->granulated_wavefront_sgpr_count + 1) * 16)/2;
124  }
125  }
126 
127  initialVgprState.reset();
128  initialSgprState.reset();
129 
130  for (int i = 0; i < MAX_DIM; ++i) {
132  _numWgTotal *= _numWg[i];
133  }
134 
135  parseKernelCode(akc);
136  }
137 
138  const std::string&
139  kernelName() const
140  {
141  return kernName;
142  }
143 
144  int
145  wgSize(int dim) const
146  {
147  assert(dim < MAX_DIM);
148  return _wgSize[dim];
149  }
150 
151  int
152  gridSize(int dim) const
153  {
154  assert(dim < MAX_DIM);
155  return _gridSize[dim];
156  }
157 
158  int
160  {
161  return numVgprs;
162  }
163 
164  int
166  {
167  return numSgprs;
168  }
169 
170  uint32_t
171  queueId() const
172  {
173  return _queueId;
174  }
175 
176  int
177  dispatchId() const
178  {
179  return _dispatchId;
180  }
181 
182  void*
184  {
185  return dispPkt;
186  }
187 
188  Addr
190  {
191  return _hostDispPktAddr;
192  }
193 
194  Addr
196  {
197  return _completionSignal;
198  }
199 
200  Addr
201  codeAddr() const
202  {
203  return codeAddress;
204  }
205 
206  Addr
207  kernargAddr() const
208  {
209  return kernargAddress;
210  }
211 
212  int
213  ldsSize() const
214  {
215  return _ldsSize;
216  }
217 
218  int privMemPerItem() const { return _privMemPerItem; }
219 
220  int
221  contextId() const
222  {
223  return _contextId;
224  }
225 
226  bool
227  dispComplete() const
228  {
229  return dispatchComplete;
230  }
231 
232  int
233  wgId(int dim) const
234  {
235  assert(dim < MAX_DIM);
236  return _wgId[dim];
237  }
238 
239  void
240  wgId(int dim, int val)
241  {
242  assert(dim < MAX_DIM);
243  _wgId[dim] = val;
244  }
245 
246  int
247  globalWgId() const
248  {
249  return _globalWgId;
250  }
251 
252  void
254  {
255  _globalWgId = val;
256  }
257 
258  int
259  numWg(int dim) const
260  {
261  assert(dim < MAX_DIM);
262  return _numWg[dim];
263  }
264 
265  void
267  {
268  ++_numWgCompleted;
269  }
270 
271  int
273  {
274  return _numWgCompleted;
275  }
276 
277  int
278  numWgTotal() const
279  {
280  return _numWgTotal;
281  }
282 
283  void
285  {
286  ++_wgId[0];
287  ++_globalWgId;
288 
289  if (wgId(0) * wgSize(0) >= gridSize(0)) {
290  _wgId[0] = 0;
291  ++_wgId[1];
292 
293  if (wgId(1) * wgSize(1) >= gridSize(1)) {
294  _wgId[1] = 0;
295  ++_wgId[2];
296 
297  if (wgId(2) * wgSize(2) >= gridSize(2)) {
298  dispatchComplete = true;
299  }
300  }
301  }
302  }
303 
304  int
306  {
307  return numWgArrivedAtBarrier;
308  }
309 
310  bool vgprBitEnabled(int bit) const
311  {
312  return initialVgprState.test(bit);
313  }
314 
315  bool sgprBitEnabled(int bit) const
316  {
317  return initialSgprState.test(bit);
318  }
319 
325 
332 
333  // the maximum number of dimensions for a grid or workgroup
334  const static int MAX_DIM = 3;
335 
336  /* getter */
337  int
339  return _outstandingInvs;
340  }
341 
347  bool
349  {
350  return (_outstandingInvs != -1);
351  }
352 
358  void
360  {
362  assert(_outstandingInvs >= 0);
363  }
364 
368  void
370  {
371  _outstandingInvs = 0;
372  }
373 
377  bool
378  isInvDone() const
379  {
380  assert(_outstandingInvs >= 0);
381  return (_outstandingInvs == 0);
382  }
383 
384  int
386  {
387  return _outstandingWbs;
388  }
389 
395  void
397  {
398  _outstandingWbs += val;
399  assert(_outstandingWbs >= 0);
400  }
401 
402  private:
403  void
405  {
412  akc->enable_sgpr_queue_ptr);
437 
442  initialVgprState.set(WorkitemIdX, true);
445  }
446 
447  // name of the kernel associated with the AQL entry
448  std::string kernName;
449  // workgroup Size (3 dimensions)
450  std::array<int, MAX_DIM> _wgSize;
451  // grid Size (3 dimensions)
452  std::array<int, MAX_DIM> _gridSize;
453  // total number of VGPRs per work-item
454  int numVgprs;
455  // total number of SGPRs per wavefront
456  int numSgprs;
457  // id of AQL queue in which this entry is placed
458  uint32_t _queueId;
460  // raw AQL packet pointer
461  void *dispPkt;
462  // host-side addr of the dispatch packet
464  // pointer to bool
466  // base address of the raw machine code
468  // base address of the kernel args
487  int _ldsSize;
490  std::array<int, MAX_DIM> _wgId;
491  std::array<int, MAX_DIM> _numWg;
494  // The number of completed work groups
498 
499  std::bitset<NumVectorInitFields> initialVgprState;
500  std::bitset<NumScalarInitFields> initialSgprState;
501 };
502 
503 } // namespace gem5
504 
505 #endif // __GPU_COMPUTE_HSA_QUEUE_ENTRY__
gem5::_amd_queue_t
Definition: hsa_queue.hh:64
gem5::HSAQueueEntry::numWg
int numWg(int dim) const
Definition: hsa_queue_entry.hh:259
gem5::HSAQueueEntry::_hostDispPktAddr
Addr _hostDispPktAddr
Definition: hsa_queue_entry.hh:463
gem5::FlatScratchInit
@ FlatScratchInit
Definition: kernel_code.hh:61
gem5::HSAQueueEntry::parseKernelCode
void parseKernelCode(AMDKernelCode *akc)
Definition: hsa_queue_entry.hh:404
gem5::AMDKernelCode::enable_vgpr_workitem_id
uint32_t enable_vgpr_workitem_id
Definition: kernel_code.hh:132
gem5::WorkitemIdY
@ WorkitemIdY
Definition: kernel_code.hh:77
kernel_code.hh
gem5::HSAQueueEntry::_numWgTotal
int _numWgTotal
Definition: hsa_queue_entry.hh:492
gem5::HSAQueueEntry::privMemPerItem
int privMemPerItem() const
Definition: hsa_queue_entry.hh:218
gem5::HSAQueueEntry::_contextId
int _contextId
Definition: hsa_queue_entry.hh:489
gem5::HSAQueueEntry::_completionSignal
Addr _completionSignal
Definition: hsa_queue_entry.hh:465
gem5::AMDKernelCode::enable_sgpr_workgroup_id_x
uint32_t enable_sgpr_workgroup_id_x
Definition: kernel_code.hh:128
gem5::HSAQueueEntry::completionSignal
Addr completionSignal() const
Definition: hsa_queue_entry.hh:195
gem5::PrivateSegBuf
@ PrivateSegBuf
Definition: kernel_code.hh:56
gem5::AMDKernelCode::enable_sgpr_dispatch_id
uint32_t enable_sgpr_dispatch_id
Definition: kernel_code.hh:152
gem5::HSAQueueEntry::_numWgCompleted
int _numWgCompleted
Definition: hsa_queue_entry.hh:495
gem5::AMDKernelCode::enable_sgpr_grid_workgroup_count_z
uint32_t enable_sgpr_grid_workgroup_count_z
Definition: kernel_code.hh:157
gem5::HSAQueueEntry::_dispatchId
int _dispatchId
Definition: hsa_queue_entry.hh:459
gem5::HSAQueueEntry::numWgTotal
int numWgTotal() const
Definition: hsa_queue_entry.hh:278
gem5::HSAQueueEntry::contextId
int contextId() const
Definition: hsa_queue_entry.hh:221
gem5::HSAQueueEntry::kernargAddress
Addr kernargAddress
Definition: hsa_queue_entry.hh:469
gem5::AMDKernelCode::enable_sgpr_dispatch_ptr
uint32_t enable_sgpr_dispatch_ptr
Definition: kernel_code.hh:149
gem5::AMDKernelCode::enable_sgpr_private_segment_wave_byte_offset
uint32_t enable_sgpr_private_segment_wave_byte_offset
Definition: kernel_code.hh:125
gem5::HSAQueueEntry::_outstandingInvs
int _outstandingInvs
Number of outstanding invs for the kernel.
Definition: hsa_queue_entry.hh:478
gem5::HSAQueueEntry::_privMemPerItem
int _privMemPerItem
Definition: hsa_queue_entry.hh:488
gem5::HSAQueueEntry
Definition: hsa_queue_entry.hh:60
gem5::AMDKernelCode::enable_sgpr_workgroup_id_z
uint32_t enable_sgpr_workgroup_id_z
Definition: kernel_code.hh:130
gem5::HSAQueueEntry::queueId
uint32_t queueId() const
Definition: hsa_queue_entry.hh:171
gem5::HSAQueueEntry::wgId
void wgId(int dim, int val)
Definition: hsa_queue_entry.hh:240
gem5::X86ISA::val
Bitfield< 63 > val
Definition: misc.hh:776
gem5::WorkgroupInfo
@ WorkgroupInfo
Definition: kernel_code.hh:69
gem5::AMDKernelCode::enable_sgpr_private_segment_buffer
uint32_t enable_sgpr_private_segment_buffer
Definition: kernel_code.hh:148
gem5::HSAQueueEntry::wgId
int wgId(int dim) const
Definition: hsa_queue_entry.hh:233
gem5::HSAQueueEntry::markWgDispatch
void markWgDispatch()
Definition: hsa_queue_entry.hh:284
gem5::PrivSegWaveByteOffset
@ PrivSegWaveByteOffset
Definition: kernel_code.hh:70
gem5::HSAQueueEntry::kernName
std::string kernName
Definition: hsa_queue_entry.hh:448
gem5::ArmISA::i
Bitfield< 7 > i
Definition: misc_types.hh:67
gem5::HSAQueueEntry::kernargAddr
Addr kernargAddr() const
Definition: hsa_queue_entry.hh:207
gem5::HSAQueueEntry::numScalarRegs
int numScalarRegs() const
Definition: hsa_queue_entry.hh:165
hsa_queue.hh
gem5::AMDKernelCode::enable_sgpr_private_segment_size
uint32_t enable_sgpr_private_segment_size
Definition: kernel_code.hh:154
gem5::HSAQueueEntry::dispatchComplete
bool dispatchComplete
Definition: hsa_queue_entry.hh:497
gem5::HSAQueueEntry::numWgAtBarrier
int numWgAtBarrier() const
Definition: hsa_queue_entry.hh:305
gem5::HSAQueueEntry::amdQueue
_amd_queue_t amdQueue
Keep a copy of the AMD HSA queue because we need info from some of its fields to initialize register ...
Definition: hsa_queue_entry.hh:331
gem5::WorkgroupIdY
@ WorkgroupIdY
Definition: kernel_code.hh:67
gem5::WorkgroupIdZ
@ WorkgroupIdZ
Definition: kernel_code.hh:68
gem5::HSAQueueEntry::numWgArrivedAtBarrier
int numWgArrivedAtBarrier
Definition: hsa_queue_entry.hh:493
gem5::HSAQueueEntry::isInvStarted
bool isInvStarted()
Whether invalidate has started or finished -1 is the initial value indicating inv has not started for...
Definition: hsa_queue_entry.hh:348
gem5::PrivateSegSize
@ PrivateSegSize
Definition: kernel_code.hh:62
gem5::HSAQueueEntry::markInvDone
void markInvDone()
Forcefully change the state to be inv done.
Definition: hsa_queue_entry.hh:369
gem5::HSAQueueEntry::_queueId
uint32_t _queueId
Definition: hsa_queue_entry.hh:458
gem5::AMDKernelCode::enable_sgpr_workgroup_info
uint32_t enable_sgpr_workgroup_info
Definition: kernel_code.hh:131
gem5::HSAQueueEntry::dispPktPtr
void * dispPktPtr()
Definition: hsa_queue_entry.hh:183
gem5::HSAQueueEntry::MAX_DIM
const static int MAX_DIM
Definition: hsa_queue_entry.hh:334
gem5::WorkitemIdX
@ WorkitemIdX
Definition: kernel_code.hh:76
gem5::HSAQueueEntry::notifyWgCompleted
void notifyWgCompleted()
Definition: hsa_queue_entry.hh:266
gem5::HSAQueueEntry::numVectorRegs
int numVectorRegs() const
Definition: hsa_queue_entry.hh:159
gem5::HSAQueueEntry::codeAddress
Addr codeAddress
Definition: hsa_queue_entry.hh:467
gem5::AMDKernelCode::enable_sgpr_flat_scratch_init
uint32_t enable_sgpr_flat_scratch_init
Definition: kernel_code.hh:153
gem5::HSAQueueEntry::vgprBitEnabled
bool vgprBitEnabled(int bit) const
Definition: hsa_queue_entry.hh:310
gem5::KernargSegPtr
@ KernargSegPtr
Definition: kernel_code.hh:59
gem5::DispatchId
@ DispatchId
Definition: kernel_code.hh:60
gem5::HSAQueueEntry::_numWg
std::array< int, MAX_DIM > _numWg
Definition: hsa_queue_entry.hh:491
gem5::AMDKernelCode::enable_sgpr_kernarg_segment_ptr
uint32_t enable_sgpr_kernarg_segment_ptr
Definition: kernel_code.hh:151
gem5::HSAQueueEntry::outstandingInvs
int outstandingInvs()
Definition: hsa_queue_entry.hh:338
gem5::HSAQueueEntry::isInvDone
bool isInvDone() const
Is invalidate done?
Definition: hsa_queue_entry.hh:378
hsa_packet.hh
gem5::HSAQueueEntry::hostDispPktAddr
Addr hostDispPktAddr() const
Definition: hsa_queue_entry.hh:189
gem5::HSAQueueEntry::dispPkt
void * dispPkt
Definition: hsa_queue_entry.hh:461
gem5::HSAQueueEntry::updateOutstandingInvs
void updateOutstandingInvs(int val)
update the number of pending invalidate requests
Definition: hsa_queue_entry.hh:359
gem5::HSAQueueEntry::wgSize
int wgSize(int dim) const
Definition: hsa_queue_entry.hh:145
gem5::HSAQueueEntry::_globalWgId
int _globalWgId
Definition: hsa_queue_entry.hh:496
gem5::AMDKernelCode::enable_sgpr_queue_ptr
uint32_t enable_sgpr_queue_ptr
Definition: kernel_code.hh:150
gem5::HSAQueueEntry::codeAddr
Addr codeAddr() const
Definition: hsa_queue_entry.hh:201
gem5::_hsa_dispatch_packet_t
Definition: hsa_packet.hh:53
gem5::HSAQueueEntry::dispComplete
bool dispComplete() const
Definition: hsa_queue_entry.hh:227
gem5::HSAQueueEntry::_gridSize
std::array< int, MAX_DIM > _gridSize
Definition: hsa_queue_entry.hh:452
gem5::HSAQueueEntry::globalWgId
int globalWgId() const
Definition: hsa_queue_entry.hh:247
gem5::HSAQueueEntry::gridSize
int gridSize(int dim) const
Definition: hsa_queue_entry.hh:152
gem5::GridWorkgroupCountX
@ GridWorkgroupCountX
Definition: kernel_code.hh:63
gem5::HSAQueueEntry::hostAMDQueueAddr
Addr hostAMDQueueAddr
Host-side addr of the amd_queue_t on which this task was queued.
Definition: hsa_queue_entry.hh:324
gem5::HSAQueueEntry::initialSgprState
std::bitset< NumScalarInitFields > initialSgprState
Definition: hsa_queue_entry.hh:500
gem5::WorkitemIdZ
@ WorkitemIdZ
Definition: kernel_code.hh:78
gem5::HSAQueueEntry::numVgprs
int numVgprs
Definition: hsa_queue_entry.hh:454
gem5::GridWorkgroupCountZ
@ GridWorkgroupCountZ
Definition: kernel_code.hh:65
gem5::HSAQueueEntry::numWgCompleted
int numWgCompleted() const
Definition: hsa_queue_entry.hh:272
gem5::HSAQueueEntry::initialVgprState
std::bitset< NumVectorInitFields > initialVgprState
Definition: hsa_queue_entry.hh:499
gem5::Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:147
gem5::HSAQueueEntry::globalWgId
void globalWgId(int val)
Definition: hsa_queue_entry.hh:253
gem5::divCeil
static constexpr T divCeil(const T &a, const U &b)
Definition: intmath.hh:110
gem5::HSAQueueEntry::kernelName
const std::string & kernelName() const
Definition: hsa_queue_entry.hh:139
gem5::HSAQueueEntry::outstandingWbs
int outstandingWbs() const
Definition: hsa_queue_entry.hh:385
gem5::AMDKernelCode::enable_sgpr_workgroup_id_y
uint32_t enable_sgpr_workgroup_id_y
Definition: kernel_code.hh:129
gem5::HSAQueueEntry::_ldsSize
int _ldsSize
Definition: hsa_queue_entry.hh:487
gem5::QueuePtr
@ QueuePtr
Definition: kernel_code.hh:58
gem5::WorkgroupIdX
@ WorkgroupIdX
Definition: kernel_code.hh:66
types.hh
gem5::HSAQueueEntry::updateOutstandingWbs
void updateOutstandingWbs(int val)
Update the number of pending writeback requests.
Definition: hsa_queue_entry.hh:396
gem5::HSAQueueEntry::HSAQueueEntry
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)
Definition: hsa_queue_entry.hh:63
gem5::GridWorkgroupCountY
@ GridWorkgroupCountY
Definition: kernel_code.hh:64
gem5::DispatchPtr
@ DispatchPtr
Definition: kernel_code.hh:57
gem5::HSAQueueEntry::sgprBitEnabled
bool sgprBitEnabled(int bit) const
Definition: hsa_queue_entry.hh:315
gem5::HSAQueueEntry::_outstandingWbs
int _outstandingWbs
Number of outstanding wbs for the kernel values: 0: 1)initial value, flush has not started for the ke...
Definition: hsa_queue_entry.hh:486
gem5::HSAQueueEntry::_wgSize
std::array< int, MAX_DIM > _wgSize
Definition: hsa_queue_entry.hh:450
gem5::AMDKernelCode::enable_sgpr_grid_workgroup_count_y
uint32_t enable_sgpr_grid_workgroup_count_y
Definition: kernel_code.hh:156
gem5::HSAQueueEntry::numSgprs
int numSgprs
Definition: hsa_queue_entry.hh:456
gem5::HSAQueueEntry::ldsSize
int ldsSize() const
Definition: hsa_queue_entry.hh:213
intmath.hh
gem5
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Definition: gpu_translation_state.hh:37
gem5::HSAQueueEntry::dispatchId
int dispatchId() const
Definition: hsa_queue_entry.hh:177
gem5::HSAQueueEntry::_wgId
std::array< int, MAX_DIM > _wgId
Definition: hsa_queue_entry.hh:490
gem5::AMDKernelCode::enable_sgpr_grid_workgroup_count_x
uint32_t enable_sgpr_grid_workgroup_count_x
Definition: kernel_code.hh:155
gem5::AMDKernelCode
Definition: kernel_code.hh:82

Generated on Sun Jul 30 2023 01:56:57 for gem5 by doxygen 1.8.17