
    Vh	                        d dl mZmZ d dlmc mZ d dlZd dlZd dl	Zd dl
Zd dlZd dlmZmZ d dlmZmZ d dlZd dlmZ d dlmZmZ d dlZd dlmZ  ej4                         ej6                  k(  sJ dZd	Zd
Zd Z G d de       Z! ejD                  ddg      Z#dddejH                  dfdZ%d Z&dZ'd Z(d Z)d Z*d Z+d Z,d Z- G d d      Z.d Z/d,dZ0h dZ1d-d Z2h d!Z3d"Z4d# Z5d$d%d&Z6d' Z7d( Z8d) Z9d* Z:d+ Z;y).    )BroadcastingList2BroadcastingList3N)module_testsget_new_module_tests)is_iterable_of_tensorsnoncontiguous_like)deepcopy)AnyUnioninf   
      c                 J    t        | t              rt        d | D              S | S )Nc              3   2   K   | ]  }t        |        y wN)unpack_variables).0elems     a/home/dcms/DCMS/lib/python3.12/site-packages/torch/testing/_internal/jit_metaprogramming_utils.py	<genexpr>z#unpack_variables.<locals>.<genexpr>   s     =%d+=s   )
isinstancetuple)argss    r   r   r      s"    $====    c                       e Zd ZdZy)dont_convert N)__name__
__module____qualname__	__slots__r   r   r   r   r   #   s    Ir   r   non_differentiabletensorTFc                    
 t        | t              s| f} 
fd
t        
fd| D              }|r*|j                         D ci c]  \  }}| 
|       c}}ni }	||	fS c c}}w )Nc           
      4   fd}d }t        | t        j                  t        f      r| S t        | t              r5t        |       dk(  r' |t        j                  d            }	|_        |S t        | t              rNt        | d   t        j                        s1 | |t        j                  | d            j                  	      S t        | t              rtt        | j                  t        j                        r( | || j                  j                                    S  | || j                  j                                    S t        | t        j                        r| j                         j                  k7  rt        dd       | ||             j                         j                        j!                         }	xr" |j#                         xs |j                         |_        |S t%        |       r  |             S | S )	Nc                 d    r| j                         dk  r| j                         S t        |       S )N   )numelcloner   )r%   non_contiguouss    r   maybe_non_contigz7create_input.<locals>.map_arg.<locals>.maybe_non_contig-   s*    !V\\^a%7||~%%f--r   c                 "    | j                         S r   )conj)r%   s    r   	conjugatez0create_input.<locals>.map_arg.<locals>.conjugate3   s    ;;= r   r   r   )dtypedevice)r2   zFUser provided tensor is real for a test that runs with complex dtype, zwhich is not supported for now)r   torchSizer   r   lenrandnrequires_gradTensorrequires_grad_r$   r%   to
is_complexRuntimeErrordetachr+   is_floating_pointcallable)
argr-   r0   varvr2   r1   map_argr,   r7   s
        r   rC   zcreate_input.<locals>.map_arg,   s   	.	! cEJJ56JU#CAEKK%GHC -CJU#Js1vu||,L-ekk3eTZ.[\]llmz{{/0#**ell3 !1#**--v-2N!OPP-cjjmm6m.JKLLU\\*~~5#3#33"#k#CE E *3/0779<<F<KQQSA+Y1D1D1F1X!,,.AOHc]3U6:;;Jr   c              3   .   K   | ]  } |        y wr   r   )r   r@   rC   s     r   r   zcreate_input.<locals>.<genexpr>O   s     7cWS\7s   )r   r   items)	call_argsr7   r,   call_kwargsr1   r2   args_outkrB   
