U
    <c0W                     @   s8   d dl Z d dlmZ G dd deZG dd deZdS )    N)TEST_WITH_ROCMc                       s$   e Zd Zdd Z fddZ  ZS )AutocastTestListsc           	      C   s   t j||f|t jdf}|rHt j||f|t jdt j||f|t jdfnt j||f|t jdf}t j|| |f|t jdt j|| |f|t jdt j|| |t jdt j|| |t jdf}|| | S )Ndevicedtypetorchrandnfloat32)	selfn
num_chunksis_lstmdevr   inputhxweights r   O/tmp/pip-unpacked-wheel-gikjz4vx/torch/testing/_internal/autocast_test_lists.py_rnn_cell_args   s    z AutocastTestLists._rnn_cell_argsc              -      s
  t    d}tj|tj df}tj|tj df}tj|tj df}tj||ftj df}tj||ftj df}tj||ftj df}|||f||||f|||||ff}	 fdd|	D }
tj|ftj df}tjdtj df}tj|tj df}tj|tj df}tj||ftj df}tj||ftj df}tj||ftj df}tj||ftj df}d|| tjfd|| tjfd|| tjfd	|| tjfd
|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| ftjfd|| tjfd|| ftjfg| _d|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfg	| _d|
d | d fd|
d | d fd|
d fd |
d fd!|
d" fd#|
d | fd$|
d fd%|
d fd&|
d" fd'|
d | d( fd)|
d d* t	fd+|
d d, t	fd-|| fd.|| | fd/|| | fd0|| | fd1|| fd2d3|| fd4|| fd5|| fd6|| | fd7|tj|||f tjd8tj|||f tjd8f fd9tj|||f tjd8tj|||f tjd8tj|||f tjd8ffd:tj|||f tjd8tj|||f tjd8ffd;| j
|d<d= tjd>fd?| j
|d@dA tjd>fdB| j
|ddA tjd>fdC| j
|ddA tjd>fg| _dD|d dEdFffdG|d dEdFffdH|fdI|d dEdFffdJ|fdK|fdL|d dMdNffdO|d dMdNffdP|d dMdNffdQ|d dEdNffdR|fdS|d dTdNffdU|fdV|d dWdXffdY|d dZ dTdNf| fdY|d dZ dTdNfd[ fd\|d] fd^|d] fd_||d  ff fd`|da fdb|fdb|dcdifdb|dddifdb|dddefdf|| fdg|| d=dAdhtjjdif fdjtjdd"d@gg tjd8tjdd@d<gg tjd8tjdg tjd8ffdk|tj| tjd8f fdl|tj||f tjd8f fdm|| tj|f tjd8f fdn|| | fdo|tj||f tjd8f fdp|d] fdq|d] fdr|| fds|fdt|| fdu|fdu|d] fdv|dw fdx|fdx|da fdy|da fg+| _dz|| |d dMd{f fd||| | fd}||d dMd{f fd~tjdtj dtjdtj dtjdtj dtjdatj dffdtjd@tj dtjd@tj dffd|| fdtjdtj dtjdtj ddddAffd|tjdg tjd8ftjd tjd8f fd|tjdg tjd8ftjd tjd8f fdtjdtj dtjdtj dffdtjd"d"d"tj ddtjdd"d dtjdtj dffdtjd"d"d"tj ddtjdd"d dtjdtj dffg| _d|| | fg| _d|fdtj||f tjd8tj|f tjd8ffdtj||||f tjd8tj|||f tjd8ffd|| fd|| fd|| fd|tj||f tjd8f fd|tj||f tjd8f fd|tj|f tjd8f fg	| _d|| | ffg| _d|| fg| _dtj| tjd8dffg| _ dtj||f tjd8tj||f tjd8ftj!j"fg| _#d S )N   r   r   c                    s0   g | ](}t j|t j d t j|t j d fqS r   r   .0Zdimsetr   r   r   
<listcomp>"   s   z.AutocastTestLists.__init__.<locals>.<listcomp>   eqgegtleltneadddivmulcatequalstack__eq____ge____gt____le____lt____ne____add____div____mul__Z_convolution)	r   r   r   r   r3   Fr4   r   FTT)
r3   r4   r3   Fr4   r   FTTTconv1dr   conv2dconv3d   conv_tbcconv_transpose1dconv_transpose2dconv_transpose3dZconvolution)r3   r4   r3   Fr4   r   Zcudnn_convolution)r4   r3   r3   r   FTTZcudnn_convolution_transpose)r4   r4   r3   r3   r   FTTZpreluaddmmZaddmvaddrmatmulZeinsumzbkhd,bqhd->bqkhmmmvZchain_matmuladdbmmr   baddbmmbmmZ	lstm_cell   T)r   r   r   r   Zgru_cell   FZrnn_tanh_cellZrnn_relu_cellacosgg?asincoshZerfinvexpexpm1logg?g      Y@log10log2log1pZ
reciprocalZrsqrtg        sinhtangg?pow      ?)g333333?Zsoftmax)r   Zlog_softmaxZ
layer_normZ
group_norm)r   Znormdimp)rU   rT   Zcosine_similaritypoisson_nll_loss:0yE>meancosine_embedding_losshinge_embedding_lossZkl_divmargin_ranking_losstriplet_margin_loss binary_cross_entropy_with_logitsZcumprodZcumsumdistZpdistZcdistprodZrenorm)r8   r   rS   sumZ	logsumexpZaddcdivd   Zaddcmulatan2Zbilinear)r   r8   )r   r8   r8   ZcrossdotZgrid_sampler)r8   rF   !      )r8   re      r8   Z	index_putZ	tensordot)r8   r8   r8   Zscatter_add)r   linearZsoftplusnll_loss
nll_loss2dl1_losssmooth_l1_lossmse_lossmultilabel_margin_losssoft_margin_lossmulti_margin_lossZlinalg_multi_dot
__matmul____pow__g      ?binary_cross_entropy)$super__init__r   r	   Zfloat16r
   booltorch_expect_builtin_promotemethods_expect_builtin_promoter   r   Z
torch_fp16clampZnumelnn
_reductionget_enumtensorintonesrand
torch_fp32longzerosrandinttorch_need_autocast_promoteZnn_fp16floatZhalfnn_fp32Zlinalg_fp16Zmethods_fp16Zmethods_fp32Z_CZ_nnZbanned)r   r   r   Zpointwise0_fp16Zpointwise1_fp16Zpointwise2_fp16Z	mat0_fp16Z	mat1_fp16Z	mat2_fp16dimsetsconv_args_fp32	bias_fp32element0_fp32pointwise0_fp32pointwise1_fp32	mat0_fp32	mat1_fp32	mat2_fp32	mat3_fp32	__class__r   r   rt      s   
"










+



  







4
  



zAutocastTestLists.__init__)__name__
__module____qualname__r   rt   __classcell__r   r   r   r   r      s   r   c                       s   e Zd Z fddZ  ZS )AutocastCPUTestListsc                    sp  t    d}tj|tj df}tj|tj df}tj|tj df}tj||ftj df}tj||ftj df}tj||ftj df}|f||f|||f||||f|||||ff}	 fdd|	D }
|||f||||f|||||ff} fdd|D } fdd|D }tj|ftj df}tjdtj df}tj|tj df}tj|tj df}tj||ftj df}tj||ftj df}tj||ftj df}tj||ftj df} fdd|	D }d	|| tjfd
|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfg	| _d|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfd|| tjfg	| _d|d fd|d fd|d fd tj|||f tjd!tj|||f tjd!ffd"|| fd#|| fd$tj|||f tjd!tj|||f tjd!tj|||f tjd!ffd%|| | fd&|tj|||f tjd!tj|||f tjd!f fd'tjd( tjd!tjd) tjd!tjd* tjd!dffg
| _	d+|d fd,|d fd-|d fd.|| d/d0d1tj
jd2f fd3tjddd4gg tjd!tjdd4d5gg tjd!tjdg tjd!ffd6|tj| tjd!f fd7|| tj|f tjd!f fd8|| | fd9|tj||f tjd!f fg	| _d:|| i fg| _d;|
d4 d<d=d>fd?tj||f tjd!ftj||f tjd!f fd@|
d dAdBifdCtj||f tjd!tj|f tjd!ffdDtj||||f tjd!tj|||f tjd!ffdE|| fdF|| fdG|| fdH|tj||f tjd!f fdI|tj||f tjd!f fdJ|tj|f tjd!f fdK|| fg| _dL|| ffdM|| ffg| _d S )NNr   r   c                    s    g | ]}t j|t j d fqS r   r   r	   bfloat16r   r   r   r   r      s   z1AutocastCPUTestLists.__init__.<locals>.<listcomp>c                    s0   g | ](}t j|t j d t j|t j d fqS r   r   r   r   r   r   r      s   c                    s0   g | ](}t j|t j d t j|t j d fqS r   r   r   r   r   r   r      s   r   c                    s    g | ]}t j|t j d fqS r   r   r   r   r   r   r     s   r   r   r    r!   r"   r#   r$   r%   r&   r*   r+   r,   r-   r.   r/   r0   r1   r2   r5   r   r6   r7   r8   rD   r   r@   r?   rC   r=   rB   r9   )
      rF   )   rF   r   r   r:   r;   r<   rV   TFrW   rX   rY   rF   rE   rZ   r[   r\   r]   rg   Z
avg_pool3d)rF   rF   rF   )r   r   r   )Zkernel_sizeZstriderr   Zreflection_pad1dpadding)rF   rF   rh   ri   rj   rk   rl   rm   rn   ro   Z
huber_lossr'   r)   )rs   rt   r   r	   r   r
   ru   rv   rw   Z
torch_bf16ry   rz   r{   r|   r}   r~   r   r   Znn_bf16r   r   r   r   )r   r   r   Zpointwise0_bf16Zpointwise1_bf16Zpointwise2_bf16Z	mat0_bf16Z	mat1_bf16Z	mat2_bf16Zdummy_dimsetsZ
dummy_bf16r   Zconv_args_bf16r   r   r   r   r   r   r   r   r   Z
dummy_fp32r   r   r   rt      s    
,
"


	







  



zAutocastCPUTestLists.__init__)r   r   r   rt   r   r   r   r   r   r      s   r   )r   Z$torch.testing._internal.common_utilsr   objectr   r   r   r   r   r   <module>   s    e