
    +jW                         d dl Z d dlZd dlZd dlmZ d dlZd dlZdag a	d Z
ddedz  fdZd ZdefdZdef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 )    N)Pathc                     d} 	 t           j                            d          }|j        D ]}t	          |          dz  }|                                r`t           j                            d|          }t           j                            |          }|j        	                    |           |j
        } n+# t          $ r}t          j        d           Y d }~nd }~ww xY wd| v rdS d| v rd	S d S )
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          V/home/wildlama/comfy/ComfyUI/.venv/lib/python3.11/site-packages/comfy_aimdo/control.pydetect_vendorr      s   G^--g66
 ; 	- 	-FF||l2H!! - ~==>TV^__"88>>''/// ,	-    8999 v'v4s   B/B4 4
C>CCimplementationc                    t           dS | t                      } | t          j        d           d} ddd|          }	 t	          t
                    j                                        }t          j	                    }|dk    rd}d	}n8|d
k    rd}d}n-t          j
        d|            t          j
        d           dS t          j        t          || d| z            |          a nC# t          $ r6}t          j
        d|            t          j
        d           Y d }~dS d }~ww xY wt          j        gt           j        _        t          j        t           j        _        t          j        gt           j        _        t          j        t          j                  t          j        gt           j        _        t          j        t           j        _        t          j        gt           j        _        t          j        t           j        _        dS )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)libr   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POINTERc_intc_size_tinitc_bool
get_devctx)r    impl	base_pathr/   extr)   r   s          r   r=   r=   "   s    t&TUUU   D
NN)1133	""YCDDwCDDLNfNNOOOLWXXX5k#iT//C//9::FFF   7A77888UVVVuuuuu
 *0(9C%'-C$"(/!2C55vGCH}CH%|nCN#_CN4s   A?C+ ?+C+ +
D+5+D&&D+c                 L   t           dS d | D             }|sdS t                                           sdS t          j        t	          |          z  | }t                               |t	          |                    rd |D             adS g at                                            dS )NFc                 ,    g | ]}t          |          S  )int.0	device_ids     r   
<listcomp>z init_devices.<locals>.<listcomp>Z   s    <<<IY<<<    c                 ,    g | ]}t          |          S rE   )r?   rG   s     r   rJ   z init_devices.<locals>.<listcomp>c   s     DDDY:i((DDDrK   T)r*   	plat_initr1   r;   lenr=   devctxsplat_cleanup)
device_ids	requesteddevice_arrays      r   init_devicesrT   T   s     {u<<<<<I u==?? uL3y>>1I>L
xxc)nn-- DD)DDDtG5rK   rI   c                 "    t          | g          S N)rT   )rI   s    r   init_devicerW   j   s    $$$rK   c                 ~    t                               t          |                     }|r|S t          d|  d          )Nzcomfy-aimdo device z is not initialized)r*   r?   rF   RuntimeError)rI   devctxs     r   r?   r?   m   s@    ^^C	NN++F 
KYKKK
L
LLrK   c                      t           4t                                            g at                                            d a d S rV   )r*   cleanuprO   rP   rE   rK   r   deinitr]   s   s4    

CCCrK   c                  8    t                                            d S rV   )r*   set_log_level_nonerE   rK   r   set_log_noner`   |       C**,,,,,rK   c                  8    t                                            d S rV   )r*   set_log_level_criticalrE   rK   r   set_log_criticalrd   }       2244444rK   c                  8    t                                            d S rV   )r*   set_log_level_errorrE   rK   r   set_log_errorrh   ~       S,,.....rK   c                  8    t                                            d S rV   )r*   set_log_level_warningrE   rK   r   set_log_warningrl          s0022222rK   c                  8    t                                            d S rV   )r*   set_log_level_inforE   rK   r   set_log_inforp      ra   rK   c                  8    t                                            d S rV   )r*   set_log_level_debugrE   rK   r   set_log_debugrs      ri   rK   c                  8    t                                            d S rV   )r*   set_log_level_verboserE   rK   r   set_log_verboserv      rm   rK   c                  8    t                                            d S rV   )r*   set_log_level_vverboserE   rK   r   set_log_vverbosery      re   rK   c                  `    t           d S t          D ]} t                               |            d S rV   )r*   rO   r9   )rZ   s    r   analyzer{      s<    
{ " "&!!!!" "rK   c                  P    t           dS t          d t          D                       S )Nr   c              3   J   K   | ]}t                               |          V  d S rV   )r*   r5   )rH   rZ   s     r   	<genexpr>z'get_total_vram_usage.<locals>.<genexpr>   s0      FFFs''//FFFFFFrK   )r*   sumrO   rE   rK   r   r5   r5      s)    
{qFFgFFFFFFrK   rV   )osr1   r.   pathlibr   r   importlib.utilr
   r*   rO   r   r3   r=   rT   rF   rW   r?   r]   r`   rd   rh   rl   rp   rs   rv   ry   r{   r5   rE   rK   r   <module>r      sU   				             

  ,0 0t 0 0 0 0d  ,%3 % % % %M# M M M M   - , , 4 4 4 . . . 2 2 2 , , , . . . 2 2 2 4 4 4" " "G G G G GrK   