kwargs_outrC   s    `` ``    @r   create_inputrK   (   sl    i'L	" "F 7Y77HDOK,=,=,?@DAq!WQZ-@UWJZ As   A(c                  :   g dt         t         t         ft         t         t         fffdt         t         t         t         ft         t         t         t         fffdt         t         t         t         t         ft         t         t         t         t         fffdt         t         t         ft         t         t         fffdt         t         t         t         ft         t         t         t         fffdt         t         t         t         t         ft         t         t         t         t         fffdt         t         t         ft         t         t         ft         fdffd	t         t         t         fd
fdt         t         t         t         fd
ddfdt         t         t         t         t         fd
fdt         t         t         t         fdddgffdt         t         t         fdfdt         t         t         fddfdt         t         t         t         fdddfdt         t         t         t         fdddfdt         t         t         t         t         fdfdt        j                  ddggg      t        j                  ddggg      dddffdt        j                  ddgggg      t        j                  ddgggg      dddffdt        j                  ddggggg      t        j                  ddggggg      dddffdt         t         t         fd fd!t         t         t         t         fd fd"t         t         t         t         t         fd fd#t         t         t         fd$fd%t         t         t         t         fd&d'gffd(t         t         t         t         t         fg d)ffd*t         t         t         fd$ddfd+t         t         t         t         fd&d'gfddfd,t         t         t         t         t         fg d)fddfd-t         t         t         fd.dd/fd0t         t         t         fd.fd1t         t         t         fd.fd1t         t         t         t         fd.d2fd3t         t         t         t         fd.fd3t         t         t         t         t         fd.d2fd4t         t         t         fd.fd5t         t         t         fd6ddfd5t         t         t         fd7d8fd9t         t         t         fd:ddfd9t         t         t         fd:d8fd;t         dz
  t         dz
  t         dz
  fd:fd<t         t         t         fd=ddfd<t         t         t         fd>d8fd?t         t         t         fd:ddfd?t         t         t         fd@d8fdAt         t         t         fdBfdAt         t         t         fdCd8fdDt         t         t         fd:fdDt         t         t         fd@d8fdEt         t         t         fdBfdEt         t         t         fdCd8fdFt         t         t         fdGddfdFt         t         t         fdGd8fdHt         t         fdIfdHt         t         fdJd8fdKt         t         t         fdLddfdMt         t         t         fd:fdNt         t         t         fd:fdOt         t         t         fd:ddfdPt         t         t         fdQfdRt         t         t         fdQddfdRt         t         t         fddt        j                  fdSdfdTt         t         t         fd:ddfdUt         t         t         fd:ddfdVt         t         t         fd:ddfdWt         t         t         fdQddfdXt         t         ft        t         ffdd@dYgffdXt         t         ft        t         ft        ffdZd@dYgffd[t         t         t         ft         t         t        ft        j
                  t        t         t              ffd\t        j                  g d]g d^g      t        j                  d_d      fddfd`t        j                  g da      t        j                  d&d      t        j                  ddg      ffdbt         t         ft        t        j                  t                     t        t        j                  t                     d d d@fdcddfdbdt         t         t         ft        t        j                  t                     t        t        j                  t                     t        t        j                  t                     t        t        j                  t                     d@fdeddfdbdt         t         t         ft        t        j                  t                     t        t        j                  t                     t        t        j                  t                     t        t        j                  t                     d@fdfddfdbt         t         ft        t        j                  t                     t        t        j                  t                     t        t        j                  t                     t        t        j                  t                     d@fdgddfdbt         t         ft        t        j                  t                     t        t        j                  t                     d t        t        j                  t                     d@fdhddfdbt         t         ft        t        j                  t                     t        t        j                  t                     t        t        j                  t                     d d@fdiddfdbt         t         ft        t        j                  t                     t        t        j                  t                     d d djfdkddfdbt         t         ft        t        j                  t                     t        t        j                  t                     t        t        j                  t                     t        t        j                  t                     djfdlddfdbt         t         ft        t        j                  t                     t        t        j                  t                     d t        t        j                  t                     djfdmddfdbt         t         ft        t        j                  t                     t        t        j                  t                     t        t        j                  t                     d djfdnddfdot         t         t         ft        t        j
                  t                     t        t        j                  t                     ffdpt         t         t         t         fd&gfddjdqdrgffdpt         t         t         t         fd&gt        t        j                  t                     fdsdjdqdrgffdpt         t         t         t         fd&gd t        t        j                  t                     fdtdjdqdrgffdpt         t         t         t         fd&gt        t        j                  t                     t        t        j                  t                     fdudjg dvffdwt         t         t         fdt        j                  d&      ffdxt         t         t         fdyfdzt        j                  t        j                  dd&      d{      t        j                  g d|      fdfd}t        j                  t         d      t        j                  t         d      ffd}t        j                  t         d      t        j                  t         d      d@d@fd~fdt        j                  t        j                  t         d      d      t        j                  t        j                  t         d      d      ffddt         ft        j                  t         d
t        j                        ffdd
t        j                  d      j!                  d      ffddt         ft        t        j                  dt                     ffddt         ft        t        j                  dt                     ffddt         ft        t        j                  dt                     ffddt         ft        t        j                  dt                     ffddt         ft        j                  dt               fdfddt         ft        j                  dt               fdfddt         ft        j                  dt               fdfddt         ft        j                  dt               fdfdt         ft         ft         fffddt         ft        t        j                  dt                     ffddt         ft        t        j                  dt                     ffddt         ft        t        j                  dt                     ffdt         t         ft         t         ft        t        j                  t                     ffdddt         ddft        j"                  t         dd'd'g      ffddddgffdt         t         ft         t         fffdt         t         fd:fdt         t         ft         t         fffdt         t         ft         t         ft         t         fffdt         t         t         fd:fdt         t         t         t         fddgfdddd&gddgffdt         t         t         t         ft        t        j                  t         t         t         d            ffdt         t         fddd@g ddgffdt         t         fddd@g ddgffdt        j                  g dg      t        j                  g dg      ffdt         t         ft        t        j                  t         t         ft        j                              ddt        t        j                  t                     ffdt        j                  dd      j%                         t        t        j                  dd            t        t        j                  dd            ffdt        j                  dd      j%                         t        t        j                  dd            t        t        j                  dd            d d dfdfdt        j                  t         t         t               j                  d      j'                         j)                         t        j                  dt         t         t         ft        j*                        t        j,                  t         ft         t        j*                        t        j                  dt         t         ft        j*                        ffdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j
                  dd      j/                  dddd      dydfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j
                  dd      j/                  dddd      dydfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j
                  dd      j/                  dddd      dydfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j
                  dd      j/                  dddd      dydfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j
                  dd      j/                  ddd      dydfdt        j                  t         t        t              ddfdt        j                  t         t        t              ddfdt        j
                  dd      j/                  ddd      dydfdt        j                  t         t        t              ddfdt        j                  t         t        t              ddfdt        j
                  dd      j/                  ddd      dydfdt        j                  t         t        t              ddfdt        j                  t         t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j
                  ddd      j/                  ddddd      dydfdt        j                  t         t        t        t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j
                  ddd      j/                  ddddd      dydfdt        j                  t         t        t        t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j
                  dd      j/                  dddd      ddfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j                  t         t         t        t              ddfdt        j                  t         t        t              ddfdt        j                  t         t        t              ddfdt        j                  t         t        t              ddfdt        j                  t         t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j                  t         t        t        t        t              ddfdt        j                  t         t        t        t        t              ddf} | S )Nconv1dconv2dconv3dconv_transpose1dconv_transpose2dconv_transpose3dconv_tbcr)   
avg_pool1d   
avg_pool2d )T
avg_pool3dfractional_max_pool2drV   
max_pool1d)r)      )r)   r\   r\   r\   FTwith_indices
max_pool2d)Tzaten::max_pool2d_with_indices
max_pool3dmax_unpool1d       @   r\   r   max_unpool2dmax_unpool3d	lp_pool1d)ra   rV   r)   	lp_pool2d	lp_pool3dadaptive_max_pool1d)r   adaptive_max_pool2dr      adaptive_max_pool3d)rV   r)   r)   adaptive_avg_pool1dadaptive_avg_pool2dadaptive_avg_pool3ddropout)      ?)Tzaten::native_dropoutalpha_dropout	dropout2dbatched	dropout3dfeature_alpha_dropout	threshold)皙?ra   )rw   ra   Tinplacerelur   gluhardtanh)      rp   )r|   rp   Trelu6Telu)?)r   Tselucelu
leaky_relu)g{Gz?rrelu)rw   333333?F)rw   r   FT
hardshrink)g?
tanhshrinksoftsignsoftplussoftmin)r   softmaxwith_all_argstanhsigmoidsilulog_softmaxlinearzaten::linearaddmmbilinear	embedding)r\   r)   rb   r   )rb   rV   r)   r      embedding_bag)r\   r)   rb   r)   
batch_normtraining)Taten::_batch_norm_impl_index	size_zerosize_zero_inferencewith_weight_and_bias_trainingwith_only_bias_trainingwith_only_weight_trainingF	inferencewith_weight_and_bias_inferencewith_only_bias_inferencewith_only_weight_inferenceinstance_norm
layer_normaten::contiguousr   with_only_weightwith_only_biaswith_weight_and_bias)r   r   zaten::addcmul
group_normlocal_response_norm)r)   nll_loss)dim)r\   r   rb   poisson_nll_lossfullkl_divr   cross_entropyr1    binary_cross_entropy_with_logitssmooth_l1_loss
huber_lossl1_lossmse_loss	with_gradmargin_ranking_losshinge_embedding_losssoft_margin_lossmultilabel_soft_margin_losscosine_embedding_loss)pixel_shuffle)r\   	   rb   rb   rU   )pixel_unshuffle)r\   r\      r   rU   affine_gridpad)rV   rV   rb   r)   pairwise_distancepdistcosine_similaritytriplet_margin_loss	normalizeunfoldfold)r\   r   r   grid_samplegumbel_softmax)ra   )zaten::softmaxz	aten::addz	aten::divz	aten::neg)ra   Thardmultilabel_margin_loss)g?gɿgQ?)r   r   r\   multi_margin_lossg      ?binary_cross_entropymeansize_averagectc_lossupsample)Nra   
with_scale)rb   	with_sizeinterpolate
nearest_4dnearest_4d_with_scalenearest_4d_with_sizearea_4darea_4d_with_scalearea_4d_with_sizebilinear_4dbilinear_4d_with_scalebilinear_4d_with_size
bicubic_4dbicubic_4d_with_scalebicubic_4d_with_size
nearest_3dnearest_3d_with_scalenearest_3d_with_sizearea_3darea_3d_with_scalearea_3d_with_size	linear_3dlinear_3d_with_scalelinear_3d_with_sizenearest_5d_with_scalenearest_5d_with_sizearea_5darea_5d_with_scalearea_5d_with_sizetrilinear_5dtrilinear_5d_with_scaletrilinear_5d_with_size)r)   NnearestNF%nearest_4d_not_recompute_scale_factor)rb   Nr   NF/nearest_4d_with_size_not_recompute_scale_factor)Nra   r   NF1bilinear_4d_with_scale_not_recompute_scale_factor)rb   Nr   NF0bilinear_4d_with_size_not_recompute_scale_factor)Nra   bicubicNF0bicubic_4d_with_scale_not_recompute_scale_factor)rb   Nr   NF/bicubic_4d_with_size_not_recompute_scale_factor)Nra   r   NF0nearest_3d_with_scale_not_recompute_scale_factor/nearest_3d_with_size_not_recompute_scale_factor)Nra   r   NF/linear_3d_with_scale_not_recompute_scale_factor)rb   Nr   NF.linear_3d_with_size_not_recompute_scale_factor0nearest_5d_with_scale_not_recompute_scale_factor/nearest_5d_with_size_not_recompute_scale_factor)Nra   	trilinearNF2trilinear_5d_with_scale_not_recompute_scale_factor)rb   Nr  NF1trilinear_5d_with_size_not_recompute_scale_factor)Sr3   r%   doubleMzerosrandr$   r6   onesFr   r   randintint64emptyrandom_r4   r   r=   r9   longr   view)nn_functional_testss    r   get_nn_functional_testsr  b   s   [	Aq!91ayl+[	Aq!Q<1aA,1[ 
Aq!Q?aAq!_$67[ 
aAY!Q5	[
 
aAq\Q1aL?;[ 
aAq!_1aA.@A[ 
aAY!QQD! 45[ 
1ay$'[ 
1a|T2w7[ 
1aA-[ 
!1aA,QF=[ 
1ay&)[ 
1ay";^L[ 
1a|VR1XY[ 
1a|%>Pwx[  
1aA/![" 
Qyk2U\\QF8*5MqRSUV4WX#[$ 
"a	{m4u||1vhZL7QSTVWYZ6[\%[& 
2q'}o61a&
|n9UWXZ[]^8_`'[( 
q!Qi-)[* 
q!QlK0+[, 
q!Q1o{3-[. 
Aq	40/[0 
Aq!1vi81[2 
Aq!Q)>3[4 
Aq	4W=5[6 
Aq!1viWE7[8 
Aq!Q)r7K9[: 
Q1Ivr+IJ;[< 
1a)V,=[> 
q!Qi(?[@ 
q!QlFI6A[B 
q!QlF+C[D 
q!Q1ovy9E[F 
!1a)V4G[H 
q!QiB8I[J 
q!Qi)<K[L 
!QBG,M[N 
!QB	*O[P 
QAq1u%r+Q[R 
aAYR9S[T 
aAY 19=U[V 
1a)RW-W[X 
1a)dY/Y[Z 
Aq	6#[[\ 
Aq	;	2][^ 
!QB _[` 
!QTI.a[b 
!QF$c[d 
!QK3e[f 
1ay'2w7g[h 
1ay'95i[j 
1a&+-k[l 
1a&19=m[n 
1ay&"g6o[p 
1ay"&q[r 
aAY$s[t 
aAYB0u[v 
Q1It%w[x 
Q1ItR1y[z 
Q1I1ell3_gN{[| 
!QBG,}[~ 
Q1Ir2w/[@ 
!QBG,A[B 
Aq	4W5C[D 
Aq6QF9b4.1A*BCE[F 
Aq6QFQD>7TN;K4LMG[H 
aAY!QEKK1a,@ BDI[J 
ellL,#?@5::aQRCSBVXZ\cdK[L 
%,,|4uzz!Q7GWXZ[V\I]6_aM[N 
1vA/1CEJJqM1RTXZ^`dg>	@O[T 
1a|A/1CEJJqM1RA/1CEJJqM1RTX\?	AU[\ 
1a|A/1CEJJqM1RA/1CEJJqM1RTX\!#I	K][d 
1vA/1CEJJqM1RA/1CEJJqM1RTX\+-S	Ue[l 
1v 25;;q> BDVW\WaWabcWdDe $&8A&G Q%'M	Om[r 
1v 25;;q> BDVW\WaWabcWdDe 25;;q> BD$ R')O	Qs[x 
1v 25;;q> BDVW\WaWabcWdDe $dE 5?	Ay[~ 
1v 25;;q> BDVW\WaWabcWdDe 25;;q> BDVW\WaWabcWdDegl p,.T	V[D 
1v 25;;q> BDVW\WaWabcWdDe $&8A&G R&(N	PE[J 
1v 25;;q> BDVW\WaWabcWdDe 25;;q> BD% S(*P	RK[P 
1a)&8Q&HJ\]b]g]ghi]jJk%lnQ[R 
1a|qcVR
$&DE	F	HS[V 
1a|qc+=ejjm+L%NPb
$&DE	F	HW[Z 
1a|qc41CEJJqM1R%TVf
$&DE	F	H[[^ 
1a|qc+=ejjm+L&8A&G&IJ`
V	W	Y_[d 
1ay1ejjm"57e[f 
Aq	52g[h 
Q]]5;;q!#4!<u||I?V>XZ\^i[j 
UZZ1-

1a0@/BDk[l 
UZZ1-

1a0@$/MvVm[n 
1==Q!3Q7!))EKKPQSUDVXY:Z9\^o[p 
1a&5==D#L"NPq[r 
,TEKKN4J4J14M3PRs[t 
Aq6$6uzz!Q7G$H#JLu[v 
1v 25::a3C DFHw[x 
QF/

1a0@ACEy[z 
aV0Aq1ABDF{[| 
Aq6UZZ1%5#8+F}[~ 
1vAq!14kB[@ 
QFejjA.1;?A[B 
aVuzz!Q/2K@C[D 
taTl4E[F 
 !Q*<UZZ1=M*N)PRG[H 
aV&8Aq9I&J%LNI[J 
'A1CEJJqRSDT1U0WYK[L 
!1a&Aq63EejjQRn3U*VXM[N 	/O[P 	3Q[R 
Aq	EJJ1a|$<#>@S[T 
1vi)U[V 
q!f1vi1W[X 
1a&"Y[Z 
q!f1vi1[[\ 
A!Q!Q(8:][^ 
q!Qi%_[` 
Aq!Q<1a&+a[b 
#q!fq!f%57c[d 
Aq!'9%**Q1a:P'Q&SUe[f 
Aq65"t5`cnbo.pqg[h 
Aq6;?jmxly8z{i[j 
"5<<1B0C#Du||U^T_G`Fbdk[l 
q!f'9%--A5X]XcXc:d'e'(".@Q.P'R 	Tm[p 
 Q!2!:!:!<?QRWR\R\]^`aRb?c?QRWR]R]^_abRc?d?f 	hq[t 
 Q!2!:!:!<

1a 01Aq 12D$HIW	Yu[z 
UZZ1a(44Q7>>@OOQ
--1q!fEJJ
7QD!SXS]S]9^
--1qd%**
5
7	8{[@ 
U[[Aq!,j,GA[B 
U[[Aq!,dK@C[D 
Aq)..q!Q:D,OE[F 
Aq!Q/=TUG[H 
Aq!Q/7MNI[J 
Aq)..q!Q:D)LK[L 
Aq!Q/=QRM[N 
Aq!Q/7JKO[P 
Aq)..q!Q:D-PQ[R 
Aq!Q/=UVS[T 
Aq!Q/7NOU[V 
Aq)..q!Q:D,OW[X 
Aq!Q/=TUY[Z 
Aq!Q/7MN[[\ 
Aq)..q!Q7|L][^ 
Aq!,j:QR_[` 
Aq!,d4JKa[b 
Aq)..q!Q7yIc[d 
Aq!,j:NOe[f 
Aq!,d4GHg[h 
Aq)..q!Q7{Ki[j 
Aq!,j:PQk[l 
Aq!,d4IJm[n 
Aq!Q2J@WXo[p 
Aq!Q2D:PQq[r 
Aq!,11!Q1a@$	Rs[t 
Aq!Q2J@TUu[v 
Aq!Q2D:MNw[x 
Aq!,11!Q1a@$Wy[z 
Aq!Q2J@YZ{[| 
Aq!Q2D:RS}[~ 
Aq)..q!Q:<]	0	2[B 
Aq!Q/1R	:	<C[F 
Aq!Q/1T	<	>G[J 
Aq!Q/1S	;	=K[N 
Aq!Q/1S	;	=O[R 
Aq!Q/1R	:	<S[V 
Aq!,.P	;	=W[Z 
Aq!,.O	:	<[[^ 
Aq!,.O	:	<_[b 
Aq!,.N	9	;c[f 
Aq!Q24V	;	=g[j 
Aq!Q24U	:	<k[n 
Aq!Q24X	=	?o[r 
Aq!Q24W	<	>s[x r   z#
def the_method({}):
    return {}
c                     t        | t              rt        |       S t        | t        j                        rdt        |       z   S t        |       S )Ntorch.)r   strasciir3   r8   )values    r   value_to_literalr  F  s=    %U|%&#e*$$5zr   c           
         dj                  |j                         D cg c]  \  }}|dz   t        |      z    c}}      }|d   }|dk(  r|dd  }dj                  |      }|t        |      rt        |      rdndz  }||z  }|dk(  s|dk(  rd	|  d
| d}	|	S |dk(  r| d|  d
| d}	|	S |dk(  rd|  d
| d}	|	S t	        d      c c}}w )N, =r   methodr\   rX   
functionalfunctionr  ().nn_functionalztorch.nn.functional.zUnsupported function type)joinrE   r  r5   	TypeError)
method_name	func_typer   kwargsrI   rB   
kwargs_strself_argargument_strcalls
             r   get_callr,  O  s   fllnUdaAG&6q&99UVJAwHHABx99T?LCI#f+D2=LJLL I$;}Al^15 K 
h	1[M<.: K 
o	%%k]!L>C K 344! Vs   C
c                 0    | t         k(  ry| t          k(  ry| S )Nzmath.infz	-math.infr   )xs    r   get_constantr/  d  s    CxSDyHr   c                 &   g }g }g }| D ]  }t        |t        j                        rBdt        |       }|j	                  |       |j	                  |       |j	                  |       `t        |      rNdt        |       }|j	                  |dz          |j	                  |       |j	                  t        |             t        |t              r|j	                  d| d       |j	                  t        t        |                    |||fS )Niz: List[torch.Tensor]')	r   r3   r8   r5   appendr   listr  r/  )r   formalstensorsactualsr@   names         r   get_script_argsr9  k  s    G=?GG 3c5<<(s7|n%DNN4 NN4 NN3#C(s7|n%DNN4"889NN4 NN49%S!NNQse1:&NN3|C0123 Wg&&r   c                     t        |      \  }}}t        | |||      }t        j                  dj	                  |      |      }t
        j                  j                  |      }	|	j                  |fS Nr  )	r9  r,  script_templateformatr#  r3   jitCompilationUnit
the_method)
r%  r&  r   r'  r5  r6  r7  r+  scriptCUs
             r   gen_script_fn_and_argsrC    sa     / 5GWgKGV<D##DIIg$6=F		"	"6	*B=='!!r   c                       fdS )Nc                      t        g| i |\  }}j                  |j                  |        || } |j                  | _        |S r   )rC  assertExportImportgraph	graph_for
last_graph)	r   r'  fnr6  outputr&  r%  	script_fnselfs	        r   rL  z#create_script_fn.<locals>.script_fn  sR    ,[)UdUfUG'2W+r||W5	r   r   )rM  r%  r&  rL  s   ```@r   create_script_fnrN    s     r   c                       e Zd ZU ee   ed<   ee   ed<   ee   ed<   ee   ed<   eeef   ed<   ee   ed<   eeef   ed<   eeef   ed<   ed	        Z	d
 Z
ddZy)SplitInputsall_tensorstensor_argsnontensor_args	arg_typestensor_kwargskwarg_ordernontensor_kwargskwarg_typesc                 P    t        | t        j                        xs t        |       S r   )r   r3   r8   r   )r@   s    r   _is_tensor_inputzSplitInputs._is_tensor_input  s    #u||,K0Fs0KKr   c                 ~   |D cg c]  }| j                  |      rdnd c}| _        |j                         D ci c]  \  }}|| j                  |      rdnd c}}| _        |D cg c]  }| j                  |      s| c}| _        |D cg c]  }| j                  |      r| c}| _        |j                         D ci c]  \  }}| j                  |      s|| c}}| _        |j                         D ci c]  \  }}| j                  |      r|| c}}| _        g | j                  | j                  j                         D cg c]  \  }}|	 c}}| _        |j                         D cg c]  \  }}|	 c}}| _	        y c c}w c c}}w c c}w c c}w c c}}w c c}}w c c}}w c c}}w )Nts)
rZ  rT  rE   rX  rR  rS  rU  rW  rQ  rV  )rM  r   r'  r@   rI   rB   s         r   __init__zSplitInputs.__init__  sg   PTU!6!6s!;#DUTZT`T`TbcDAqAd&;&;A&>sCGc+/NC43H3H3MCN.2Us$:O:OPS:TsU/5||~Ztq!AVAVWXAYadZ28,,. a$!QH]H]^_H`A a[T--[t?Q?Q?W?W?Y0Ztq!0Z[*0,,.9$!QA9 VcNUZ a0Z9sF   F F)F FF"'F"F' F'F-F-F3<F9c                    | j                   |j                   k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ry| j                  |j                  k7  ryy)NFT)rT  rX  rV  rS  rW  )rM  others     r   nontensors_matchzSplitInputs.nontensors_match  st    >>U__,u000u000%"6"66  E$:$::r   N)r`  rP  )r    r!   r"   r4  r
   __annotations__r  dictstaticmethodrZ  r^  ra  r   r   r   rP  rP    s|    ccICyS>!c38n$c3hL L:r   rP  c                 :     t               fd}|fS )Nc                  6   t        |       }t        	j                        D cg c]  \  }}|dk(  r|   n
t        |       }}}	j                  j                         D ci c]  \  }}||dk(  r
|   n
t        |       }}} |i |S c c}}w c c}}w )Nr]  )iter	enumeraterT  nextrX  rE   )tensors_r6  r1  r]  	full_argsrI   full_kwargsr   rJ  inputsr'  s          r   new_fnz(partial_apply_nontensors.<locals>.new_fn  s    x.HQRXRbRbHcd1ST!Wd7m;d	dOUOaOaOgOgOijtq!qqCx&)T']Bjj9,,, ejs   B$ B)rP  )rJ  r   r'  rn  rm  s   ``` @r   partial_apply_nontensorsro    s     v&F- 6>r   c                       fdS )Nc                  $   t        | |      \  }}rt        	d      srt        j                  j	                  ||j
                  d      }j                  |j                  |j
                          ||j
                   }r^|	_        |	_	        nOj                  	j                  j                  |              	j                  |j
                   }	j                  } |j                  |j
                   	_        |j                  	_        |S )NtracedF)check_trace)ro  hasattrr3   r>  tracerQ  rF  rG  rr  split_inputs
assertTruera  rH  rI  )
rm  r'  
fn_tensorsrv  rr  rK  cache_traced_fnrJ  rM  	traced_fns
         r   rz  z#create_traced_fn.<locals>.traced_fn  s     $<B#O 
Lgi&BYY__Z1I1IW\_]F##FLL,2J2JK\556F#)	 )5	& OOI22CCLQR%Y%%|'?'?@F%%F/v//1I1IJ	 ,,	r   r   )rM  rJ  ry  rz  s   ```@r   create_traced_fnr{    s    * r   >
   test_nn_foldtest_norm_frotest_norm_nuctest_nn_unfoldtest_to_sparsetest_nn_ctc_losstest_norm_fro_cputest_to_sparse_dimtest_norm_fro_defaulttest_norm_nuc_batchedc                 d   d| z   }|dk7  r|dz   |z   }t        |f      d   d   }t        |      \  }}t        |j                        }	t        t        |            }
|f|z   }|	f|
z   }t        j
                  j                         5  t        | dg| \  }}d d d        ||fS # 1 sw Y   fS xY w)Ntest_nn_rX   _r   r"  )rK   r	   datar   r3   _jit_internal_disable_emit_hooksrC  )r8  	self_sizer   variant_name
extra_args	test_nameself_variableargs_variable_kwargs_variableself_tensorargs_tensorf_args_variablef_args_tensorrL  rm  s                  r   (get_nn_functional_compiled_fn_and_inputsr    s    T!IrOl2	 ).q1!4M '34&8#M#=--.K+M:;K$&6O N[0M				0	0	2 \24[?[	6\f\fs   B##B/>
   test_nn_CrossMapLRN2d$test_nn_AdaptiveAvgPool2d_tuple_none$test_nn_AdaptiveAvgPool3d_tuple_none$test_nn_AdaptiveMaxPool2d_tuple_none$test_nn_AdaptiveMaxPool3d_tuple_none$test_nn_Transformer_multilayer_coder/test_nn_TransformerDecoderLayer_gelu_activation/test_nn_TransformerDecoderLayer_relu_activation/test_nn_TransformerEncoderLayer_gelu_activation/test_nn_TransformerEncoderLayer_relu_activationz 
def forward({}):
    return {}
