§
    �Štj3%  ã                  óP  — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZmZmZmZmZ d d	lmZ erd d
lmZ d6d„Zd6d„Zd6d„Zd7d„Zd7d„Z d8d„Z!d9d „Z"d:d$„Z#d;d%„Z$d<d(„Z%d=d,„Z&d>d-„Z'd=d.„Z( ed/¬0¦  «         G d1„ d2¦  «        ¦   «         Z)d?d5„Z*dS )@é    )ÚannotationsN)Ú	dataclass)ÚTYPE_CHECKING)Ú	translate)ÚDispatcherSignature)Úmethod_with_native_function)
ÚArgumentÚBaseTyÚBaseTypeÚFunctionSchemaÚListTypeÚNativeFunctionÚOptionalTypeÚReturnÚ
SchemaKindÚType)ÚmapMaybe)ÚSequenceÚtypr   ÚreturnÚboolc                óV   — t          | t          ¦  «        o| j        t          j        k    S ©N)Ú
isinstancer   Únamer
   ÚTensor©r   s    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torchgen/gen_vmap_plumbing.pyÚ	is_tensorr      s    € Ý�c�8Ñ$Ô$ÐB¨¬µV´]Ò)BÐBó    c                óT   — t          | t          ¦  «        ot          | j        ¦  «        S r   )r   r   r   Úelemr   s    r   Úis_optional_tensorr#   !   s!   € Ý�c�<Ñ(Ô(Ð@­Y°s´xÑ-@Ô-@Ð@r    c                óT   — t          | t          ¦  «        ot          | j        ¦  «        S r   )r   r   r   r"   r   s    r   Úis_tensor_listr%   %   s!   € Ý�c�8Ñ$Ô$Ð<­°3´8Ñ)<Ô)<Ð<r    r   ÚstrÚcur_level_varú	list[str]c           	     ón   — d| › d| › d| › d|› d�	}t          j        |¦  «                             d¦  «        S )Nz
    auto [ú_value, z_bdim] = unwrapTensorAtLevel(ú, ú);ú
©ÚtextwrapÚdedentÚsplit©r   r'   Úresults      r   Úunwrap_tensorr4   )   sj   € ðXØðXð XØðXð XØ<@ðXð XØDQðXð Xð X€FåŒ?˜6Ñ"Ô"×(Ò(¨Ñ.Ô.Ð.r    c                ó€   — d| › d| › d| › d| › d| › d| › d|› d�}t          j        |¦  «                             d	¦  «        S )
Nz    std::optional<Tensor> z#_value;
    std::optional<int64_t> z_bdim;
    if (z) {
        std::tie(r*   z_bdim) = unwrapTensorAtLevel(z
.value(), z);
    }r-   r.   r2   s      r   Úunwrap_optional_tensorr6   /   s—   € ð
Øð
ð 
à ð
ð 
ð 
ð
ð 
ð ð	
ð 
ð !%ð	
ð 
ð DHð	
ð 
ð Tað	
ð 
ð 
€Fõ Œ?˜6Ñ"Ô"×(Ò(¨Ñ.Ô.Ð.r    Úflat_argumentsúSequence[Argument]útuple[str, list[str]]c                ó”  — d„ | D ¦   «         }d„ | D ¦   «         }d„ t          ||¦  «        D ¦   «         }d„ t          ||¦  «        D ¦   «         }g }|D ]}|t          ||¦  «        z  }Œ|D ]}|t          ||¦  «        z  }Œd                     |¦  «        }	g }
|D ]-}||v s||v r|
|› d�|› d�gz  }
Œ|
                     |¦  «         Œ.|	|
fS )Nc                ó   — g | ]	}|j         ‘Œ
S © ©r   ©Ú.0Úas     r   ú
<listcomp>zgen_unwraps.<locals>.<listcomp><   ó   € Ð0Ð0Ð0˜A�”Ð0Ð0Ð0r    c                ó   — g | ]	}|j         ‘Œ
S r<   )Útyper>   s     r   rA   zgen_unwraps.<locals>.<listcomp>=   rB   r    c                ó6   — g | ]\  }}t          |¦  «        ¯|‘ŒS r<   )r   ©r?   r   r   s      r   rA   zgen_unwraps.<locals>.<listcomp>?   s'   € ÐQÐQÐQ™	˜˜TÅ)ÈCÁ.Ä.ÐQˆtÐQÐQÐQr    c                ó6   — g | ]\  }}t          |¦  «        ¯|‘ŒS r<   )r#   rF   s      r   rA   zgen_unwraps.<locals>.<listcomp>@   s:   € ð ð ð Ù��dÕ;MÈcÑ;RÔ;RðØðð ð r    r-   Ú_valueÚ_bdim)Úzipr4   r6   ÚjoinÚappend)r7   r'   Ú	arg_namesÚ	arg_typesÚtensorsÚoptional_tensorsÚunwrapsÚtensorÚ
opt_tensorÚunwrap_codeÚunwrapped_arg_listÚargs               r   Úgen_unwrapsrW   9   s@  € ð 1Ð0 Ð0Ñ0Ô0€IØ0Ð0 Ð0Ñ0Ô0€IàQÐQ¥S¨°IÑ%>Ô%>ÐQÑQÔQ€Gðð Ý! )¨YÑ7Ô7ðñ ô Ðð €GØð 8ð 8ˆØ•= ¨Ñ7Ô7Ñ7ˆˆà&ð Eð Eˆ
ØÕ)¨*°mÑDÔDÑDˆˆØ—)’)˜GÑ$Ô$€KàÐØð +ð +ˆØ�'ˆ>ˆ>˜SÐ$4Ð4Ð4Ø c > > >°c°=°=°=Ð"AÑAÐÐà×%Ò% cÑ*Ô*Ð*Ð*ØÐ*Ð*Ð*r    Ú	outer_sigr   Úschemar   c                óÞ  — g }|j         j        }|D ]=}|j                             ¦   «         sŒ|                     d|j        › d|› d�¦  «         Œ>t          j        |¦  «        }d                     d„ t          |                       ¦   «         |                      ¦   «         ¦  «        D ¦   «         ¦  «        }dd                     |¦  «        › d|j
        j                             ¦   «         › d|› d	�S )
