U
    Mh	                  	   @   s   U d dl mZmZmZmZ d dlZd dlmZ d dlmZ d dl	m
Z
 ee dddZee dd	d
Zeeee   Ze
ed< ee Ze
ed< ejgZe deeeeejejf eeef f dddZejedddZee ejedddZdS )    )ListDictTupleOptionalN)Tensor)no_grad)	TypeAlias)returnc                   C   s   ddt j gS )z:Return the device type list that supports foreach kernels.cudaxputorch_CZ_get_privateuse1_backend_name r   r   L/var/www/html/venv/lib/python3.8/site-packages/torch/utils/_foreach_utils.py&_get_foreach_kernels_supported_devices   s    r   c                   C   s   dddt j gS )zEReturn the device type list that supports fused kernels in optimizer.r
   r   cpur   r   r   r   r   $_get_fused_kernels_supported_devices   s    r   TensorListListIndicesF)tensorlistlistwith_indicesr	   c                 C   s   t j| |S N)r   r   "_group_tensors_by_device_and_dtype)r   r   r   r   r   r       s    r   )devicer	   c                 C   s   | j t dg kotj  S )Nr   )typer   r   ZjitZis_scripting)r   r   r   r   _device_has_foreach_support'   s    r   )tensorsr   r	   c                 C   s   t |otdd | D S )Nc                 s   s"   | ]}|d kpt |tkV  qd S r   )r   _foreach_supported_types).0tr   r   r   	<genexpr>,   s     z'_has_foreach_support.<locals>.<genexpr>)r   all)r   r   r   r   r   _has_foreach_support+   s    r#   )F)typingr   r   r   r   r   r   Ztorch.autograd.grad_moder   typing_extensionsr   strr   r   r   __annotations__intr   r   boolr   Zdtyper   r   r#   r   r   r   r   <module>   s&     