MCPcopy Index your code
hub / github.com/tinygrad/tinygrad / create_queue

Method create_queue

tinygrad/runtime/ops_amd.py:875–887  ·  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

873 'gfx_target_version': {90403: 90402}.get(gfxver, gfxver)}
874
875 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,
876 xcc_id=0, idx=0):
877 assert cwsr_buffer is None, "no cwsr buffer for am"
878
879 rcvr_params: tuple
880 if queue_type == kfd.KFD_IOC_QUEUE_TYPE_SDMA:
881 doorbell_index = self.dev_impl.sdma.setup_ring(*(rcvr_params:=(ring.va_addr, ring.size, gart.va_addr+rptr, gart.va_addr+wptr, idx)))
882 else:
883 doorbell_index = self.dev_impl.gfx.setup_ring(*(rcvr_params:=(ring.va_addr, ring.size, gart.va_addr+rptr, gart.va_addr+wptr,
884 eop_buffer.va_addr, eop_buffer.size, is_aql:=(queue_type==kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL), is_aql)))
885
886 return AMDQueueDesc(ring=ring.cpu_view().view(fmt='I'), doorbell=self.dev_impl.doorbell64.view(doorbell_index * 8, 8, fmt='Q'), put_value=0,
887 read_ptr=gart.cpu_view().view(offset=rptr, size=8, fmt='Q'), write_ptr=gart.cpu_view().view(offset=wptr, size=8, fmt='Q'), params=rcvr_params)
888
889 def _collect_interrupts(self, reset=False, drain_only=False):
890 devs:list[AMDDevice] = [d for pg in HCQCompiled.peer_groups.values() for d in pg if isinstance(d, AMDDevice) and d.is_am()]

Callers

nothing calls this directly

Calls 4

AMDQueueDescClass · 0.70
setup_ringMethod · 0.45
viewMethod · 0.45
cpu_viewMethod · 0.45

Tested by

no test coverage detected