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

Method map

tinygrad/runtime/support/system.py:282–298  ·  view source on GitHub ↗
(self, b:HCQBuffer)

Source from the content-addressed store, hash-verified

280 return [(p + self.pci_dev.bar_info(self.vram_bar)[0], sz) for p, sz in paddrs], AddrSpace.SYS
281
282 def map(self, b:HCQBuffer):
283 if b.owner is not None and b.owner._is_cpu():
284 if not self.is_local(): raise RuntimeError(f"P2P mapping not supported for remote devices: {b.owner} -> {self.dev}")
285
286 System.lock_memory(int(b.va_addr), b.size)
287 paddrs, aspace = [(x, 0x1000) for x in System.system_paddrs(int(b.va_addr), round_up(b.size, 0x1000))], AddrSpace.SYS
288 snooped, uncached = True, True
289 elif (ifa:=getattr(b.owner, "iface", None)) is not None and isinstance(ifa, PCIIfaceBase):
290 if ifa.is_bar_small(): raise RuntimeError(f"P2P mapping not supported for small bar devices: {b.owner} -> {self.dev}")
291
292 snooped, uncached = True, b.meta.mapping.uncached
293 if b.meta.mapping.aspace is AddrSpace.SYS: paddrs, aspace = b.meta.mapping.paddrs, AddrSpace.SYS
294 else: paddrs, aspace = ifa.p2p_paddrs(b.meta.mapping.paddrs)
295 else: raise RuntimeError(f"map failed: {b.owner} -> {self.dev}")
296
297 self.dev_impl.mm.map_range(int(b.va_addr), round_up(b.size, 0x1000), paddrs, aspace=aspace, snooped=snooped, uncached=uncached)
298 return HCQBuffer(b.va_addr, b.size, meta=b.meta, owner=b.owner)
299
300# *** Remote PCI Devices
301

Callers 2

__init__Method · 0.45
__call__Method · 0.45

Calls 9

is_localMethod · 0.95
round_upFunction · 0.90
HCQBufferClass · 0.90
lock_memoryMethod · 0.80
system_paddrsMethod · 0.80
_is_cpuMethod · 0.45
is_bar_smallMethod · 0.45
p2p_paddrsMethod · 0.45
map_rangeMethod · 0.45

Tested by

no test coverage detected