Go to the documentation of this file.
38 #include "debug/GPUCommandProc.hh"
39 #include "debug/GPUKernelInfo.hh"
41 #include "params/GPUCommandProcessor.hh"
70 static int dynamic_task_id = 0;
78 auto &virt_proxy = tc->getVirtProxy();
93 DPRINTF(GPUCommandProc,
"GPU machine code is %lli bytes from start of the "
99 DPRINTF(GPUCommandProc,
"Machine code starts at addr: %#x\n",
102 Addr kern_name_addr(0);
103 std::string kernel_name;
116 (uint8_t*)&kern_name_addr, 0x8);
118 virt_proxy.readString(kernel_name, kern_name_addr);
120 kernel_name =
"Blit kernel";
123 DPRINTF(GPUKernelInfo,
"Kernel name: %s\n", kernel_name.c_str());
126 dynamic_task_id, raw_pkt, &akc, host_pkt_addr, machine_code_addr);
128 DPRINTF(GPUCommandProc,
"Task ID: %i Got AQL: wg size (%dx%dx%d), "
129 "grid size (%dx%dx%d) kernarg addr: %#x, completion "
136 DPRINTF(GPUCommandProc,
"Extracted code object: %s (num vector regs: %d, "
137 "num scalar regs: %d, code addr: %#x, kernarg size: %d, "
195 dmaReadVirt(hostReadIdxPtr +
sizeof(hostReadIdxPtr),
196 sizeof(readDispIdOffEvent->readDispIdOffset), readDispIdOffEvent,
197 &readDispIdOffEvent->readDispIdOffset);
226 GPUCommandProcessorParams::create()
HSAPacketProcessor * hsaPP
void dispatchPkt(HSAQueueEntry *task)
Once the CP has finished extracting all relevant information about a task and has initialized the ABI...
GPUDispatcher & dispatcher
HSAQueueDescriptor * getQueueDesc(uint32_t queId)
uint64_t completion_signal
AddrRangeList getAddrRanges() const override
Every PIO device is obliged to provide an implementation that returns the address ranges the device r...
Perform a DMA read of the read_dispatch_id_field_base_byte_offset field, which follows directly after...
GPUCommandProcessor()=delete
void submitDispatchPkt(void *raw_pkt, uint32_t queue_id, Addr host_pkt_addr) override
submitDispatchPkt() is the entry point into the CP from the HSAPP and is only meant to be used with A...
void finishPkt(void *pkt, uint32_t rl_idx)
int numVectorRegs() const
void dmaReadVirt(Addr host_addr, unsigned size, DmaCallback *cb, void *data, Tick delay=0)
uint64_t hostReadIndexPtr
void dispatch(HSAQueueEntry *task)
After all relevant HSA data structures have been traversed/extracted from memory by the CP,...
void setShader(Shader *shader)
uint16_t workgroup_size_z
void setCommandProcessor(GPUCommandProcessor *gpu_cmd_proc)
uint16_t workgroup_size_y
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
int numScalarRegs() const
void submitVendorPkt(void *raw_pkt, uint32_t queue_id, Addr host_pkt_addr) override
submitVendorPkt() is for accepting vendor-specific packets from the HSAPP.
uint16_t workgroup_size_x
uint64_t runtime_loader_kernel_symbol
int64_t kernel_code_entry_byte_offset
void initABI(HSAQueueEntry *task)
The CP is responsible for traversing all HSA-ABI-related data structures from memory and initializing...
Generated on Wed Sep 30 2020 14:02:12 for gem5 by doxygen 1.8.17