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

Method create_queue

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

792 return HCQBuffer(mem.va_addr, mem.size, meta=mem.meta, owner=mem.owner)
793
794 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,
795 xcc_id=0, idx=0):
796 queue = kfd.AMDKFD_IOC_CREATE_QUEUE(KFDIface.kfd, ring_base_address=ring.va_addr, ring_size=ring.size, gpu_id=self.gpu_id,
797 queue_type=queue_type, queue_percentage=kfd.KFD_MAX_QUEUE_PERCENTAGE|(xcc_id<<8), queue_priority=getenv("AMD_KFD_QUEUE_PRIORITY", 7),
798 eop_buffer_address=eop_buffer.va_addr if eop_buffer else 0, eop_buffer_size=eop_buffer.size if eop_buffer else 0, ctl_stack_size=ctl_stack_size,
799 ctx_save_restore_address=cwsr_buffer.va_addr if cwsr_buffer else 0, ctx_save_restore_size=ctx_save_restore_size,
800 write_pointer_address=gart.va_addr+wptr, read_pointer_address=gart.va_addr+rptr+8*xcc_id)
801
802 if not hasattr(self, 'doorbells'):
803 self.doorbells_base = queue.doorbell_offset & (~0x1fff) # doorbell is two pages
804 self.doorbells = cast(FileIOInterface, KFDIface.kfd).mmap(0, 0x2000, mmap.PROT_READ|mmap.PROT_WRITE, mmap.MAP_SHARED, self.doorbells_base)
805
806 return AMDQueueDesc(ring=MMIOInterface(ring.va_addr, ring.size, fmt='I'), read_ptr=MMIOInterface(queue.read_pointer_address, 8, fmt='Q'),
807 write_ptr=MMIOInterface(queue.write_pointer_address, 8, fmt='Q'),
808 doorbell=MMIOInterface(self.doorbells + queue.doorbell_offset - self.doorbells_base, 8, fmt='Q'))
809
810 def sleep(self, tm:int):
811 kfd.AMDKFD_IOC_WAIT_EVENTS(KFDIface.kfd, events_ptr=self.queue_event_arr_ptr, num_events=3, wait_for_all=0, timeout=tm)

Callers 2

create_queueMethod · 0.45
create_queueMethod · 0.45

Calls 5

getenvFunction · 0.90
MMIOInterfaceClass · 0.90
castFunction · 0.85
AMDQueueDescClass · 0.70
mmapMethod · 0.45

Tested by

no test coverage detected