MCPcopy
hub / github.com/tinygrad/tinygrad / create_queue

Method create_queue

extra/hcq2/ops_amd2.py:332–348  ·  view source on GitHub ↗
(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0,
                   xcc_id=0, idx=0)

Source from the content-addressed store, hash-verified

330 'gfx_target_version': {90403: 90402}.get(gfxver, gfxver)}
331
332 def create_queue(self, queue_type, ring, gart, rptr, wptr, eop_buffer=None, cwsr_buffer=None, ctl_stack_size=0, ctx_save_restore_size=0,
333 xcc_id=0, idx=0):
334 assert cwsr_buffer is None, "no cwsr buffer for am"
335
336 rcvr_params: tuple
337 if queue_type == kfd.KFD_IOC_QUEUE_TYPE_SDMA:
338 doorbell_index = self.dev_impl.sdma.setup_ring(*(rcvr_params:=(ring.va_addr, ring.size, gart.va_addr+rptr, gart.va_addr+wptr, idx)))
339 else:
340 doorbell_index = self.dev_impl.gfx.setup_ring(*(rcvr_params:=(ring.va_addr, ring.size, gart.va_addr+rptr, gart.va_addr+wptr,
341 eop_buffer.va_addr, eop_buffer.size, is_aql:=(queue_type==kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL), is_aql)))
342
343 ext = lambda addr,n,dt: Buffer("CPU", n, dt, options=BufferSpec(external_ptr=addr), preallocate=True)
344 (put_value := Buffer("CPU", 1, dtypes.uint64, preallocate=True))._buf.view.view(fmt='Q')[0] = 0
345 return AMDQueueDesc(ring=ext(ring.va_addr, ring.size//4, dtypes.uint32),
346 doorbell=ext(self.dev_impl.doorbell64.addr + doorbell_index*8, 1, dtypes.uint64),
347 read_ptr=ext(gart.va_addr+rptr, 1, dtypes.uint64), write_ptr=ext(gart.va_addr+wptr, 1, dtypes.uint64),
348 put_value=put_value, params=rcvr_params)
349
350 def _collect_interrupts(self, reset=False, drain_only=False):
351 d = self.dev

Callers 4

test_sdma_fun.pyFile · 0.45
test_kfd_2.pyFile · 0.45
test_pm4.pyFile · 0.45
create_queueMethod · 0.45

Calls 5

BufferClass · 0.90
BufferSpecClass · 0.90
AMDQueueDescClass · 0.70
setup_ringMethod · 0.45
viewMethod · 0.45

Tested by

no test coverage detected