
    qi!                         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aee   ed<   ed Znd Zd	 Zej.                  ej0                  ej2                  hZd
 Zd Z	 	 	 	 	 	 ddZe	 	 	 	 	 	 dd       Z G d de      Z eej@                  e!   e!      ej@                  e!<   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)_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     c/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/backends/cudnn/__init__.py	<genexpr>z_init.<locals>.<genexpr>E   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;   h   s    r=   c                  $    t               syt        S )zReturn the version of cuDNN.N)r;   r   r   r=   r   r*   r*   l   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)   z   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(   r@   _get_cudnn_enableddevicetypedtypeCUDNN_TENSOR_DTYPESr)   warningswarnr;   formatr%   sysplatform)tensors    r   is_acceptablerU      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(   r@   rJ   _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_flagsrh      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   rh   )enabled	benchmarkbenchmark_limitdeterministic
allow_tf32fp32_precisionrg   s          r   flagsrp      s      
'	( 



# +, 	#z"	# 	#
 
	# 	#*, 	#z"	# 	# 	#s_   BABA 
B	A	BABABB*	A<3	B<BBBc                   Z   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dd      Z e edd       edd            Zy)CudnnModuleNr   convrnnrW   )__name__
__module____qualname__r	   r(   r@   rJ   r\   rj   rZ   r_   rm   rX   r]   rk   rl   r)   rY   r^   r[   r`   rn   r   rs   rt   r   r   ro   r   r=   r   rr   rr      s    %((55uxx7R7RSG))588+L+LM %%uxx'D'DI O~%HH44HH44
 &&(F(FJ &&)D

'C "651"651Nr=   rr   rj   rm   rk   rn   rl   )NNNNNnone)FF
   FTrx   )#r#   rR   rO   
contextlibr   typingr   r(   torch.backendsr   r   r   r   r	   r
   torch._Cr   ImportErrorr   int__annotations__r;   r*   halffloatdoublerN   r)   rU   rh   rp   rr   modulesru   boolr   r=   r   <module>r      s   	 
  %    "&# %	BL 
JJ	KK	LL 
4 > # #<* 6 $CKK$98DH  
   G  Fs   C CC