
    +j                      (   d dl Z ddlmZ ej        Ze`e j        e j        e j        gej        _        e j        ej        _	        e j        e j        e j        gej
        _        e j        e j        e j        gej        _        e j        gej        _        e j        e j        gej        _        e j        e j        gej        _        e j        e j        gej        _        e j        ej        _	        e j        e j        gej        _        e j        e j        e j        e j         e j        e j                  gej        _        e j        ej        _	        e j        e j        e j        e j        gej        _        e j        e j        gej        _        e j        ej        _	        e j        e j        e j        gej        _        e j        ej        _	        e j        e j        gej        _        e j        ej        _	        e j        e j        gej        _        e j        ej        _	        e j        e j        gej        _        e j        ej        _	        e j        e j         e j        e j                  e j        gej        _         G d d          Zd Zd Zd Zd	 Zdd
ZdS )    N   )controlc                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )	ModelVBARc                 H   t          j        |          | _        t                              | j        t          |          |          | _        | j        st          d          || _        || _	        d| _
        t                              | j        | j                  | _        d S )NzVBAR allocation failedr   )r   
get_devctx_devctxlibvbar_allocateint_ptrMemoryErrordevicemax_sizeoffsetvbar_get	base_addr)selfsizer   s      Y/home/wildlama/comfy/ComfyUI/.venv/lib/python3.11/site-packages/comfy_aimdo/model_vbar.py__init__zModelVBAR.__init__2   s    )&11%%dlCIIvFF	y 	86777dlDI>>    c                 P    t                               | j        | j                   d S N)r
   vbar_prioritizer	   r   r   s    r   
prioritizezModelVBAR.prioritize<   s"    DL$)44444r   c                 P    t                               | j        | j                   d S r   )r
   vbar_deprioritizer	   r   r   s    r   deprioritizezModelVBAR.deprioritize?   s"    dlDI66666r   c                     | j         dz   dz  | _         | j         |z   | j        k    rt          d          | j        | j         z   }| xj         |z  c_         | ||fS )Ni  i zVBAR OOM)r   r   r   r   )r   	num_bytesallocs      r   r#   zModelVBAR.allocB   sb    {S(D0;"T]22j))),y eY''r   c                     || j         z
  }t          j        |dz  dz   z              }t                              | j        | j        |||          }|dk    r|S |dk    rd S t          d|           )Ni      r   r   zFault failed: )r   ctypesc_uint32r
   
vbar_faultr	   r   RuntimeError)r   r#   r   r   	signatureress         r   faultzModelVBAR.faultR   s{    '_(@1(DEHH	nnT\49fdINN!88AXX4555666r   c                 h    || j         z
  }t                              | j        | j        ||           d S r   )r   r
   
vbar_unpinr	   r   )r   r#   r   r   s       r   unpinzModelVBAR.unpin^   s0    't|TY=====r   c                 L    t                               | j        | j                  S r   )r
   vbar_loaded_sizer	   r   r   s    r   loaded_sizezModelVBAR.loaded_sizeb   s    ##DL$)<<<r   c                 R    t                               | j        | j        |           d S r   )r
   vbar_set_watermark_limitr	   r   r   
size_bytess     r   set_watermark_limitzModelVBAR.set_watermark_limite   s$    $$T\49jIIIIIr   c                 R    t                               | j        | j        |           d S r   )r
   vbar_set_watermarkr	   r   r5   s     r   set_watermarkzModelVBAR.set_watermarkh   s$    t|TY
CCCCCr   c                 h    t                               | j        | j        t	          |                    S r   )r
   vbar_free_memoryr	   r   r   r5   s     r   free_memoryzModelVBAR.free_memoryk   s$    ##DL$)S__MMMr   c                 L    t                               | j        | j                  S r   )r
   vbar_get_nr_pagesr	   r   r   s    r   get_nr_pageszModelVBAR.get_nr_pagesn   s    $$T\49===r   c                 L    t                               | j        | j                  S r   )r
   vbar_get_watermarkr	   r   r   s    r   get_watermarkzModelVBAR.get_watermarkq   s    %%dlDI>>>r   c                     |                                  }t          j        |z              }t                              | j        | j        ||           t          |          S )zsReturns a list of per-page status flags.
        Bit 0 (& 1): resident in VRAM
        Bit 1 (& 2): pinned
        )r@   r&   c_uint8r
   vbar_get_residencyr	   r   list)r   nr_pagesbufs      r   get_residencyzModelVBAR.get_residencyt   sQ    
 $$&&~(++t|TYXFFFCyyr   c                     t          | dd           }t          t          dd           }|&|r&|                    | j        |           d | _        d S d S d S )Nr   r
   )getattrr   	vbar_freer	   r   )r   ptr	aimdo_libs      r   __del__zModelVBAR.__del__~   s`    dFD))GUD11	 S c222DIII !   r   N)__name__
__module____qualname__r   r   r    r#   r,   r/   r2   r7   r:   r=   r@   rC   rJ   rP    r   r   r   r   1   s        ? ? ?5 5 57 7 7( ( ( 
7 
7 
7> > >= = =J J JD D DN N N> > >? ? ?      r   r   c                 :    | \  }}}|                     ||          S r   )r,   r#   vbarr   r   s       r   r(   r(      s"    D&$::fd###r   c                 F    | | \  }}}|                     ||           d S d S r   )r/   rV   s       r   r.   r.      s6    "fd

64      r   c                     | |dS t          |           t          |          k    r/t          dt          |            dt          |                     t          |           t          |          k    S )NFz Signatures of mismatched length z != )len
ValueError
memoryview)abs     r   vbar_signature_comparer_      si    yAIu
1vvQPCFFPPAPPQQQa==JqMM))r   c                  X    t           j        D ]} t                              |            d S r   )r   devctxsr
   vbars_reset_watermark_limits)devctxs    r   rb   rb      s4    / 1 1((00001 1r   c                     t           t          j        sdS | t          j        d         nt          j        |           }t                               |d          S )Nr   F)r
   r   ra   r   vbars_analyze)r   rc   s     r   re   re      sH    
{'/{q#)>W_Qw7I&7Q7QFVU+++r   r   ) r&    r   r
   c_void_pc_uint64c_intr   argtypesrestyper4   r9   rb   r   r   r   rM   POINTERr'   r(   r.   r1   c_size_tr<   c_boolre   r?   rB   rE   rF   r   r_   rT   r   r   <module>ro      s         k ?"(/6?FL!QC &C-3_fov,_C )'-&YC#170AC$-$*OV_#EC &,ov%GC"#_fo>CL!?CL$ov?CM%RXRacqcicqrx  sB  dC  dC  DCN#\CN%RXRabCN%+_fo$FC!#)?C %+_fov$WC!#)?C "(/6=!AC &C&,ov%GC"$*OC!'-&HC#%+_C"'-X^XfIgIgioix&yC#R R R R R R R Rh$ $ $! ! !
* * *1 1 1, , , , , ,r   