o
    /iF                     @   s  d dl Z d dlZd dlmZ d dlZdadd Zdd Zedd	 ZG d
d dZ	G dd dej
ZG dd dZdddZedddZdd Zdd ZG dd deZee je ee je< d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z" dS )    N)contextmanagerTc                   C   s   da d S )NF"__allow_nonbracketed_mutation_flag r   r   P/home/ubuntu/LTX-2/.venv/lib/python3.10/site-packages/torch/backends/__init__.pydisable_global_flags   s   r   c                   C   s   t  S Nr   r   r   r   r   flags_frozen   s   r	   c                  c   s"    t } da zd V  W | a d S | a w )NTr   )oldr   r   r   __allow_nonbracketed_mutation   s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )ContextPropc                 C      || _ || _d S r   )gettersetter)selfr   r   r   r   r   __init__%      
zContextProp.__init__c                 C   s   |   S r   )r   )r   objobjtyper   r   r   __get__)   s   zContextProp.__get__c                 C   s&   t  s
| | d S td|j d)Nznot allowed to set zM flags after disable_global_flags; please use flags() context manager instead)r	   r   RuntimeError__name__)r   r   valr   r   r   __set__,   s
   zContextProp.__set__N)r   
__module____qualname__r   r   r   r   r   r   r   r   $   s    r   c                       s$   e Zd Z fddZdd Z  ZS )
PropModulec                    s   t  | || _d S r   )superr   mr   r   name	__class__r   r   r   7   s   
zPropModule.__init__c                 C   s   | j |S r   )r   __getattribute__)r   attrr   r   r   __getattr__;   s   zPropModule.__getattr__)r   r   r   r   r%   __classcell__r   r   r!   r   r   6   s    r   c                       s,   e Zd Zdd Z fddZdd Z  ZS )_FP32Precisionc                 C   r   r   backendop)r   r)   r*   r   r   r   r   @   r   z_FP32Precision.__init__c                    sF   |dkrt j| j| j| d S |dv rt || d S td| )Nfp32_precisionr(   Unknown attribute )torch_C_set_fp32_precision_setterr)   r*   r   __setattr__AttributeError)r   r    valuer!   r   r   r0   D   s
   z_FP32Precision.__setattr__c                 C   s&   |dkrt j| j| jS td| )Nr+   r,   )r-   r.   _get_fp32_precision_getterr)   r*   r1   )r   r    r   r   r   r%   L   s   z_FP32Precision.__getattr__)r   r   r   r   r0   r%   r&   r   r   r!   r   r'   ?   s    r'   nonec                 C   s,   t jddf}| d urt jdd|  |S )Ngenericall)r-   r.   r3   r/   )_fp32_precision
orig_flagsr   r   r   	set_flagsS   s   r9   c                 c   s    t   t| }W d    n1 sw   Y  zd V  W t   t|  W d    d S 1 s0w   Y  d S t   t|  W d    w 1 sIw   Y  w r   )r   r9   )r+   r8   r   r   r   flagsZ   s   

*
r:   c                        fdd}|S )Nc                      s   t j S r   )r-   r.   r3   r   r(   r   r   innerf   s   z)_get_fp32_precision_getter.<locals>.innerr   r)   r*   r<   r   r(   r   r3   e      r3   c                    r;   )Nc                    s   t j | S r   )r-   r.   r/   )	precisionr(   r   r   r<   m   s   z)_set_fp32_precision_setter.<locals>.innerr   r=   r   r(   r   r/   l   r>   r/   c                       s2   e Zd Z fddZeeddeddZ  ZS )GenericModulec                    s   t  || d S r   )r   r   r   r!   r   r   r   t   s   zGenericModule.__init__r5   r6   )	r   r   r   r   r   r3   r/   r+   r&   r   r   r!   r   r@   s   s    r@   )cpucudacudnn
cusparseltkleidiaimhamiopenmklmkldnnmpsnnpackopenmp
opt_einsum	quantized)r4   )#systypes
contextlibr   r-   r   r   r	   r   r   
ModuleTyper   r'   r9   r:   r3   r/   r@   modulesr   torch.backendsrA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   r   r   r   r   <module>   s(   

	


D