pins: implement freeing intermediate for pinned memory

Pinning is more important than inactive intermediates and the stream
pin buffer is more important than even active intermediates.
This commit is contained in:
Rattus
2026-05-13 22:23:54 +10:00
parent ee927aafa8
commit d61026d020
3 changed files with 5 additions and 2 deletions
+2 -2
View File
@@ -157,7 +157,7 @@ def set_ram_cache_release_state(callback, headroom):
extra_ram_release_callback = callback
RAM_CACHE_HEADROOM = max(0, int(headroom))
def extra_ram_release(target):
def extra_ram_release(target, free_active=False):
if extra_ram_release_callback is None:
return 0
return extra_ram_release_callback(target)
return extra_ram_release_callback(target, free_active=free_active)
+2
View File
@@ -1208,6 +1208,7 @@ def resize_pin_buffer(pin_buffer, size):
if size <= old_size:
return True
growth = size - old_size
comfy.memory_management.extra_ram_release(comfy.memory_management.RAM_CACHE_HEADROOM, free_active=True)
ensure_pin_budget(growth, evict_active=True)
try:
pin_buffer.extend(size=size, reallocate=True)
@@ -1389,6 +1390,7 @@ def pin_memory(tensor):
return False
size = tensor.nbytes
comfy.memory_management.extra_ram_release(comfy.memory_management.RAM_CACHE_HEADROOM)
ensure_pin_budget(size)
ptr = tensor.data_ptr()
+1
View File
@@ -17,6 +17,7 @@ def pin_memory(module, subset="weights", size=None):
if size is None:
size = comfy.memory_management.vram_aligned_size([ module.weight, module.bias ])
offset = hostbuf.size
comfy.memory_management.extra_ram_release(comfy.memory_management.RAM_CACHE_HEADROOM)
comfy.model_management.ensure_pin_budget(size)
try: