mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-05-14 19:17:32 +08:00
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:
parent
ee927aafa8
commit
d61026d020
@ -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)
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user