
    3j}                         S SK r S SKrS SKrS SKJr  S SKrS SKrSq/ q	S r
SS\S-  S\S-  4S jjrS rSS\4S	 jjrS
\4S jrS rS rS rS rS rS rS rS rS rS rS rg)    N)Pathc                     Sn  [         R                  R                  S5      nUR                   H  n[	        U5      S-  nUR                  5       (       d  M(  [         R                  R                  SU5      n[         R                  R                  U5      nUR                  R                  U5        UR                  n M     SU ;   a  gSU ;   a  g	g ! [         a   n[        R                  " S5         S nAN4S nAff = f)
N torchz
version.pytorch_version_importzFailed to detect Torch versionz+cucudaz+rocmrocm)	importlibutil	find_specsubmodule_search_locationsr   is_filespec_from_file_locationmodule_from_specloaderexec_module__version__	Exceptionloggingwarning)version
torch_specfolderver_filespecmodulees          M/home/wildlama/miniconda3/lib/python3.13/site-packages/comfy_aimdo/control.pydetect_vendorr      s    G^^--g6
 ;;FF|l2H!! ~~==>TV^_"88>''/ ,, < '  89s   AC A*C 
C:C55C:implementationsimple_vram_headroomc                    [         b"  Ub  [         R                  [        U5      5        gU c
  [        5       n U c  [        R
                  " S5        Sn SSS.U    n [        [        5      R                  R                  5       n[        R                  " 5       nUS:X  a  SnS	nO;US
:X  a  SnSnO0[        R                  " SU 35        [        R                  " S5        g[        R                  " [        X2 SU 3-  5      US9q [        R"                  /[         R$                  l        [        R(                  [         R$                  l        [        R"                  /[         R,                  l        [        R.                  /[         R                  l        S [         R                  l        [        R0                  " [        R2                  5      [        R0                  " [        R(                  5      [        R4                  /[         R6                  l        [        R8                  [         R6                  l        [        R2                  /[         R:                  l        [        R"                  [         R:                  l        Ub  [         R                  [        U5      5        g! [          a9  n[        R                  " SU 35        [        R                  " S5         S nAgS nAff = f)NTz:Could not autodetect AIMDO implementation, assuming Nvidiar   aimdo
aimdo_rocm)r   r	   Windowsdllr   Linuxsoi  z*comfy-aimdo unsupported operating system: z;NOTE: comfy-aimdo currently only supports Windows and LinuxF.)modezcomfy-aimdo failed to load: z=NOTE: comfy-aimdo currently only supports Nvidia and AMD GPUs)libset_simple_vram_headroomintr   r   r   r   __file__parentresolveplatformsysteminfoctypesCDLLstrr   c_void_pget_total_vram_usageargtypesc_uint64restypeaimdo_analyzec_int64POINTERc_intc_size_tinitc_bool
get_devctx)r    r!   impl	base_pathr2   extr*   r   s           r   rA   rA   "   s    +((-A)BC&TU  D
N))113	"YCDwCDLLEfXNOLLVXkk#iF!C5/9:F *0(9C%'-C$"(//!2C-3^^,<C  )+/C  (5v~~foo7VX^XgXghCHH}}CHH%||nCNN#__CNN'$$S)=%>?-  3A378TVs   BJ %J 
K&/KKc                    [         c  g/ n/ nU  H  n[        U[        5      (       a  [        U5      S:w  a  [	        S5      eUu  p4OSn[        U5      nUS:  a  [	        S5      eUR                  [        U5      5        UR                  U5        M     U(       d  g[         R                  5       (       d  g[        R                  [        U5      -  " U6 n[        R                  [        U5      -  " U6 n[         R                  XV[        U5      5      (       a  U Vs/ s H  n[        U5      PM     snqg/ q[         R                  5         gs  snf )NF   z5device tuple must be (device_id, extra_vram_headroom)r   z(extra_vram_headroom must be non-negativeT)r+   
isinstancetuplelen
ValueErrorr-   append	plat_initr4   r?   r:   rA   rC   devctxsplat_cleanup)
device_ids	requested	headrooms	device_idheadroomdevice_arrayheadroom_arrays          r   init_devicesrX   \   s    {II	i''9~" !XYY"+IxHx=a<GHHY("   ==??LL3y>1I>LooI6CN
xxc)n==:CD)Y:i()DG Es   Eextra_vram_headroomc                 .    U(       a  X4n [        U /5      $ N)rX   )rT   rY   s     r   init_devicer\      s    4	$$    rT   c                 n    [         R                  [        U 5      5      nU(       a  U$ [        SU  S35      e)Nzcomfy-aimdo device z is not initialized)r+   rC   r-   RuntimeError)rT   devctxs     r   rC   rC      s2    ^^C	N+F
,YK7JK
LLr]   c                  j    [         b*  [         R                  5         / q[         R                  5         S q g r[   )r+   cleanuprO   rP    r]   r   deinitrd      s&    

Cr]   c                  ,    [         R                  5         g r[   )r+   set_log_level_nonerc   r]   r   set_log_nonerg          C**,r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_criticalrc   r]   r   set_log_criticalrk          224r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_errorrc   r]   r   set_log_errorro          S,,.r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_warningrc   r]   r   set_log_warningrs          s002r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_inforc   r]   r   set_log_inforw      rh   r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_debugrc   r]   r   set_log_debugrz      rp   r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_verboserc   r]   r   set_log_verboser}      rt   r]   c                  ,    [         R                  5         g r[   )r+   set_log_level_vverboserc   r]   r   set_log_vverboser      rl   r]   c                  X    [         c  g [         H  n [         R                  U 5        M     g r[   )r+   rO   r<   )r`   s    r   analyzer      s"    
{&! r]   c                  >    [         c  g[        S [         5       5      $ )Nr   c              3   L   #    U  H  n[         R                  U5      v   M     g 7fr[   )r+   r8   ).0r`   s     r   	<genexpr>'get_total_vram_usage.<locals>.<genexpr>   s     FgFs''//gs   "$)r+   sumrO   rc   r]   r   r8   r8      s    
{FgFFFr]   )NN)r   )osr4   r1   pathlibr   r   importlib.utilr
   r+   rO   r   r6   r-   rA   rX   r\   rC   rd   rg   rk   ro   rs   rw   rz   r}   r   r   r8   rc   r]   r   <module>r      s    	     

,8t 8#* 8t$L% %
M# M - 4 . 2 , . 2 4"Gr]   