c                       fd}|S )Nc                     t        |       \  }}}dj                  dg|z         }dj                  |      }d| d}t        j                  ||      }g |j	                  d      rdg G fddt
        j                  j                        fd	}	 |	|      }
rj                  |
|        |
|   |
j                  t        _        |
S )
Nr  rM  zself.submodule(r   is_constant	submodulec                   ,     e Zd ZW Zd fdZ xZS )>create_script_module.<locals>.script_module.<locals>.TheModulec                 6    t         |             | _        y r   )superr^  r  )rM  	__class__constructor_args	nn_modules    r   r^  zGcreate_script_module.<locals>.script_module.<locals>.TheModule.__init__7  s     "!*,<!=r   )returnN)r    r!   r"   __constants__r^  __classcell__)r  r  r  submodule_constantss   @r   	TheModuler  4  s    /M> >r   r  c                 N            }t        |       |j                  |        |S r   )r  define)rA  moduler  s     r   make_modulez@create_script_module.<locals>.script_module.<locals>.make_module;  s"    [FKMM&!Mr   )r9  r#  script_method_templater=  getr3   r>  ScriptModuleassertExportImportModulerG  create_script_modulerI  )r   r'  _formalsr6  r7  method_argscall_args_strr+  rA  r  r  r  r  r  r  rM  s              @@r   script_modulez+create_script_module.<locals>.script_module'  s    %4T%:"'7ii7 23		'* q1'..{DA ::m$#.-	> 	>		.. 	>	 V$))&':DM*0,,'r   r   )rM  r  r  r   r'  r  s   ```   r   r  r  &  s    !D r   r  )r&  c                   t        |      \  }}}t        | |||      }t        j                  dj	                  |      |      }	t
        j                  j                  |	      }
t
        j                  j                  |
j                  j                         t
        j                  j                  |
j                  j                         t
        j                  j                  |
j                  j                  t        |      |       y r;  )r9  r,  r<  r=  r#  r3   r>  r?  _C_jit_pass_inliner@  rG  _jit_pass_constant_propagation_jit_check_alias_annotationr   )r%  r   r'  	aten_namer&  r5  r6  r7  r+  rA  rB  s              r   check_alias_annotationr  K  s     / 5GWgKGV<D##DIIg$6=F		"	"6	*B	HHbmm112	HH++BMM,?,?@	HH(()<)<eGniXr   c                  N    d| v r| d   S d| v r| d   S d| v r| d   j                   S y )Nmodule_namefullnameconstructor)r    )r'  s    r   get_nn_module_name_from_kwargsr  U  sF    m$$	v	j!!	&	 m$--- 
!r   c                  R    d| v r| d   }nt        di | }d| v r
| d| d    }d| S )Nr  descr  r  r   )r  )r'  r  s     r   get_nn_mod_test_namer  ]  sK    V:&	2<V<	V$+Qvf~&67Ii[!!r   c                  p    t        di | }|j                  d      }|dk(  r|S |d|j                  d       S )Nr  r   r   )r  find)r'  r8  indexs      r   get_nn_module_class_from_kwargsr  f  s=    )3F3DIIcNE{Adiin%%r   c                     t        di |}d|v rd|d   v ry |}d|v r
| d|d    }t        di |}|t        v ry d|v r|d   }nt        t        j
                  |      }dt        |      v ry d|v r |d          }n|j                  dd      }t        j                  }d	|v rJ |d	          }t        |t        j                        r|f}t        d
 |D              rt        j                  }n|d   f}d|v r||d   z   }d|v r
||d   fz   }n*d|v r&t	        j                  |      r|f}| |d          fz   }t        ||      \  }}	t        t!        |            }
t        |
      }|
 t#        d ||g|
 |
 }}||fS )Nr  evalr  r  FunctionalModuleconstructor_args_fnr  r   input_fnc              3   <   K   | ]  }|j                           y wr   )r;   )r   r%   s     r   r   z<try_get_nn_module_compiled_mod_and_inputs.<locals>.<genexpr>  s     7vv  "7s   
input_sizer  target_size	target_fnr   )r  r  EXCLUDE_SCRIPT_MODULESgetattrr3   nnr  r  r  r   r8   allcdouble	is_tensorrK   r	   r   r  )r   r'  r8  r  r  r  input_dtypeinputr  r  r  out_var_argsmods                 r   )try_get_nn_module_compiled_mod_and_inputsr  n  s   )3F3DFfVn4I k6&>"23	$.v.I**=)	EHHd+	S^+&86"78:!::&8"= ,,KV"z"$eU\\*HE777--K%' v|,,.00		??5!HE,,.00&25&L#M#/>?O'G ! #"6i)#,;##3E <r   c                     dt         t         t        ft         t         ft         t         ffddt         t         ft         t         fddt         t         ft         t         fddt         t         ft         t         fdddd	t        j                  d
dd      t        j                  d
dd      fdddddt        j                  ddd      fddg} t        t               z   | z   S )NBilinear)r  r  r  r  RNNCell)r  r  r  LSTMCellGRUCellMultiheadAttention)      )r   r  r  r   r  r  T)r  r  r  r  slowTestTransformer)r\   r\   r\   r\   r)   )rV   r\   r\   r\   )r  r  r3   r6   r   r   )additional_module_testss    r   get_all_nn_module_testsr    s    
 &!"Aq	a&q6)		
 %!"Aa&	
 &!"Aa&	
 %!"Aa&	
 0 (& ;;r1c2EKKAs4KL	
 ) /# ;;q!Q/1	
;$L .003JJJr   )F)rX   )<torch.jit.annotationsr   r   torch.nn.functionalr  r  r
  r3   
torch.cuda	torch.jittorch.jit._loggingtorch.jit.frontend!torch.testing._internal.common_nnr   r   $torch.testing._internal.common_utilsr   r   collectionscopyr	   typingr
   r   mathr   get_default_dtypefloat32Lr  r  r   r   r   
namedtupler$   floatrK   r  r<  r  r,  r/  r9  rC  rN  rP  ro  r{  EXCLUDE_SCRIPTr  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s3   G        P [     u EMM1 115  ,[++,@8*M *.uRV^c^i^irv ) t]~
*'."
# #P	2.,   
#J OW Y."&;|)Kr   