
    9j                         U d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlm	Z	m
Z
mZmZmZmZ ddlmZ 	 d dlmZ daedz  ed<   ed	 Znd
 Zd Zej2                  ej4                  ej6                  hZd Zd Z	 	 	 	 	 	 ddZe	 	 	 	 	 	 dd       Z  G d de      Z! e!ejD                  e#   e#      ejD                  e#<   e$ed<   e$ed<   e$ed<   e$ed<   e%ed<   eed<   y# e$ r dZY w xY w)    N)contextmanager)Optional)__allow_nonbracketed_mutation_FP32Precision_get_fp32_precision_getter_set_fp32_precision_setterContextProp
PropModule   )rnn)_cudnn__cudnn_versionc                     t         t        j                         a t        j                         } t        j                         }| \  }}}|\  }}}||k7  rd}n |dk  st        j
                  s||k(  }n||k\  }|st        j                  j                  dd      dk(  ryd| d|  d	}d
t        j                  v rRt        j                  j                  d
d      t        fddD              rt        | d|       t        | d      t        |      t        j                  j                         rt        j                  j                  s|t!        t#        t        j                  j%                               D 	cg c]!  }	t        j                  j'                  |	      # c}	      }
t         dk\  r|
dk  rt        dt          d      yc c}	w )NF   &PYTORCH_SKIP_CUDNN_COMPATIBILITY_CHECK01Tz=cuDNN version incompatibility: PyTorch was compiled  against z but found runtime version z. PyTorch already comes bundled with cuDNN. One option to resolving this error is to ensure PyTorch can find the bundled cuDNN. LD_LIBRARY_PATH c              3   &   K   | ]  }|v  
 y wN ).0	substringld_library_paths     ]/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/backends/cudnn/__init__.py	<genexpr>z_init.<locals>.<genexpr>G   s      9B	_4s   )cudacudnnzLooks like your LD_LIBRARY_PATH contains incompatible version of cudnn. Please either remove it from the path or install cudnn zHone possibility is that there is a conflicting cuDNN in LD_LIBRARY_PATH.ic )r      zcuDNN version z is not compatible with devices with SM < 7.5. Please install a version of PyTorch with a compatible cuDNN version. https://github.com/pytorch/pytorch/blob/main/RELEASE.md#release-compatibility-matrix)r   r   getVersionIntgetRuntimeVersiongetCompileVersionis_cudaosenvirongetanyRuntimeErrortorchr   is_availableversionhipminrangedevice_countget_device_capability)runtime_versioncompile_versionruntime_majorruntime_minor_compile_majorcompile_minorcudnn_compatiblebase_error_msgimin_ccr   s              @r   _initr=   $   s   "$224O$668O$668O.=+M=!.=+M=! -#( "&..#0M#A #0M#A #::>>"JCPTWW55D4E F11@0A B34  %

2&(jjnn5F&KO FW  +-.VVeUfh  +-.DE  '~66zz&&(1B1B "'uzz'>'>'@!A 

88; #e+&((9 :o p  s   =&Gc                       y)NFr   r       r   r=   r=   j   s    r?   c                  $    t               syt        S )zReturn the version of cuDNN.N)r=   r   r   r?   r   r,   r,   n   s    7r?   c                  6    t         j                  j                  S )z9Return a bool indicating if CUDNN is currently available.)r*   _C
_has_cudnnr   r?   r   r+   r+   |   s    88r?   c                    t         j                  j                         sy| j                  j                  dk7  s| j
                  t        vryt               st        j                  dd       yt               sIt        j                  dj                  ddd	j                  t        j                  d
            d       yy)NFr   zPyTorch was compiled without cuDNN/MIOpen support. To use cuDNN/MIOpen, rebuild PyTorch making sure the library is visible to the build system.   )
stacklevelz4cuDNN/MIOpen library not found. Check your {libpath}DYLD_LIBRARY_PATHPATH)darwinwin32r   )libpathT)r*   rB   _get_cudnn_enableddevicetypedtypeCUDNN_TENSOR_DTYPESr+   warningswarnr=   formatr'   sysplatform)tensors    r   is_acceptablerW      s    88&&(}}V#v||;N'N>N	

 7BII#6HLLLL"3 J 
 	
 r?   c           	      &   t         j                  j                         t         j                  j                         t	               sd nt         j                  j                         t         j                  j                         t         j                  j                         t         j                  j                  dd      f}| t         j                  j                  |        |t         j                  j                  |       |)t	               rt         j                  j                  |       |t         j                  j                  |       |t         j                  j                  |       |!t         j                  j                  dd|       |S )Nr   all)r*   rB   rL   _get_cudnn_benchmarkr+   _cuda_get_cudnn_benchmark_limit_get_cudnn_deterministic_get_cudnn_allow_tf32r   _set_cudnn_enabled_set_cudnn_benchmark_cuda_set_cudnn_benchmark_limit_set_cudnn_deterministic_set_cudnn_allow_tf32r   )_enabled
_benchmark_benchmark_limit_deterministic_allow_tf32_fp32_precision
orig_flagss          r   	set_flagsrj      s    	##%%%' N(P(P(R))+&&(++FE:J ##H-%%j1#001AB!)).9&&{3"++FE?Kr?   c           	   #     K   t               5  t        | |||||      }d d d        	 d  t               5  t          d d d        y # 1 sw Y   *xY w# 1 sw Y   y xY w# t               5  t          d d d        w # 1 sw Y   w xY wxY wwr   )r   rj   )enabled	benchmarkbenchmark_limitdeterministic
allow_tf32fp32_precisionri   s          r   flagsrr      s      
'	( 



# +, 	#z"	# 	#
 
	# 	#*, 	#z"	# 	# 	#s_   BABA 
B	A	BABABB*	A<3	B<BBBc                   H   e Zd Z eej
                  j                  ej
                  j                        Z eej
                  j                  ej
                  j                        Z eej
                  j                  ej
                  j                        ZdZ e       r1 eej
                  j"                  ej
                  j$                        Z eej
                  j&                  ej
                  j(                        Z edd      Z e edd       edd            Zy)CudnnModuleNr   convrY   )__name__
__module____qualname__r	   r*   rB   rL   r^   rl   r\   ra   ro   rZ   r_   rm   rn   r+   r[   r`   r]   rb   rp   r   ru   r   r   rq   r   r?   r   rt   rt      s    %((55uxx7R7RSG))588+L+LM %%uxx'D'DI O~%HH44HH44
 &&(F(FJ &&)D "651"651Nr?   rt   rl   ro   rm   rp   rq   rn   )NNNNNnone)FF
   FTry   )&r%   rT   rQ   
contextlibr   typingr   r*   torch.backendsr   r   r   r   r	   r
   r   r   torch._Cr   ImportErrorr   int__annotations__r=   r,   halffloatdoublerP   r+   rW   rj   rr   rt   modulesrv   boolstrr   r?   r   <module>r      s$   	 
  %     #t "	BL 
JJ	KK	LL 
4 > # #<* 4 $CKK$98DH  
    G  Fs   C   C*)C*