Nz!isBatchedAtLevel(r+   ú)c              3  ó$   K  — | ]}|j         V — Œd S r   )Úexpr)r?   Úes     r   ú	<genexpr>z4gen_case_where_all_bdims_are_none.<locals>.<genexpr>`   s5   è è € ð  ð  ØˆŒð ð  ð  ð  ð  ð  r    zif (z && z) {
  return at::_ops::z::call(ú);
})Ú	argumentsÚflat_allrD   Úis_tensor_likerL   r   r   Úfrom_schemarK   r   ÚfuncÚunambiguous_name)rX   rY   r'   Ú
conditionsÚ	flat_argsrV   ÚsigÚtranslated_argss           r   Ú!gen_case_where_all_bdims_are_nonerk   U   s  € ð €JØÔ Ô)€IØð Mð MˆØŒx×&Ò&Ñ(Ô(ð 	ØØ×ÒÐK¨s¬xÐKÐK¸=ÐKÐKÐKÑLÔLÐLÐLå
Ô
)¨&Ñ
1Ô
1€CØ—i’ið  ð  Ý! )×"5Ò"5Ñ"7Ô"7¸¿º¹¼ÑIÔIð ñ  ô  ñ ô €OðØ‡[‚[�ÑÔðð à”H”M×2Ò2Ñ4Ô4ðð à=Lðð ð ð r    Úreturnsútuple[Return, ...]Úresults_varc                óÔ  — d}g }| D ]§}t          |j        ¦  «        r.|                     d|› d|› d|dz   › d|› d|› d�¦  «         |dz  }ŒDt          |j        ¦  «        r.|                     d	|› d|› d|dz   › d|› d|› d�¦  «         |dz  }Œ†|                     d
|› d|› d�¦  «         |dz  }Œ¨t	          |¦  «        dk    rd|d         › d�}ndd                     |¦  «        › d�}|S )Nr   zmakeBatched(std::get<z>(z), std::get<é   z), r[   é   zmakeBatchedVector(std::get<z	std::get<zreturn ú;zreturn std::make_tuple(r+   r,   )r   rD   rL   r%   ÚlenrK   )rl   r'   rn   ÚidxÚwrapped_returnsÚretr3   s          r   Úgen_returnsrw   i   sr  € ð €CØ€OØð ð ˆÝ�S”XÑÔð 	Ø×"Ò"Øs¨ÐsÐs¨{ÐsÐsÈÈaÉÐsÐsÐS^ÐsÐsÐcpÐsÐsÐsñô ð ð �1‰HˆCˆCÝ˜CœHÑ%Ô%ð 	Ø×"Ò"Øy¨cÐyÐy°[ÐyÐyÈcÐTUÉgÐyÐyÐYdÐyÐyÐivÐyÐyÐyñô ð ð �1‰HˆCˆCà×"Ò"Ð#D¨sÐ#DÐ#D°kÐ#DÐ#DÐ#DÑEÔEÐEØ�1‰HˆCˆCÝ
ˆ?ÑÔ˜qÒ Ð Ø0˜?¨1Ô-Ð0Ð0Ð0ˆˆàI¨4¯9ª9°_Ñ+EÔ+EÐIÐIÐIˆØ€Mr    c                óH   — t          d„ | j        j        D ¦   «         ¦  «        S )Nc              3  óH   K  — | ]}|j                              ¦   «         V — Œd S r   ©rD   rc   r>   s     r   r_   z4accepts_at_least_one_tensor_input.<locals>.<genexpr>„   s0   è è € ÐJÐJ¨1ˆqŒv×$Ò$Ñ&Ô&ÐJÐJÐJÐJÐJÐJr    )Úanyra   rb   )rY   s    r   Ú!accepts_at_least_one_tensor_inputr|   ƒ   s%   € ÝÐJÐJ°Ô0@Ô0IÐJÑJÔJÑJÔJÐJr    Úargumentr	   c                ó,   — | j         d uo| j         j        S r   )Ú
annotationÚis_write)r}   s    r   Úis_mutated_argr�   ‡   s   € ØÔ dÐ*ÐK¨xÔ/BÔ/KÐKr    Únative_functionr   ú
str | Nonec                ój  — | j         }t          j        |¦  «        }|j        }|                     ¦   «         t
          j        k    r$t          d|                     ¦   «         › �¦  «        ‚t          |j	        j
        d         ¦  «        sd S t          d„ |j	        j
        D ¦   «         ¦  «        dk    rd S t          |¦  «        dk    rd S t          d„ |D ¦   «         ¦  «        sd S t          |¦  «        sd S d}t          |j	        j
        |¦  «        \  }}t          |||¦  «        }d|                     |j                             ¦   «         dz   ¬	¦  «        › d
|› dt'          j        |d¦  «        › dt'          j        |d¦  «        › dd                     |¦  «        › d|j	        j
        d         j        › d�S )NzExpected inplace schema, got r   c                ó0   — g | ]}t          |¦  «        ¯|‘ŒS r<   )r�   )r?   rV   s     r   rA   z-gen_vmap_inplace_plumbing.<locals>.<listcomp>š   s%   € ÐLÐLÐL�C½ÀsÑ8KÔ8KÐLˆCÐLÐLÐLr    rp   c              3  óf   K  — | ],}t          |j        ¦  «        pt          |j        ¦  «        V — Œ-d S r   )r   rD   r%   ©r?   rv   s     r   r_   z,gen_vmap_inplace_plumbing.<locals>.<genexpr>    s;   è è € ÐRÐRÀ3�y˜œÑ"Ô"Ð>¥n°S´XÑ&>Ô&>ÐRÐRÐRÐRÐRÐRr    Ú	cur_levelú:template <typename batch_rule_t, batch_rule_t batch_rule>
Ú_generated_plumbingr=   zÉ {
  c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched);
  auto maybe_layer = maybeCurrentDynamicLayer();
  vmap_check_escaped(maybe_layer, "gen_vmap_inplace_plumbing");
  int64_t ú = maybe_layer->layerId();
ú  r-   ú
  batch_rule(r+   z);
  return z;
})re   r   rd   rl   Úkindr   ÚinplaceÚAssertionErrorr�   ra   rb   rs   Úallr|   rW   rk   Údeclr   rf   r/   ÚindentrK   )r‚   rY   ri   rl   r'   rQ   rU   Úbdims_all_none_cases           r   Úgen_vmap_inplace_plumbingr•   ‹   sè  € ð
 Ô!€FÝ
Ô
)¨&Ñ
1Ô
1€CØŒn€Gð ‡{‚{�}„}�
Ô*Ò*Ð*ÝÐL¸V¿[º[¹]¼]ÐLÐLÑMÔMÐMÝ˜&Ô*Ô3°AÔ6Ñ7Ô7ð ØˆtÝ
ÐLÐL˜6Ô+Ô4ÐLÑLÔLÑMÔMÐQRÒRÐRØˆtõ ˆ7�|„|�qÒÐØˆtÝÐRÐRÈ'ÐRÑRÔRÑRÔRð ØˆtÝ,¨VÑ4Ô4ð Øˆtà€Må"-¨fÔ.>Ô.GÈÑ"WÔ"WÑ€GÐÝ;¸CÀÈÑWÔWÐðà‡‚ˆvŒ{×+Ò+Ñ-Ô-Ð0EÑE€ÑFÔFðð ð ðð õ 
„Ð$ dÑ+Ô+ðð õ 
„�˜$ÑÔðð ð �iŠiÐ*Ñ+Ô+ðð ð Ô
Ô
# AÔ
&Ô
+ðð ð ð r    c                óŠ  — | j         }t          j        |¦  «        }d}t          |j        j        |¦  «        \  }}t          |||¦  «        }d|                     |j         	                    ¦   «         dz   ¬¦  «        › d|› dt          j        |d¦  «        › dt          j        |d¦  «        › d	d
                     |¦  «        › d�S )Nrˆ   r‰   rŠ   r=   zÌ {
  c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched);
  auto maybe_layer = maybeCurrentDynamicLayer();
  vmap_check_escaped(maybe_layer, "gen_vmap_plumbing_no_returns");
  int64_t r‹   rŒ   r-   r�   r+   r`   )re   r   rd   rW   ra   rb   rk   r’   r   rf   r/   r“   rK   )r‚   rY   ri   r'   rQ   rU   r”   s          r   Úgen_vmap_plumbing_no_returnsr—   ¸   sì   € ØÔ!€FÝ
