o
    ¶Ïi´  ã                   @   sP   d dl Zd dlZd dlZd dlZd dlZd dlmZ dd„ Z	dd„ Z
dd„ ZdS )	é    N)Úargsc                 C   s   t | dd ƒS )NÚ_pin)Úgetattr)Úmodule© r   ú1/mnt/c/Users/fbmor/ComfyUI/comfy/pinned_memory.pyÚget_pin	   s   r   c                 C   sÜ   | j stjst| ƒd urd S tjj}|dkr%t ¡ j	|d k r%tj 
|¡ tj | j| jg¡}tjjdks?tjj| tjjkrDd| _ dS ztj |¡}W n tyY   d| _ Y dS w tj |¡| _|| _tj j|7  _dS )Nr   g      à?TF)Ú
pin_failedr   Údisable_pinned_memoryr   ÚcomfyÚmemory_managementÚRAM_CACHE_HEADROOMÚpsutilÚvirtual_memoryÚ	availableÚextra_ram_releaseÚvram_aligned_sizeÚweightÚbiasÚmodel_managementÚMAX_PINNED_MEMORYÚTOTAL_PINNED_MEMORYÚcomfy_aimdoÚhost_bufferÚ
HostBufferÚRuntimeErrorÚtorchÚhostbuf_to_tensorr   Ú_pin_hostbuf)r   Úram_headroomÚsizeÚhostbufr   r   r   Ú
pin_memory   s&    þr"   c                 C   sT   t | ƒd u rdS | j ¡ | j ¡  }tj j|8  _tjjdk r$dtj_| `| `|S )Nr   )r   r   ÚnumelÚelement_sizer   r   r   r   )r   r    r   r   r   Úunpin_memory&   s   r%   )Úcomfy.model_managementr   Úcomfy.memory_managementÚcomfy_aimdo.host_bufferr   Úcomfy_aimdo.torchr   Úcomfy.cli_argsr   r   r"   r%   r   r   r   r   Ú<module>   s    