(self, queue_type, ring_size, ctx_save_restore_size=0, eop_buffer_size=0, ctl_stack_size=0, debug_memory_size=0, idx=0)
| 1037 | self.sqtt_next_cmd_id = itertools.count(0) |
| 1038 | |
| 1039 | def create_queue(self, queue_type, ring_size, ctx_save_restore_size=0, eop_buffer_size=0, ctl_stack_size=0, debug_memory_size=0, idx=0): |
| 1040 | ring = self.iface.alloc(ring_size, uncached=True, cpu_access=True) |
| 1041 | gart = self.iface.alloc(0x100, uncached=True, cpu_access=True) |
| 1042 | |
| 1043 | if queue_type == kfd.KFD_IOC_QUEUE_TYPE_COMPUTE_AQL: |
| 1044 | self.aql_gart = gart |
| 1045 | self.aql_desc = hsa.amd_queue_t(queue_properties=hsa.AMD_QUEUE_PROPERTIES_IS_PTR64 | hsa.AMD_QUEUE_PROPERTIES_ENABLE_PROFILING, |
| 1046 | read_dispatch_id_field_base_byte_offset=getattr(hsa.amd_queue_t, 'read_dispatch_id').offset, |
| 1047 | max_cu_id=(self.cu_cnt * self.xccs) - 1, max_wave_id=self.waves_per_cu - 1) |
| 1048 | self.aql_gart.cpu_view().view(fmt='B')[:ctypes.sizeof(self.aql_desc)] = bytes(self.aql_desc) |
| 1049 | |
| 1050 | cwsr_buffer_size = round_up((ctx_save_restore_size + debug_memory_size) * self.xccs, mmap.PAGESIZE) |
| 1051 | cwsr_buffer = self.iface.alloc(cwsr_buffer_size) if ctx_save_restore_size else None |
| 1052 | eop_buffer = self.iface.alloc(eop_buffer_size) if eop_buffer_size else None |
| 1053 | |
| 1054 | return (self.iface.create_queue(queue_type, ring, gart, rptr=getattr(hsa.amd_queue_t, 'read_dispatch_id').offset, |
| 1055 | wptr=getattr(hsa.amd_queue_t, 'write_dispatch_id').offset, eop_buffer=eop_buffer, cwsr_buffer=cwsr_buffer, |
| 1056 | ctx_save_restore_size=ctx_save_restore_size, ctl_stack_size=ctl_stack_size, idx=idx)) |
| 1057 | |
| 1058 | def sdma_queue(self, idx:int): |
| 1059 | if getenv("AMD_DISABLE_SDMA"): return None |
no test coverage detected