Ô
)¨&Ñ
1Ô
1€CØ€Må"-¨fÔ.>Ô.GÈÑ"WÔ"WÑ€GÐÝ;¸CÀÈÑWÔWÐð
à‡‚ˆvŒ{×+Ò+Ñ-Ô-Ð0EÑE€ÑFÔFð
ð 
ð ð
ð 
õ 
„Ð$ dÑ+Ô+ð
ð 
õ 
„�˜$ÑÔð
ð 
ð �iŠiÐ*Ñ+Ô+ð
ð 
ð 
ð 
r    c                ód  — | j         }t          j        |¦  «        }|j        }t	          |¦  «        sd S t          |¦  «        dk    rt          | ¦  «        S g d¢}t          d„ |D ¦   «         ¦  «        s|j         	                    ¦   «         |vrd S d| j
        v rd S |                     ¦   «         t          j        k    rt          | ¦  «        S |                     ¦   «         t          j        k    rd S d}d}t!          |j        j        |¦  «        \  }}t'          |||¦  «        }	t)          |||¦  «        }
d|                     |j         	                    ¦   «         dz   ¬	¦  «        › d
|› dt-          j        |	d¦  «        › dt-          j        |d¦  «        › d|› dd                     |¦  «        › d|
› d�S )Nr   )Ú#_scaled_dot_product_flash_attentionÚ#_scaled_dot_product_cudnn_attentionÚ-_scaled_dot_product_flash_attention_quantizedc              3  óH   K  — | ]}|j                              ¦   «         V — Œd S r   rz   r‡   s     r   r_   z$gen_vmap_plumbing.<locals>.<genexpr>Ý   s0   è è € Ð=Ð=¨c�”×'Ò'Ñ)Ô)Ð=Ð=Ð=Ð=Ð=Ð=r    Úinplace_viewÚresultsrˆ   r‰   rŠ   r=   zÁ {
  c10::impl::ExcludeDispatchKeyGuard guard(DispatchKey::FuncTorchBatched);
  auto maybe_layer = maybeCurrentDynamicLayer();
  vmap_check_escaped(maybe_layer, "gen_vmap_plumbing");
  int64_t r‹   rŒ   r-   z
  auto z = batch_rule(r+   z);
  z
})re   r   rd   rl   r|   rs   r—   r‘   r   rf   ÚtagsrŽ   r   r�   r•   Ú
functionalrW   ra   rb   rk   rw   r’   r/   r“   rK   )r‚   rY   ri   rl   Úreturn_symint_overridesrn   r'   rQ   rU   r”   ru   s              r   Úgen_vmap_plumbingr¢   Í   s  € ØÔ!€FÝ
Ô
)¨&Ñ
1Ô
1€CØŒn€Gõ -¨VÑ4Ô4ð ØˆtÝ
ˆ7�|„|�qÒÐÝ+¨OÑ<Ô<Ð<ðð ð Ðõ Ð=Ð=°WÐ=Ñ=Ô=Ñ=Ô=ðàŒK×(Ò(Ñ*Ô*Ð2IÐIÐIàˆtà˜Ô-Ð-Ð-Øˆtà‡{‚{�}„}�
Ô*Ò*Ð*Ý(¨Ñ9Ô9Ð9ð ‡{‚{�}„}�
Ô-Ò-Ð-Øˆtà€KØ€Må"-¨fÔ.>Ô.GÈÑ"WÔ"WÑ€GÐÝ;¸CÀÈÑWÔWÐå! '¨=¸+ÑFÔF€Oðà‡‚ˆvŒ{×+Ò+Ñ-Ô-Ð0EÑE€ÑFÔFðð ð ðð õ 
„Ð$ dÑ+Ô+ðð õ 
„�˜$ÑÔðð ð 	ðð ð $(§9¢9Ð-?Ñ#@Ô#@ðð ð ðð ð ð r    T)Úfrozenc                  ó&   — e Zd Zedd„¦   «         ZdS )ÚComputeBatchRulePlumbingÚfr   r   rƒ   c                ó$   — t          |¦  «        }|S r   )r¢   )Úselfr¦   r3   s      r   Ú__call__z!ComputeBatchRulePlumbing.__call__  s   € å" 1Ñ%Ô%ˆØˆr    N)r¦   r   r   rƒ   )Ú__name__Ú
__module__Ú__qualname__r   r©   r<   r    r   r¥   r¥     s3   € € € € € à ðð ð ñ !Ô ðð ð r    r¥   Únative_functionsúSequence[NativeFunction]c                ó†   — d                      t          t          t          ¦   «         | ¦  «        ¦  «        ¦  «        }d|› d�S )Nr-   z|
#pragma once
#include <ATen/Operators.h>
#include <ATen/functorch/PlumbingHelper.h>

namespace at { namespace functorch {

z 

}} // namespace at::functorch
)rK   Úlistr   r¥   )r­   Úbodys     r   Úgen_all_vmap_plumbingr²   	  sK   € Ø�9Š9•T�(Õ#;Ñ#=Ô#=Ð?OÑPÔPÑQÔQÑRÔR€Dð
ð ð
ð 
ð 
ð 
r    )r   r   r   r   )r   r&   r'   r&   r   r(   )r7   r8   r'   r&   r   r9   )rX   r   rY   r   r'   r&   r   r&   )rl   rm   r'   r&   rn   r&   r   r&   )rY   r   r   r   )r}   r	   r   r   )r‚   r   r   rƒ   )r‚   r   r   r&   )r­   r®   r   r&   )+Ú
__future__r   r/   Údataclassesr   Útypingr   Útorchgen.api.translater   Útorchgen.api.typesr   Útorchgen.contextr   Útorchgen.modelr	   r
   r   r   r   r   r   r   r   r   Útorchgen.utilsr   Úcollections.abcr   r   r#   r%   r4   r6   rW   rk   rw   r|   r�   r•   r—   r¢   r¥   r²   r<   r    r   ú<module>r¼      s˜  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð $Ð #Ð #Ð #Ð #Ð #ð ð )Ø(Ð(Ð(Ð(Ð(Ð(ðCð Cð Cð CðAð Að Að Að=ð =ð =ð =ð/ð /ð /ð /ð/ð /ð /ð /ð+ð +ð +ð +ð8ð ð ð ð(ð ð ð ð4Kð Kð Kð KðLð Lð Lð Lð*ð *ð *ð *ðZð ð ð ð*1ð 1ð 1ð 1ðh €�$ÐÑÔðð ð ð ð ñ ô ñ Ôððð ð ð ð ð r    