§
    1�Åj–Í ã                  ój   — d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ  G d„ de¦  «        ZdS )é    )ÚannotationsN)ÚBase)Úexpect)Ú_compute_attentionc                  óÆ  — e Zd Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Z	edad	„¦   «         Z
edad
„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Zedad„¦   «         Z edad „¦   «         Z!edad!„¦   «         Z"edad"„¦   «         Z#edad#„¦   «         Z$edad$„¦   «         Z%edad%„¦   «         Z&edad&„¦   «         Z'edad'„¦   «         Z(edad(„¦   «         Z)edad)„¦   «         Z*edad*„¦   «         Z+edad+„¦   «         Z,edad,„¦   «         Z-edad-„¦   «         Z.edad.„¦   «         Z/edad/„¦   «         Z0edad0„¦   «         Z1edad1„¦   «         Z2edad2„¦   «         Z3edad3„¦   «         Z4edad4„¦   «         Z5edad5„¦   «         Z6edad6„¦   «         Z7edad7„¦   «         Z8edad8„¦   «         Z9edad9„¦   «         Z:edad:„¦   «         Z;edad;„¦   «         Z<edad<„¦   «         Z=edad=„¦   «         Z>edad>„¦   «         Z?edad?„¦   «         Z@edad@„¦   «         ZAedadA„¦   «         ZBedadB„¦   «         ZCedadC„¦   «         ZDedadD„¦   «         ZEedadE„¦   «         ZFedadF„¦   «         ZGedadG„¦   «         ZHedadH„¦   «         ZIedadI„¦   «         ZJedadJ„¦   «         ZKedadK„¦   «         ZLedadL„¦   «         ZMedadM„¦   «         ZNedadN„¦   «         ZOedadO„¦   «         ZPedadP„¦   «         ZQedadQ„¦   «         ZRedadR„¦   «         ZSedadS„¦   «         ZTedadT„¦   «         ZUedadU„¦   «         ZVedadV„¦   «         ZWedadW„¦   «         ZXedadX„¦   «         ZYedadY„¦   «         ZZedadZ„¦   «         Z[edad[„¦   «         Z\edad\„¦   «         Z]edad]„¦   «         Z^edad^„¦   «         Z_edad_„¦   «         Z`d`S )bÚ	AttentionÚreturnÚNonec            
     ód  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          |||¦  «        \  }}}}t          | |||g|gd
t           j         
                    dd¦  «        g¬¦  «         d S )Nr   ©ÚQÚKÚVÚY©ÚinputsÚoutputsé   é   é   é   é   Útest_attention_4dÚ é   ©r   r   ÚnameÚopset_imports©ÚonnxÚhelperÚ	make_nodeÚnpÚrandomÚrandÚastypeÚfloat32r   r   Úmake_opsetid©Únoder   r   r   r   Ú_s         úVC:\Projects\Historical\venv\Lib\site-packages\onnx/backend/test/case/node/attention.pyÚexport_attentionzAttention.export_attention   s  € åŒ{×$Ò$ [¸¸¸ÐSVÐRWÐ$ÑXÔXˆåŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨aÑ0Ô0‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ$Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
ó    c            
     ód  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          |||¦  «        \  }}}}t          | |||g|gd
t           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   r   r   r   r   r   r   Útest_attention_4d_fp16r   r   r   ©r    r!   r"   r#   r$   r%   r&   Úfloat16r   r   r(   r)   s         r,   Úexport_attention_fp16zAttention.export_attention_fp16"   s  € åŒ{×$Ò$ [¸¸¸ÐSVÐRWÐ$ÑXÔXˆåŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨aÑ0Ô0‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ)Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ód  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             dd	d
d¦  «                             t          j        ¦  «        }t          j                             dd	d
d¦  «                             t          j        ¦  «        }t          |||¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   r   r   é	   r   r   r   r   Útest_attention_4d_gqar   r   r   r   r)   s         r,   Úexport_attention_gqazAttention.export_attention_gqa4   s  € åŒ{×$Ò$ [¸¸¸ÐSVÐRWÐ$ÑXÔXˆåŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨aÑ0Ô0‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ(Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ód  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d
¦  «                             t          j        ¦  «        }t          |||¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   r   r   r   r   r   r   é
   Ú"test_attention_4d_diff_heads_sizesr   r   r   r   r)   s         r,   Ú export_attention_diff_head_sizesz*Attention.export_attention_diff_head_sizesF   s  € åŒ{×$Ò$ [¸¸¸ÐSVÐRWÐ$ÑXÔXˆåŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆå'¨¨1¨aÑ0Ô0‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ5Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ón  — d} t           j                             dg d¢dg| ¬¦  «        }t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||| ¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nç{®Gáz„?r   r   r   ©r   r   Úscaler   r   r   r   r   ©r?   Útest_attention_4d_scaledr   r   r   r   ©r?   r*   r   r   r   r   r+   s          r,   Úexport_attention_scaledz!Attention.export_attention_scaledX   s  € àˆÝŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a°uÐ=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ+Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ón  — d} t           j                             dg d¢dg| ¬¦  «        }t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          |||| ¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr=   r   r   r   r>   r   r5   r   r   r   r   r@   Útest_attention_4d_gqa_scaledr   r   r   r   rB   s          r,   Úexport_attention_gqa_scaledz%Attention.export_attention_gqa_scaledp   s  € àˆÝŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a°uÐ=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ/Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ón  — d} t           j                             dg d¢dg| ¬¦  «        }t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d¦  «                             t          j        ¦  «        }t          |||| ¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr=   r   r   r   r>   r   r   r   r   r   r9   r@   Ú)test_attention_4d_diff_heads_sizes_scaledr   r   r   r   rB   s          r,   Ú'export_attention_diff_head_sizes_scaledz1Attention.export_attention_diff_head_sizes_scaledˆ   s  € àˆÝŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆå'¨¨1¨a°uÐ=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ<Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   é   ©r   r   Ú	is_causalr   r   r   r   r   ©rM   Útest_attention_4d_causalr   r   r   r   r)   s         r,   Úexport_attention_causalz!Attention.export_attention_causal    s  € åŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a¸1Ð=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ+Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   rK   rL   r   r5   r   r   r   r   rN   Útest_attention_4d_gqa_causalr   r   r   r   r)   s         r,   Úexport_attention_gqa_causalz%Attention.export_attention_gqa_causal·   s  € åŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a¸1Ð=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ/Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   rK   rL   r   r   r   r   r   r9   rN   Ú)test_attention_4d_diff_heads_sizes_causalr   r   r   r   r)   s         r,   Ú'export_attention_diff_head_sizes_causalz1Attention.export_attention_diff_head_sizes_causalÎ   s$  € åŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆå'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ<Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óä  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||¬
¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   ©r   r   r   Ú	attn_maskr   r   r   r   r   r   r   ©rY   Útest_attention_4d_attn_maskr   r   r   r   ©r*   r   r   r   rY   r   r+   s          r,   Úexport_attention_attn_maskz$Attention.export_attention_attn_maskê   sK  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ.Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óè  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          ||||¬¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r   r   r   r   r   r   r   rK   rZ   Útest_attention_4d_attn_mask_3dr   r   r   r   r\   s          r,   Úexport_attention_attn_3d_maskz'Attention.export_attention_attn_3d_mask  óO  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µb´jÑAÔAˆ	å'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ1Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óì  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          ||||d¬¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r   rK   rL   r   r   r   r   r   ©rY   rM   Ú%test_attention_4d_attn_mask_3d_causalr   r   r   r   r\   s          r,   Ú$export_attention_attn_3d_mask_causalz.Attention.export_attention_attn_3d_mask_causal"  óU  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µb´jÑAÔAˆ	å'ØØØØØð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ8Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óè  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dddd	¦  «                             t          j        ¦  «        }t          ||||¬
¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r   r   r   r   r   r   r   rZ   Útest_attention_4d_attn_mask_4dr   r   r   r   r\   s          r,   Úexport_attention_attn_4d_maskz'Attention.export_attention_attn_4d_mask@  ra   r.   c            
     óì  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          ||||d¬¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r   rK   rL   r   r   r   r   r   rc   Ú%test_attention_4d_attn_mask_4d_causalr   r   r   r   r\   s          r,   Ú$export_attention_attn_4d_mask_causalz.Attention.export_attention_attn_4d_mask_causal\  rf   r.   c            
     óÚ  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          ¦  «        }t          ||||¬
¦  «        \  }}}}t          | ||||g|gdt           j                             dd¦  «        g¬¦  «         d S )Nr   rX   r   r   r   r   r   r   r   rZ   Ú test_attention_4d_attn_mask_boolr   r   r   ©r    r!   r"   r#   r$   r%   r&   r'   Úboolr   r   r(   r\   s          r,   Úexport_attention_attn_mask_boolz)Attention.export_attention_attn_mask_boolz  sI  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µÑ5Ô5ˆ	å'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ3Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óÞ  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dddd	¦  «                             t          ¦  «        }t          ||||¬
¦  «        \  }}}}t          | ||||g|gdt           j                             dd¦  «        g¬¦  «         d S )Nr   rX   r   r   r   r   r   r   r   rZ   Ú#test_attention_4d_attn_mask_bool_4dr   r   r   ro   r\   s          r,   Ú"export_attention_attn_mask_bool_4dz,Attention.export_attention_attn_mask_bool_4d–  sM  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µdÑ;Ô;ˆ	å'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ6Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óä  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             dd	d
d¦  «                             t          j        ¦  «        }t          j                             dd	d
d¦  «                             t          j        ¦  «        }t          j                             dd
¦  «                             t          j        ¦  «        }t          ||||¬¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r   r   r   r5   r   r   r   r   rZ   Útest_attention_4d_gqa_attn_maskr   r   r   r   r\   s          r,   Úexport_attention_gqa_attn_maskz(Attention.export_attention_gqa_attn_mask²  sK  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ2Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óä  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d
¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||¬¦  «        \  }}}}t          | ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r   r   r   r   r   r   r   r9   rZ   Ú,test_attention_4d_diff_heads_sizes_attn_maskr   r   r   r   r\   s          r,   Ú*export_attention_diff_head_sizes_attn_maskz4Attention.export_attention_diff_head_sizes_attn_maskÎ  sK  € åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ?Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óø  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   ©r   r   r   rY   Úpast_keyÚ
past_value©r   Úpresent_keyÚpresent_valuer   é   r   r   r   r   r   ©rY   r}   r~   Ú'test_attention_4d_with_past_and_presentr   r   r   r   ©r*   Úpast_sequence_lengthr   r   r   rY   r}   r~   r   r€   r�   r+   s               r,   Ú&export_attention_with_past_and_presentz0Attention.export_attention_with_past_and_presentê  s¿  € åŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØØ!ð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3Ø:Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óø  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd|z   ¦  «                             t          j        ¦  «        }t          j                             dd
|d	¦  «                             t          j        ¦  «        }t          j                             dd
|d	¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r   r   r‚   r   r5   r   r   r   r   rƒ   Ú+test_attention_4d_gqa_with_past_and_presentr   r   r   r   r…   s               r,   Ú*export_attention_gqa_with_past_and_presentz4Attention.export_attention_gqa_with_past_and_present  s¿  € åŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØØ!ð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3Ø>Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óø  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd|z   ¦  «                             t          j        ¦  «        }t          j                             dd
|d	¦  «                             t          j        ¦  «        }t          j                             dd
|d	¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r   r   r‚   r   r5   r   r   r   r   rƒ   Ú0test_attention_4d_gqa_with_past_and_present_fp16r   r   r   r1   r…   s               r,   Ú/export_attention_gqa_with_past_and_present_fp16z9Attention.export_attention_gqa_with_past_and_present_fp16,  s¿  € åŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØØ!ð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3ØCÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óø  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r   r   r‚   r   r   r   r   r   r9   rƒ   Ú2test_attention_4d_diff_heads_with_past_and_presentr   r   r   r   r…   s               r,   Ú6export_attention_diff_head_sizes_with_past_and_presentz@Attention.export_attention_diff_head_sizes_with_past_and_presentM  s¿  € åŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑCÔC×JÒJÍ2Ì:ÑVÔVˆ
å+=ØØØØØØ!ð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3ØEÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óü  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d¦  «                             t          j        ¦  «        }t          j                             dddd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r   r   r‚   r   r   r   r   r   r9   rK   rƒ   Ú9test_attention_4d_diff_heads_with_past_and_present_mask3dr   r   r   r   r…   s               r,   Ú=export_attention_diff_head_sizes_with_past_and_present_mask3DzGAttention.export_attention_diff_head_sizes_with_past_and_present_mask3Dn  óÃ  € åŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆÝ”I—N’N 1 a¨¨AÐ0DÑ,DÑEÔE×LÒLÍRÌZÑXÔXˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑCÔC×JÒJÍ2Ì:ÑVÔVˆ
å+=ØØØØØØ!ð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3ØLÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óü  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d¦  «                             t          j        ¦  «        }t          j                             dddd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r   r   r‚   r   r   r   r   r   r9   rƒ   Ú9test_attention_4d_diff_heads_with_past_and_present_mask4dr   r   r   r   r…   s               r,   Ú=export_attention_diff_head_sizes_with_past_and_present_mask4DzGAttention.export_attention_diff_head_sizes_with_past_and_present_mask4D�  r”   r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   ç       @©r   r   Úsoftcapr   r   r   r   r   ©r›   Útest_attention_4d_softcapr   r   r   r   r)   s         r,   Úexport_attention_softcapz"Attention.export_attention_softcap°  s  € åŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a¸Ð=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ,Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          j                             dd
dd	¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   r™   rš   r   r5   r   r   r   r   rœ   Útest_attention_4d_gqa_softcapr   r   r   r   r)   s         r,   Úexport_attention_gqa_softcapz&Attention.export_attention_gqa_softcapÇ  s  € åŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a¸Ð=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ0Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   r   r™   rš   r   r   r   r   r   r9   rœ   Ú*test_attention_4d_diff_heads_sizes_softcapr   r   r   r   r)   s         r,   Ú(export_attention_diff_head_sizes_softcapz2Attention.export_attention_diff_head_sizes_softcapÞ  s$  € åŒ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆå'ØØØØð	
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ=Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óh  — t           j                             dg d¢g d¢¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          |||¦  «        \  }}}}t          | |||g||gd
t           j         
                    dd¦  «        g¬¦  «         d S )Nr   r   ©r   r   r   Úqk_matmul_outputr   r   r   r   r   r   Ú test_attention_4d_with_qk_matmulr   r   r   r   )r*   r   r   r   r   r+   r§   s          r,   Úexport_attention_with_qk_matmulz)Attention.export_attention_with_qk_matmulú  s  € åŒ{×$Ò$ØØ"�?�?Ø5Ð5Ð5ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå$6°q¸!¸QÑ$?Ô$?Ñ!ˆˆ1ˆaÐ!åØØ�q˜!�9ØÐ(Ð)Ø3Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óì  — t           j                             dg d¢g d¢d¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||d¬
¦  «        \  }}}}t          | ||||g||gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r¦   r   ©r   r   Úqk_matmul_output_moder   r   r   r   ©rY   r¬   Ú%test_attention_4d_with_qk_matmul_biasr   r   r   r   ©r*   r   r   r   rY   r   r+   r§   s           r,   Ú$export_attention_with_qk_matmul_biasz.Attention.export_attention_with_qk_matmul_bias  s[  € åŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5Ø"#ð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å$6ØØØØØ"#ð%
ñ %
ô %
Ñ!ˆˆ1ˆaÐ!õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)Ø8Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óð  — t           j                             dg d¢g d¢dd¬¦  «        } t          j                             ddd	d
¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          j                             d	d¦  «                             t          j        ¦  «        }t          ||||dd¬¦  «        \  }}}}t          | ||||g||gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r¦   r™   rK   )r   r   r›   r¬   r   r   r   r   r   )rY   r›   r¬   Ú(test_attention_4d_with_qk_matmul_softcapr   r   r   r   r¯   s           r,   Ú'export_attention_with_qk_matmul_softcapz1Attention.export_attention_with_qk_matmul_softcap.  sa  € åŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5ØØ"#ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å$6ØØØØØØ"#ð%
ñ %
ô %
Ñ!ˆˆ1ˆaÐ!õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)Ø;Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óì  — t           j                             dg d¢g d¢d¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||d¬
¦  «        \  }}}}t          | ||||g||gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   rX   r¦   r   r«   r   r   r   r   r­   Ú(test_attention_4d_with_qk_matmul_softmaxr   r   r   r   r¯   s           r,   Ú'export_attention_with_qk_matmul_softmaxz1Attention.export_attention_with_qk_matmul_softmaxN  s[  € åŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5Ø"#ð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å$6ØØØØØ"#ð%
ñ %
ô %
Ñ!ˆˆ1ˆaÐ!õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)Ø;Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óþ  — t           j                             dg d¢g d¢d¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          ||||||d¬¦  «        \  }}	}
}t          | ||||||g||	|
|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   ©r   r€   r�   r§   r   r«   r‚   r   r   r   r   ©rY   r}   r~   r¬   Ú6test_attention_4d_with_past_and_present_qk_matmul_biasr   r   r   r   ©r*   r†   r   r   r   rY   r}   r~   r   r€   r�   r§   s               r,   Ú5export_attention_with_past_and_present_qk_matmul_biasz?Attention.export_attention_with_past_and_present_qk_matmul_biasl  sÉ  € åŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ"#ð	 %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø"#ð;
ñ ;
ô ;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØIÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — t           j                             dg d¢g d¢d¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dddd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          ||||||d¬¦  «        \  }}	}
}t          | ||||||g||	|
|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r¸   r   r«   r‚   r   r   r   r   rK   r¹   Ú>test_attention_4d_with_past_and_present_qk_matmul_bias_3d_maskr   r   r   r   r»   s               r,   Ú=export_attention_with_past_and_present_qk_matmul_bias_3d_maskzGAttention.export_attention_with_past_and_present_qk_matmul_bias_3d_mask�  óÍ  € åŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ"#ð	 %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 a¨¨AÐ0DÑ,DÑEÔE×LÒLÍRÌZÑXÔXˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø"#ð;
ñ ;
ô ;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØQÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — t           j                             dg d¢g d¢d¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dddd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          ||||||d¬¦  «        \  }}	}
}t          | ||||||g||	|
|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r¸   r   r«   r‚   r   r   r   r   r¹   Ú>test_attention_4d_with_past_and_present_qk_matmul_bias_4d_maskr   r   r   r   r»   s               r,   Ú=export_attention_with_past_and_present_qk_matmul_bias_4d_maskzGAttention.export_attention_with_past_and_present_qk_matmul_bias_4d_mask²  rÀ   r.   c            
     ó  — t           j                             dg d¢g d¢dd¬¦  «        } d}t          j                             ddd	d
¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          j                             ddd	d|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d
¦  «                             t          j        ¦  «        }t          j                             dd|d
¦  «                             t          j        ¦  «        }t          ||||||dd¬¦  «        \  }}	}
}t          | ||||||g||	|
|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r¸   r   rK   ©r   r   r¬   rM   r‚   r   r   r   r   ©rY   r}   r~   r¬   rM   ÚEtest_attention_4d_with_past_and_present_qk_matmul_bias_3d_mask_causalr   r   r   r   r»   s               r,   ÚDexport_attention_with_past_and_present_qk_matmul_bias_3d_mask_causalzNAttention.export_attention_with_past_and_present_qk_matmul_bias_3d_mask_causalÕ  óÓ  € åŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ"#Øð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 a¨¨AÐ0DÑ,DÑEÔE×LÒLÍRÌZÑXÔXˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø"#Øð	;
ñ 	;
ô 	;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØXÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — t           j                             dg d¢g d¢dd¬¦  «        } d}t          j                             ddd	d
¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          j                             ddd	d|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d
¦  «                             t          j        ¦  «        }t          j                             dd|d
¦  «                             t          j        ¦  «        }t          ||||||dd¬¦  «        \  }}	}
}t          | ||||||g||	|
|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r¸   r   rK   rÅ   r‚   r   r   r   r   rÆ   ÚEtest_attention_4d_with_past_and_present_qk_matmul_bias_4d_mask_causalr   r   r   r   r»   s               r,   ÚDexport_attention_with_past_and_present_qk_matmul_bias_4d_mask_causalzNAttention.export_attention_with_past_and_present_qk_matmul_bias_4d_mask_causalú  rÉ   r.   c            
     óú  — t           j                             dg d¢g d¢¬¦  «        } d}t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          j                             dd|d	¦  «                             t          j        ¦  «        }t          ||||||¬¦  «        \  }}	}
}t          | ||||||g||	|
|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr   r|   r¸   r   r‚   r   r   r   r   r   rƒ   Ú1test_attention_4d_with_past_and_present_qk_matmulr   r   r   r   r»   s               r,   Ú0export_attention_with_past_and_present_qk_matmulz:Attention.export_attention_with_past_and_present_qk_matmul  sÃ  € åŒ{×$Ò$ØØIÐIÐIØMÐMÐMð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!ð;
ñ ;
ô ;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØDÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ór  — d\  } }t           j                             dg d¢dg| |¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d¦  «                             t          j        ¦  «        }t          j                             dd	d¦  «                             t          j        ¦  «        }t          |||| |¬
¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )N©r   r   r   r   r   ©r   r   Úq_num_headsÚkv_num_headsr   r   é   r   ©rÓ   rÔ   Útest_attention_3dr   r   r   r   ©rÓ   rÔ   r*   r   r   r   r   r+   s           r,   Úexport_attention_3dzAttention.export_attention_3d@  s.  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ$Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ór  — d\  } }t           j                             dg d¢dg| |¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          |||| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )N©r5   r   r   r   r   rÒ   r   r   éH   r   rÕ   rÖ   Útest_attention_3d_gqar   r   r   r   rØ   s           r,   Úexport_attention_3d_gqaz!Attention.export_attention_3d_gqa_  s.  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ(Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ór  — d\  } }t           j                             dg d¢dg| |¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          |||| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r   r   rÒ   r   r   rÕ   r   é   rÖ   Ú"test_attention_3d_diff_heads_sizesr   r   r   r   rØ   s           r,   Ú#export_attention_3d_diff_head_sizesz-Attention.export_attention_3d_diff_head_sizes~  s.  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ5Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óz  — d} d\  }}t           j                             dg d¢dg| ||¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          |||| ||¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr=   rÑ   r   r   r   ©r   r   r?   rÓ   rÔ   r   r   rÕ   r   ©r?   rÓ   rÔ   Útest_attention_3d_scaledr   r   r   r   ©	r?   rÓ   rÔ   r*   r   r   r   r   r+   s	            r,   Úexport_attention_3d_scaledz$Attention.export_attention_3d_scaled�  s9  € àˆØ$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ+Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óz  — d} d\  }}t           j                             dg d¢dg| ||¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          |||| ||¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr=   rÛ   r   r   r   rä   r   r   rÜ   r   rÕ   rå   Útest_attention_3d_gqa_scaledr   r   r   r   rç   s	            r,   Úexport_attention_3d_gqa_scaledz(Attention.export_attention_3d_gqa_scaled¿  s9  € àˆØ$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ/Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óz  — d} d\  }}t           j                             dg d¢dg| ||¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          |||| ||¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )Nr=   rÑ   r   r   r   rä   r   r   rÕ   r   rà   rå   Ú)test_attention_3d_diff_heads_sizes_scaledr   r   r   r   rç   s	            r,   Ú*export_attention_3d_diff_head_sizes_scaledz4Attention.export_attention_3d_diff_head_sizes_scaledá  s9  € àˆØ$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ<Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óv  — d\  } }t           j                             dg d¢dgd| |¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          |||d| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r   r   rK   ©r   r   rM   rÓ   rÔ   r   r   rÕ   r   ©rM   rÓ   rÔ   Útest_attention_3d_causalr   r   r   r   rØ   s           r,   Úexport_attention_3d_causalz$Attention.export_attention_3d_causal  s4  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ+Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óv  — d\  } }t           j                             dg d¢dgd| |¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          |||d| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÛ   r   r   r   rK   rð   r   r   rÜ   r   rÕ   rñ   Útest_attention_3d_gqa_causalr   r   r   r   rØ   s           r,   Úexport_attention_3d_gqa_causalz(Attention.export_attention_3d_gqa_causal$  s4  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ/Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óv  — d\  } }t           j                             dg d¢dgd| |¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          |||d| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r   r   rK   rð   r   r   rÕ   r   rà   rñ   Ú)test_attention_3d_diff_heads_sizes_causalr   r   r   r   rØ   s           r,   Ú*export_attention_3d_diff_head_sizes_causalz4Attention.export_attention_3d_diff_head_sizes_causalE  s4  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ<Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óð  — d\  } }t           j                             dg d¢dg| |¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d¦  «                             t          j        ¦  «        }t          j                             dd	d¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||| |¬
¦  «        \  }}}}t          |||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   rX   r   rÒ   r   r   rÕ   r   ©rY   rÓ   rÔ   Útest_attention_3d_attn_maskr   r   r   r   ©	rÓ   rÔ   r*   r   r   r   rY   r   r+   s	            r,   Úexport_attention_3d_attn_maskz'Attention.export_attention_3d_attn_maskf  s[  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ/Ð/Ð/Ø�EØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ.Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óð  — d\  } }t           j                             dg d¢dg| |¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||| |¬¦  «        \  }}}}t          |||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÛ   r   rX   r   rÒ   r   r   rÜ   r   rÕ   rû   Útest_attention_3d_gqa_attn_maskr   r   r   r   rý   s	            r,   Ú!export_attention_3d_gqa_attn_maskz+Attention.export_attention_3d_gqa_attn_mask‡  s[  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ/Ð/Ð/Ø�EØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ2Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óð  — d\  } }t           j                             dg d¢dg| |¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          j                             dd	¦  «                             t          j        ¦  «        }t          ||||| |¬¦  «        \  }}}}t          |||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   rX   r   rÒ   r   r   rÕ   r   rà   rû   Ú,test_attention_3d_diff_heads_sizes_attn_maskr   r   r   r   rý   s	            r,   Ú-export_attention_3d_diff_head_sizes_attn_maskz7Attention.export_attention_3d_diff_head_sizes_attn_mask¨  s[  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ/Ð/Ð/Ø�EØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆ	å'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ?Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óv  — d\  } }t           j                             dg d¢dgd| |¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          |||d| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r   r   ç      @©r   r   r›   rÓ   rÔ   r   r   rÕ   r   ©r›   rÓ   rÔ   Útest_attention_3d_softcapr   r   r   r   rØ   s           r,   Úexport_attention_3d_softcapz%Attention.export_attention_3d_softcapÉ  s4  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ,Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óv  — d\  } }t           j                             dg d¢dgd| |¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          |||d| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÛ   r   r   r   r  r  r   r   rÜ   r   rÕ   r  Útest_attention_3d_gqa_softcapr   r   r   r   rØ   s           r,   Úexport_attention_3d_gqa_softcapz)Attention.export_attention_3d_gqa_softcapê  s4  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ0Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óv  — d\  } }t           j                             dg d¢dgd| |¬¦  «        }t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          |||d| |¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r   r   r  r  r   r   rÕ   r   rà   r  Ú*test_attention_3d_diff_heads_sizes_softcapr   r   r   r   rØ   s           r,   Ú+export_attention_3d_diff_head_sizes_softcapz5Attention.export_attention_3d_diff_head_sizes_softcap  s4  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØØ#Ø%ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆå'ØØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ=Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — d\  } }t           j                             dg d¢g d¢| |¬¦  «        }d}t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }	t          ||||||	| |¬¦  «        \  }
}}}t          |||||||	g|
||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r|   r   rÒ   r‚   r   r   rÕ   r   r   r   ©rY   r}   r~   rÓ   rÔ   Ú'test_attention_3d_with_past_and_presentr   r   r   r   ©rÓ   rÔ   r*   r†   r   r   r   rY   r}   r~   r   r€   r�   r+   s                 r,   Ú)export_attention_3d_with_past_and_presentz3Attention.export_attention_3d_with_past_and_present,  sÏ  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9Ø#Ø%ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØØ!Ø#Ø%ð	,
ñ 	,
ô 	,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3Ø:Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — d\  } }t           j                             dg d¢g d¢| |¬¦  «        }d}t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }	t          ||||||	| |¬¦  «        \  }
}}}t          |||||||	g|
||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÛ   r   r|   r   rÒ   r‚   r   r   rÜ   r   rÕ   r   r   r  Ú+test_attention_3d_gqa_with_past_and_presentr   r   r   r   r  s                 r,   Ú-export_attention_3d_gqa_with_past_and_presentz7Attention.export_attention_3d_gqa_with_past_and_presentR  sÏ  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9Ø#Ø%ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØØ!Ø#Ø%ð	,
ñ 	,
ô 	,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3Ø>Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — d\  } }t           j                             dg d¢g d¢| |¬¦  «        }d}t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }	t          ||||||	| |¬¦  «        \  }
}}}t          |||||||	g|
||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r|   r   rÒ   r‚   r   r   rÕ   r   rà   r   r   r9   r  Ú2test_attention_3d_diff_heads_with_past_and_presentr   r   r   r   r  s                 r,   Ú9export_attention_3d_diff_head_sizes_with_past_and_presentzCAttention.export_attention_3d_diff_head_sizes_with_past_and_presentx  sÏ  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØ9Ð9Ð9Ø#Ø%ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑCÔC×JÒJÍ2Ì:ÑVÔVˆ
å+=ØØØØØØ!Ø#Ø%ð	,
ñ 	,
ô 	,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð3ØEÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó  — d\  } }t           j                             dg d¢g d¢| |¬¦  «        }d}t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }	t          ||||||	| |¬¦  «        \  }
}}}t          |||||||	g|
|||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r|   r¸   rÒ   r‚   r   r   rÕ   r   r   r   r  Ú1test_attention_3d_with_past_and_present_qk_matmulr   r   r   r   ©rÓ   rÔ   r*   r†   r   r   r   rY   r}   r~   r   r€   r�   r§   s                 r,   Ú3export_attention_3d_with_past_and_present_qk_matmulz=Attention.export_attention_3d_with_past_and_present_qk_matmulž  sÓ  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ#Ø%ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø#Ø%ð	;
ñ 	;
ô 	;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØDÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó
  — d\  } }t           j                             dg d¢g d¢| |d¬¦  «        }d}t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }	t          ||||||	| |d¬¦	  «	        \  }
}}}t          |||||||	g|
|||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r|   r¸   r   ©r   r   rÓ   rÔ   r¬   r‚   r   rÕ   r   r   r   ©rY   r}   r~   rÓ   rÔ   r¬   Ú6test_attention_3d_with_past_and_present_qk_matmul_biasr   r   r   r   r  s                 r,   Ú8export_attention_3d_with_past_and_present_qk_matmul_biaszBAttention.export_attention_3d_with_past_and_present_qk_matmul_biasÄ  sÙ  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ#Ø%Ø"#ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø#Ø%Ø"#ð
;
ñ 
;
ô 
;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØIÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó  — d\  } }t           j                             dg d¢g d¢| |dd¬¦  «        }d}t          j                             d	d
d¦  «                             t          j        ¦  «        }t          j                             d	dd¦  «                             t          j        ¦  «        }t          j                             d	dd¦  «                             t          j        ¦  «        }t          j                             d
d|z   ¦  «                             t          j        ¦  «        }t          j                             d	d|d¦  «                             t          j        ¦  «        }t          j                             d	d|d¦  «                             t          j        ¦  «        }	t          ||||||	| |dd¬¦
  «
        \  }
}}}t          |||||||	g|
|||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r|   r¸   r™   rK   )r   r   rÓ   rÔ   r›   r¬   r‚   r   r   rÕ   r   r   r   )rY   r}   r~   rÓ   rÔ   r›   r¬   Ú9test_attention_3d_with_past_and_present_qk_matmul_softcapr   r   r   r   r  s                 r,   Ú;export_attention_3d_with_past_and_present_qk_matmul_softcapzEAttention.export_attention_3d_with_past_and_present_qk_matmul_softcapì  sß  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ#Ø%ØØ"#ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø#Ø%ØØ"#ð;
ñ ;
ô ;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØLÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó
  — d\  } }t           j                             dg d¢g d¢| |d¬¦  «        }d}t          j                             dd	d
¦  «                             t          j        ¦  «        }t          j                             ddd
¦  «                             t          j        ¦  «        }t          j                             ddd
¦  «                             t          j        ¦  «        }t          j                             d	d|z   ¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }	t          ||||||	| |d¬¦	  «	        \  }
}}}t          |||||||	g|
|||gdt           j         
                    dd¦  «        g¬¦  «         d S )NrÑ   r   r|   r¸   r   r!  r‚   r   r   rÕ   r   r   r"  Ú9test_attention_3d_with_past_and_present_qk_matmul_softmaxr   r   r   r   r  s                 r,   Ú;export_attention_3d_with_past_and_present_qk_matmul_softmaxzEAttention.export_attention_3d_with_past_and_present_qk_matmul_softmax  sÙ  € à$(Ñ!ˆ�\ÝŒ{×$Ò$ØØIÐIÐIØMÐMÐMØ#Ø%Ø"#ð %ñ 
ô 
ˆð  "ÐÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝ”I—N’N 1 aÐ*>Ñ&>Ñ?Ô?×FÒFÅrÄzÑRÔRˆ	Ý”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å:LØØØØØØ!Ø#Ø%Ø"#ð
;
ñ 
;
ô 
;
Ñ7ˆˆ;˜Ð'7õ 	ØØ�q˜!˜Y¨°*Ð=Ø˜ ]Ð4DÐEØLÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óp  — d\  } }t           j                             dg d¢dg| |¬¦  «        }d}d}d}d}| |z  }||z  }t          j        |||ft          j        ¬	¦  «        }	t          | ¦  «        D ](}
|
|z  }||z   }t          |
dz   ¦  «        |	d
dd…||…f<   Œ)t          j        |||ft          j        ¬	¦  «        dz  }t          j        |||ft          j        ¬	¦  «        dz  }t          |	||| |¬¦  «        \  }}}}t          ||	||g|gdt           j                             dd¦  «        g¬¦  «         dS )aa  Test case to verify correct 3D to 4D transpose behavior.

        This test verifies that 3D inputs are correctly reshaped and transposed
        according to the ONNX specification:
        [batch_size, seq_length, hidden_size] ->
        [batch_size, seq_length, num_heads, head_size] ->
        [batch_size, num_heads, seq_length, head_size]
        rÑ   r   r   r   rÒ   rK   r   r   ©Údtyper   Ngš™™™™™¹?rÖ   Ú(test_attention_3d_transpose_verificationr   r   r   )r    r!   r"   r#   Úzerosr'   ÚrangeÚfloatÚonesr   r   r(   )rÓ   rÔ   r*   Ú
batch_sizeÚq_seq_lengthÚkv_seq_lengthÚ	head_sizeÚq_hidden_sizeÚkv_hidden_sizer   ÚheadÚ	start_idxÚend_idxr   r   r   r+   s                    r,   Ú*export_attention_3d_transpose_verificationz4Attention.export_attention_3d_transpose_verification>  sš  € ð %)Ñ!ˆ�\ÝŒ{×$Ò$ØØ"�?�?Ø�EØ#Ø%ð %ñ 
ô 
ˆð ˆ
ØˆØˆØˆ	Ø# iÑ/ˆØ%¨	Ñ1ˆõ ŒH�j ,°Ð>ÅbÄjÐQÑQÔQˆå˜+Ñ&Ô&ð 	9ð 	9ˆDØ˜yÑ(ˆIØ )Ñ+ˆGÝ).¨t°a©x©¬ˆAˆa����I˜gÐ%Ð%Ñ&Ð&åŒG�Z °Ð?ÅrÄzÐRÑRÔRÐUXÑXˆÝŒG�Z °Ð?ÅrÄzÐRÑRÔRÐUXÑXˆå'ØØØØ#Ø%ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ;Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó0  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d
¦  «                             t          j        ¦  «        }t          j                             dddd¦  «                             t          j        ¦  «        }t          j        ddgt          j	        ¬¦  «        }t          |||||¬¦  «        \  }}}}t          | |||||g|gdt           j                             dd¦  «        g¬¦  «         d S )Nr   ©r   r   r   rY   r   r   Únonpad_kv_seqlenr   r   r   r   r   r   r   r9   r,  ©rY   r?  Ú-test_attention_4d_diff_heads_mask4d_padded_kvr   rÕ   r   ©r    r!   r"   r#   r$   r%   r&   r'   ÚarrayÚint64r   r   r(   ©r*   r   r   r   rY   r?  r   r+   s           r,   Ú/export_attention_4d_diff_heads_mask4d_padded_kvz9Attention.export_attention_4d_diff_heads_mask4d_padded_kvu  sp  € åŒ{×$Ò$ØØKÐKÐKØ�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  BÑ'Ô'×.Ò.­r¬zÑ:Ô:ˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µb´jÑAÔAˆ	Ýœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØ@Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j                             dd¦  «        g¬¦  «         dS )zDis_causal=1 with bfloat16 inputs exercises causal mask CastLike fix.r   r   r   rK   rL   r   r   r   r   r   rN   Útest_attention_4d_causal_bf16r   r   r   N©r    r!   r"   r#   r$   r%   r&   Ú	ml_dtypesÚbfloat16r   r   r(   r)   s         r,   Úexport_attention_causal_bf16z&Attention.export_attention_causal_bf16•  s  € õ Œ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆå'¨¨1¨a¸1Ð=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ0Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ój  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||d¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         dS )z is_causal=1 with float16 inputs.r   r   r   rK   rL   r   r   r   r   r   rN   Útest_attention_4d_causal_fp16r   r   r   Nr1   r)   s         r,   Úexport_attention_causal_fp16z&Attention.export_attention_causal_fp16­  s  € õ Œ{×$Ò$ØØ"�?�?Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'¨¨1¨a¸1Ð=Ñ=Ô=‰
ˆˆ1ˆa�åØØ�q˜!�9Ø�CØ0Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó0  — t           j                             dg d¢dg¬¦  «        } t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dddd¦  «                             t          j        ¦  «        }t          j	        ddgt          j
        ¬
¦  «        }t          |||||¬¦  «        \  }}}}t          | |||||g|gdt           j                             dd¦  «        g¬¦  «         dS )zJnonpad_kv_seqlen with bfloat16 inputs exercises padding mask CastLike fix.r   r>  r   r   r   r   r   r   r   r,  r@  Ú test_attention_4d_padded_kv_bf16r   rÕ   r   N©r    r!   r"   r#   r$   r%   r&   rJ  rK  rC  rD  r   r   r(   rE  s           r,   Úexport_attention_padded_kv_bf16z)Attention.export_attention_padded_kv_bf16Å  sv  € õ Œ{×$Ò$ØØKÐKÐKØ�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µiÔ6HÑIÔIˆ	Ýœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØ3Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó4  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dddd¦  «                             t          j        ¦  «        }t          j	        ddgt          j
        ¬¦  «        }t          ||||d|¬¦  «        \  }}}}t          | |||||g|gdt           j                             dd¦  «        g¬¦  «         dS )zKis_causal=1 + nonpad_kv_seqlen with bfloat16 exercises both CastLike fixes.r   r>  r   rK   rL   r   r   r   r   r   r,  )rY   rM   r?  Ú'test_attention_4d_causal_padded_kv_bf16r   rÕ   r   NrR  rE  s           r,   Ú&export_attention_causal_padded_kv_bf16z0Attention.export_attention_causal_padded_kv_bf16ä  s|  € õ Œ{×$Ò$ØØKÐKÐKØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µiÔ6HÑIÔIˆ	Ýœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØ:Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óì  — t           j                             dg d¢dgd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             dddd
¦  «                             t          j        ¦  «        }t          ||||d¬¦  «        \  }}}}t          | ||||g|gdt           j                             dd¦  «        g¬¦  «         dS )uU   Float attn_mask + is_causal with bfloat16 â€” mask is bf16, causal mask must be cast.r   rX   r   rK   rL   r   r   r   r   r   rc   Ú'test_attention_4d_attn_mask_causal_bf16r   r   r   NrI  r\   s          r,   Ú&export_attention_attn_mask_causal_bf16z0Attention.export_attention_attn_mask_causal_bf16  s[  € õ Œ{×$Ò$ØØ/Ð/Ð/Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­iÔ.@ÑAÔAˆÝ”I—N’N 1 a¨¨AÑ.Ô.×5Ò5µiÔ6HÑIÔIˆ	å'ØØØØØð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØ:Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ól  — t           j                             dg d¢dgddd¬¦  «        } t          j                             ddd	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          j                             dd
d	¦  «                             t          j        ¦  «        }t          |||ddd¬¦  «        \  }}}}t          | |||g|gdt           j                             dd¦  «        g¬¦  «         dS )z'3D input with is_causal=1 and bfloat16.r   r   r   rK   r   rð   r   r   rÕ   r   rñ   Útest_attention_3d_causal_bf16r   r   r   NrI  r)   s         r,   Úexport_attention_3d_causal_bf16z)Attention.export_attention_3d_causal_bf16$  s*  € õ Œ{×$Ò$ØØ"�?�?Ø�EØØØð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­IÔ,>Ñ?Ô?ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­IÔ,>Ñ?Ô?ˆÝŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­IÔ,>Ñ?Ô?ˆå'Øˆq�!˜q¨a¸að
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ0Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó0  — t           j                             d¦  «         d\  } }}}}t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j        ||ft           j        ¬¦  «        }t           j         |dd…dd…f<   d}	t          j	         
                    dg d¢d	g|	¬
¦  «        }
t          |||||	¬¦  «        \  }}}}t          |
||||g|gdt          j	                             dd¦  «        g¬¦  «         dS )a~  Softcap + -inf mask: verifies softcap is applied BEFORE mask/bias.

        If ordering were wrong (mask then softcap), tanh(-inf/softcap) = -1,
        so softcap * tanh(-inf/softcap) = -softcap (finite).  That leaks
        probability to masked positions.  With correct ordering (softcap then
        mask), the -inf mask values survive to softmax and yield zero weight.
        é*   ©rK   rK   r   r   r   r,  Nr   ç      à?r   rX   r   rš   ©rY   r›   Ú%test_attention_4d_softcap_neginf_maskr   r   r   ©r#   r$   Úseedr%   r&   r'   r/  Úinfr    r!   r"   r   r   r(   ©ÚBÚHÚS_qÚS_kvÚDr   r   r   rY   r›   r*   r   r+   s                r,   Ú)export_attention_softcap_with_neginf_maskz3Attention.export_attention_softcap_with_neginf_mask@  s€  € õ 	Œ	�Š�rÑÔÐØ*Ñˆˆ1ˆc�4˜åŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆõ ”H˜c 4˜[µ´
Ð;Ñ;Ô;ˆ	ÝœF˜7ˆ	�!�!�!�Q�R�R�%ÑàˆåŒ{×$Ò$ØØ/Ð/Ð/Ø�EØð	 %ñ 
ô 
ˆõ (¨¨1¨a¸9ÈgÐVÑVÔV‰
ˆˆ1ˆa�åØØ�q˜!˜YÐ'Ø�CØ8Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óR  — t           j                             d¦  «         d\  } }}}}t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j        ||ft           j        ¬¦  «        }t           j         |dd…dd…f<   d|dd…dd…dd…dd…f<   d}	t          j	         
                    dg d	¢d
g|	¬¦  «        }
t          |||||	¬¦  «        \  }}}}t          |
||||g|gdt          j	                             dd¦  «        g¬¦  «         dS )a_  Softcap + -inf mask + poison values at masked KV positions.

        V has value 1000 at the masked positions (4 and 5).  With correct
        ordering the output stays in [0, 1] because the mask zeros out those
        positions.  With wrong ordering the output explodes (> 50), making
        the failure obvious even with loose tolerances.
        r^  r_  r,  Nr   g     @�@r`  r   rX   r   rš   ra  Ú,test_attention_4d_softcap_neginf_mask_poisonr   r   r   rc  rf  s                r,   Ú0export_attention_softcap_with_neginf_mask_poisonz:Attention.export_attention_softcap_with_neginf_mask_poisong  s£  € õ 	Œ	�Š�rÑÔÐØ*Ñˆˆ1ˆc�4˜åŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆõ ”H˜c 4˜[µ´
Ð;Ñ;Ô;ˆ	ÝœF˜7ˆ	�!�!�!�Q�R�R�%Ñð  ˆˆ!ˆ!ˆ!ˆQˆQˆQ����A�A�Aˆ+‰àˆåŒ{×$Ò$ØØ/Ð/Ð/Ø�EØð	 %ñ 
ô 
ˆõ (¨¨1¨a¸9ÈgÐVÑVÔV‰
ˆˆ1ˆa�åØØ�q˜!˜YÐ'Ø�CØ?Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó   — t           j                             d¦  «         d\  } }}}}t          j                             dg d¢dgd¬¦  «        }t           j                             | |d|¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        dd	gt           j
        ¬
¦  «        }	t          ||||	d¬¦  «        \  }
}}}t          |||||	g|
gdt          j                             dd¦  «        g¬¦  «         dS )a¸  External/static-cache decode (S_q=1) with per-batch valid lengths.

        K/V are the full static cache buffer; ``nonpad_kv_seqlen`` marks how many
        leading keys are valid per batch.  With bottom-right (offset-aware) causal
        masking the single decode query attends keys ``0..nonpad[b]-1``.  Under the
        old top-left alignment it would attend only key 0, so this test fails
        pre-fix and passes post-fix.
        r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   r?  r   rK   rL   r   é   r,  ©r?  rM   Ú*test_attention_4d_gqa_causal_nonpad_decoder   rÕ   r   N©r#   r$   rd  r    r!   r"   r%   r&   r'   rC  rD  r   r   r(   ©rg  ÚH_qÚH_kvÚLrk  r*   r   r   r   r?  r   r+   s               r,   Ú,export_attention_4d_gqa_causal_nonpad_decodez6Attention.export_attention_4d_gqa_causal_nonpad_decode‘  sn  € õ 	Œ	�Š�qÑÔÐØ*Ñˆˆ3��a˜åŒ{×$Ò$ØØBÐBÐBØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜c 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜d A qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜d A qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆåœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØ-Øð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!Ð-Ð.Ø�CØ=Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó   — t           j                             d¦  «         d\  } }}}}t          j                             dg d¢dgd¬¦  «        }t           j                             | |d|¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        dd	gt           j
        ¬
¦  «        }	t          ||||	d¬¦  «        \  }
}}}t          |||||	g|
gdt          j                             dd¦  «        g¬¦  «         dS )zKfp16 variant of the external-cache decode case (locks -inf dtype handling).r   rq  r   rr  r   rK   rL   r   rs  r,  rt  Ú/test_attention_4d_gqa_causal_nonpad_decode_fp16r   rÕ   r   N)r#   r$   rd  r    r!   r"   r%   r&   r2   rC  rD  r   r   r(   rw  s               r,   Ú1export_attention_4d_gqa_causal_nonpad_decode_fp16z;Attention.export_attention_4d_gqa_causal_nonpad_decode_fp16»  sn  € õ 	Œ	�Š�qÑÔÐØ*Ñˆˆ3��a˜åŒ{×$Ò$ØØBÐBÐBØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜c 1 aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜d A qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜d A qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØ-Øð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!Ð-Ð.Ø�CØBÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó   — t           j                             d¦  «         d\  } }}}d}t          j                             dg d¢dgd¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        dgt           j
        ¬	¦  «        }	t          ||||	d¬
¦  «        \  }
}}}t          |||||	g|
gdt          j                             dd¦  «        g¬¦  «         dS )aŠ  Continued / chunked prefill (S_q=2) into a partially-filled static cache.

        With ``nonpad_kv_seqlen = [4]`` and ``S_q = 2`` the bottom-right offset is
        ``4 - 2 = 2``: query 0 attends keys ``{0,1,2}`` and query 1 attends
        ``{0,1,2,3}``.  The old top-left alignment would mask everything past the
        diagonal (``{0}`` and ``{0,1}``), so this test fails pre-fix.
        rK   ©rK   r   r   r   r   r   rr  r   rL   r   r,  rt  Ú1test_attention_4d_causal_nonpad_continued_prefillr   rÕ   r   Nrv  ©rg  rh  rz  rk  ri  r*   r   r   r   r?  r   r+   s               r,   Ú3export_attention_4d_causal_nonpad_continued_prefillz=Attention.export_attention_4d_causal_nonpad_continued_prefillÝ  sn  € õ 	Œ	�Š�qÑÔÐØ‰
ˆˆ1ˆa�ØˆåŒ{×$Ò$ØØBÐBÐBØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝœ8 Q C­r¬xÐ8Ñ8Ô8Ðå'ØØØØ-Øð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!Ð-Ð.Ø�CØDÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó¶  — t           j                             d¦  «         t          j                             dg d¢g d¢d¬¦  «        } d}t           j                             dddd	¦  «                             t           j        ¦  «        }t           j                             dddd	¦  «                             t           j        ¦  «        }t           j                             dddd	¦  «                             t           j        ¦  «        }t           j                             dd|d	¦  «                             t           j        ¦  «        }t           j                             dd|d	¦  «                             t           j        ¦  «        }t          |||||d¬
¦  «        \  }}}	}
t          | |||||g|||	gdt          j                             dd¦  «        g¬¦  «         dS )a?  Regression guard: internal (past_key) cache + is_causal.

        This exercises the unchanged scalar bottom-right path (offset =
        past_sequence_length).  Its golden output must remain identical to the
        pre-fix behavior, proving the external-cache change does not touch the
        past_key path.
        r   r   ©r   r   r   r   r}   r~   r   rK   rL   r   r   r   )r}   r~   rM   Ú.test_attention_4d_causal_with_past_and_presentr   rÕ   r   N)r#   r$   rd  r    r!   r"   r%   r&   r'   r   r   r(   )r*   r†   r   r   r   r}   r~   r   r€   r�   r+   s              r,   Ú0export_attention_4d_causal_with_past_and_presentz:Attention.export_attention_4d_causal_with_past_and_present	  s«  € õ 	Œ	�Š�qÑÔÐÝŒ{×$Ò$ØØ@Ð@Ð@Ø9Ð9Ð9Øð	 %ñ 
ô 
ˆð  !ÐÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØ!Øð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜X zÐ2Ø˜ ]Ð3ØAÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó  — t           j                             d¦  «         d\  } }}}t          j                             dg d¢dgd¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        dd	gd	d	ggt           j
        ¬
¦  «        }t          ||||d¬¦  «        \  }	}
}
}
t          j        t          j        |	¦  «        ¦  «        s
J d¦   «         ‚t          j        |	dd…dd…ddd…f         t          j        |	dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t!          |||||g|	gdt          j                             dd¦  «        g¬¦  «         dS )aª  Composed ``is_causal`` + boolean ``attn_mask`` NaN-robustness.

        The causal frontier (lower-triangular here, offset 0) and the boolean
        ``attn_mask`` are intersected: a key is attended only if allowed by both.
        This exercises two pre-fix NaN sources on the same forward pass:

        * **Bug-1 (allowed cells stay finite).**  Query 0 is allowed key 0 by both
          the causal frontier (``{0}``) and the mask (``True`` at key 0).  The old
          ``(1 - attn_mask) * -inf`` conversion computes ``0 * -inf = NaN`` at that
          allowed cell, poisoning the row.  The select conversion
          ``where(attn_mask, 0, -inf)`` keeps it finite.
        * **Bug-2 (fully-masked row -> 0).**  Query 1 is allowed keys ``{0, 1}`` by
          the causal frontier but the mask is ``False`` at both, so the combined
          constraint allows no key.  ``softmax`` of an all-``-inf`` row is ``NaN``;
          the fully-masked-row guard zeros it before the ``P @ V`` contraction so
          the output row is ``0``.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        r   ©rK   r   r   r   r   rX   r   rK   rL   TFr,  rc   z$allowed cells must be finite (Bug-1)Nú%fully-masked row must be zero (Bug-2)Ú-test_attention_causal_boolmask_nan_robustnessr   rÕ   r   ©r#   r$   rd  r    r!   r"   r%   r&   r'   rC  Úbool_r   ÚallÚisfiniteÚarray_equalÚ
zeros_liker   r(   ©rg  rh  ÚSrk  r*   r   r   r   rY   r   r+   s              r,   Ú/export_attention_causal_boolmask_nan_robustnessz9Attention.export_attention_causal_boolmask_nan_robustness/	  s   € õ, 	Œ	�Š�qÑÔÐØ‰
ˆˆ1ˆa�åŒ{×$Ò$ØØ/Ð/Ð/Ø�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆõ ”H˜t U˜m¨e°U¨^Ð<ÅBÄHÐMÑMÔMˆ	å'ØØØØØð
ñ 
ô 
‰
ˆˆ1ˆa�õ Œv•b”k !‘n”nÑ%Ô%ÐMÐMÐ'MÑMÔMÐ%ÝŒ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJð 	
ð 	
Ø3ñ	
ô 	
ÐJõ 	ØØ�q˜!˜YÐ'Ø�CØ@Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó  — t           j                             d¦  «         d\  } }}}t          j                             dg d¢dg¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        ddgddggt           j
        ¬	¦  «        }t          ||||¬
¦  «        \  }	}
}
}
t          j        t          j        |	¦  «        ¦  «        s
J d¦   «         ‚t          j        |	dd…dd…ddd…f         t          j        |	dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t!          |||||g|	gdt          j                             dd¦  «        g¬¦  «         dS )a  Opset-23 fully-masked boolean ``attn_mask`` row -> zero (not ``NaN``).

        This locks the opset-23 / ``old.cc`` function-body fully-masked-row guard
        against future regressions. In opset 23 the only in-contract fully-masked
        row comes from an all-``False`` boolean ``attn_mask`` row (``is_causal`` is
        not set here): every key for that query is disallowed, so ``softmax`` over an
        all-``-inf`` bias row is ``NaN``. The guard zeros that row's probabilities
        before the ``P @ V`` contraction so the output row is exactly ``0``, while
        rows with at least one allowed key are unchanged.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        r   r‰  r   rX   r   r   FTr,  rZ   znon-masked rows must be finiteNr   rŠ  Ú9test_attention_23_boolmask_fullymasked_row_nan_robustnessr   r   r   rŒ  r’  s              r,   Ú;export_attention_23_boolmask_fullymasked_row_nan_robustnesszEAttention.export_attention_23_boolmask_fullymasked_row_nan_robustnessm	  sð  € õ 	Œ	�Š�qÑÔÐØ‰
ˆˆ1ˆa�åŒ{×$Ò$ØØ/Ð/Ð/Ø�Eð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆõ ”H˜u e˜n¨t°T¨lÐ;Å2Ä8ÐLÑLÔLˆ	å'¨¨1¨a¸9ÐEÑEÔE‰
ˆˆ1ˆa�õ Œv•b”k !‘n”nÑ%Ô%ÐGÐGÐ'GÑGÔGÐ%ÝŒ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJð 	
ð 	
Ø3ñ	
ô 	
ÐJõ 	ØØ�q˜!˜YÐ'Ø�CØLÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 óX  — t           j                             d¦  «         d\  } }}}d}t          j                             dg d¢dgd¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        d	gt           j
        ¬
¦  «        }	t          ||||	d¬¦  «        \  }
}}}t          j        t          j        |
¦  «        ¦  «        s
J d¦   «         ‚t          j        |
dd…dd…ddd…f         t          j        |
dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        |
dd…dd…ddd…f         t          j        |
dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        |
dd…dd…d	dd…f         dk    ¦  «        r(t          j        |
dd…dd…ddd…f         dk    ¦  «        s
J d¦   «         ‚t#          |||||	g|
gdt          j                             dd¦  «        g¬¦  «         dS )aM  Negative bottom-right offset: structurally-empty early query rows -> zero.

        This is the onnx-node twin of the ORT gtest
        ``Attention_Causal_NonPadKVSeqLen_StructuralEmptyRow_Zero`` /
        ``StructuralEmptyRows_Zero_CUDA``.  With ``nonpad_kv_seqlen = [2]`` and
        ``S_q = 4`` the bottom-right offset is ``2 - 4 = -2``: query row ``sq``
        attends keys ``0..(sq - 2)``, so rows 0 and 1 have an empty key set.  Their
        ``softmax`` over an all-``-inf`` bias row is ``NaN``; the fully-masked-row
        guard zeros those rows before the ``P @ V`` contraction so the output rows are
        exactly ``0``, while rows 2 and 3 (attending keys ``{0}`` and ``{0,1}``) stay finite
        and nonzero.  A ``nonpad_kv_seqlen[b] < q_sequence_length`` input is out of
        the contract's intended use, but its result is still well-defined (zeroed
        rows) rather than ``NaN``; this test pins that defined behavior.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        é   r€  r   r   rr  r   rK   rL   r   r,  rt  zall output rows must be finiteNr   z%structurally-empty row 0 must be zeroz%structurally-empty row 1 must be zeror   z-rows with a non-empty key set must be nonzeroÚ@test_attention_4d_causal_nonpad_negative_offset_structural_emptyr   rÕ   r   )r#   r$   rd  r    r!   r"   r%   r&   r'   rC  rD  r   rŽ  r�  r�  r‘  Úanyr   r(   r‚  s               r,   ÚBexport_attention_4d_causal_nonpad_negative_offset_structural_emptyzLAttention.export_attention_4d_causal_nonpad_negative_offset_structural_emptyœ	  sÓ  € õ& 	Œ	�Š�qÑÔÐØ‰
ˆˆ1ˆa�ØˆåŒ{×$Ò$ØØBÐBÐBØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆåœ8 Q C­r¬xÐ8Ñ8Ô8Ðå'ØØØØ-Øð
ñ 
ô 
‰
ˆˆ1ˆa�õ Œv•b”k !‘n”nÑ%Ô%ÐGÐGÐ'GÑGÔGÐ%ÝŒ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJð 	
ð 	
Ø3ñ	
ô 	
ÐJõ Œ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJð 	
ð 	
Ø3ñ	
ô 	
ÐJõ Œv�a˜˜˜˜1˜1˜1˜a   ˜
”m qÒ(Ñ)Ô)ð 	
­b¬f°Q°q°q°q¸!¸!¸!¸QÀÀÀ°z´]ÀaÒ5GÑ.HÔ.Hð 	
ð 	
Ø;ñ	
ô 	
ÐHõ 	ØØ�q˜!Ð-Ð.Ø�CØSÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó  — t           j                             d¦  «         d\  } }}}t          j                             dg d¢g d¢d¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        ddgd	d	ggt           j
        ¬
¦  «        }t          ||||d¬¦  «        \  }	}
}
}t          j        |	dd…dd…ddd…f         t          j        |	dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        |dd…dd…ddd…f         t          j        |dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        t          j        |¦  «        ¦  «        s
J d¦   «         ‚t          j        t          j        |	¦  «        ¦  «        s
J d¦   «         ‚t!          |||||g|	|gdt          j                             dd¦  «        g¬¦  «         dS )a·  Opset-23 ``qk_matmul_output_mode=3`` fully-masked row is a zero row.

        Mode ``3`` exposes the post-softmax matrix as the optional
        ``qk_matmul_output``.  For a fully-masked query row (all-``False`` boolean
        ``attn_mask`` row), the fully-masked-row guard is applied before this output
        is produced, so the mode-3 row is zeroed, consistent with the primary output
        ``Y`` row (both are ``0``).  This pins the mandated agreement between the
        guarded primary output and the mode-3 output at opset 23.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        é   r‰  r   rX   r¦   r   r«   FTr,  r­   Nr   ú,fully-masked primary output row must be zeroúKmode-3 output row for a fully-masked query must be zero (consistent with Y)úCall mode-3 rows are finite (the fully-masked row is guarded to 0.0)ú>all Y rows are finite (the fully-masked row is guarded to 0.0)Ú9test_attention_23_fullymasked_qk_matmul_output_mode3_zeror   r   r   ©r#   r$   rd  r    r!   r"   r%   r&   r'   rC  r�  r   r�  r‘  rŽ  r�  r   r(   ©rg  rh  r“  rk  r*   r   r   r   rY   r   r+   r§   s               r,   Ú;export_attention_23_fullymasked_qk_matmul_output_mode3_zerozEAttention.export_attention_23_fullymasked_qk_matmul_output_mode3_zeroÜ	  s¼  € õ 	Œ	�Š�rÑÔÐØ‰
ˆˆ1ˆa�åŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5Ø"#ð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå”H˜u e˜n¨t°T¨lÐ;Å2Ä8ÐLÑLÔLˆ	å$6ØØØØØ"#ð%
ñ %
ô %
Ñ!ˆˆ1ˆaÐ!õ Œ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJð 	
ð 	
Ø:ñ	
ô 	
ÐJõ Œ~Ø˜Q˜Q˜Q    1 a a a˜ZÔ(­"¬-Ð8HÈÈÈÈAÈAÈAÈqÐRSÐRSÐRSÈÔ8TÑ*UÔ*Uñ
ô 
ð 	Yð 	YàXñ	Yô 	Yð 
õ Œv•b”kÐ"2Ñ3Ô3Ñ4Ô4ð 	
ð 	
ØQñ	
ô 	
Ð4õ Œv•b”k !‘n”nÑ%Ô%ð 	
ð 	
ØLñ	
ô 	
Ð%õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)ØLÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó  — t           j                             d¦  «         d\  } }}}t          j                             dg d¢g d¢d¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        ddgd	d	ggt           j
        ¬
¦  «        }t          ||||d¬¦  «        \  }	}
}
}t          j        |	dd…dd…ddd…f         t          j        |	dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        |dd…dd…ddd…f         t          j        |dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        t          j        |¦  «        ¦  «        s
J d¦   «         ‚t          j        t          j        |	¦  «        ¦  «        s
J d¦   «         ‚t!          |||||g|	|gdt          j                             dd¦  «        g¬¦  «         dS )a  Opset-24 ``qk_matmul_output_mode=3`` fully-masked row is a zero row.

        The opset-24 twin of
        ``export_attention_23_fullymasked_qk_matmul_output_mode3_zero``.  Mode ``3``
        exposes the post-softmax matrix as the optional ``qk_matmul_output``.  For a
        fully-masked query row (all-``False`` boolean ``attn_mask`` row), the
        fully-masked-row guard is applied before this output is produced, so the
        mode-3 row is zeroed, consistent with the primary output ``Y`` row (both are
        ``0``).  This pins the mandated agreement between the guarded primary output
        and the mode-3 output at opset 24.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        rž  r‰  r   rX   r¦   r   r«   FTr,  r­   Nr   rŸ  r   r¡  r¢  Ú9test_attention_24_fullymasked_qk_matmul_output_mode3_zeror   rÕ   r   r¤  r¥  s               r,   Ú;export_attention_24_fullymasked_qk_matmul_output_mode3_zerozEAttention.export_attention_24_fullymasked_qk_matmul_output_mode3_zero
  s¼  € õ  	Œ	�Š�rÑÔÐØ‰
ˆˆ1ˆa�åŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5Ø"#ð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå”H˜u e˜n¨t°T¨lÐ;Å2Ä8ÐLÑLÔLˆ	å$6ØØØØØ"#ð%
ñ %
ô %
Ñ!ˆˆ1ˆaÐ!õ Œ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJð 	
ð 	
Ø:ñ	
ô 	
ÐJõ Œ~Ø˜Q˜Q˜Q    1 a a a˜ZÔ(­"¬-Ð8HÈÈÈÈAÈAÈAÈqÐRSÐRSÐRSÈÔ8TÑ*UÔ*Uñ
ô 
ð 	Yð 	YàXñ	Yô 	Yð 
õ Œv•b”kÐ"2Ñ3Ô3Ñ4Ô4ð 	
ð 	
ØQñ	
ô 	
Ð4õ Œv•b”k !‘n”nÑ%Ô%ð 	
ð 	
ØLñ	
ô 	
Ð%õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)ØLÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 ó¾  — t           j                             d¦  «         d\  } }}}t          j                             dg d¢g d¢dt          t          j        j        ¦  «        ¬¦  «        }t           j         	                    | |||¦  «         
                    t           j        ¦  «        }t           j         	                    | |||¦  «         
                    t           j        ¦  «        }t           j         	                    | |||¦  «         
                    t           j        ¦  «        }t          j        ddgd	d	ggt           j        ¬
¦  «        }t          ||||dt          t          j        j        ¦  «        ¬¦  «        \  }	}
}
}|j        t           j        k    s
J d¦   «         ‚t          j        |dd…dd…ddd…f         t          j        |dd…dd…ddd…f         ¦  «        ¦  «        s
J d¦   «         ‚t          j        t          j        |¦  «        ¦  «        s
J d¦   «         ‚t)          |||||g|	|gdt          j                             dd¦  «        g¬¦  «         dS )aÔ  Mode-3 ``qk_matmul_output`` is emitted at the output precision ``T1``.

        ``qk_matmul_output_mode=3`` exposes the post-softmax probabilities.  When
        ``softmax_precision`` differs from the operator's output type ``T1`` (here
        ``T1 = float16`` with softmax computed in ``float32``), the mode-3 output is
        cast back to ``T1`` -- matching the reference implementation, which casts the
        exposed matrix to ``Q.dtype``.  This locks both the dtype contract and the
        fully-masked-row zeroing under a non-default ``softmax_precision``.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        é   r‰  r   rX   r¦   r   )r   r   r¬   Úsoftmax_precisionFTr,  )rY   r¬   r¬  zLmode-3 qk_matmul_output must be emitted at the output precision T1 (float16)Nr   r   r¡  Ú:test_attention_24_qk_matmul_output_mode3_softmax_precisionr   rÕ   r   )r#   r$   rd  r    r!   r"   ÚintÚTensorProtoÚFLOATr%   r&   r2   rC  r�  r   r-  r�  r‘  rŽ  r�  r   r(   r¥  s               r,   Ú<export_attention_24_qk_matmul_output_mode3_softmax_precisionzFAttention.export_attention_24_qk_matmul_output_mode3_softmax_precisionV
  sk  € õ 	Œ	�Š�rÑÔÐØ‰
ˆˆ1ˆa�åŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5Ø"#Ý!¥$Ô"2Ô"8Ñ9Ô9ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå”H˜u e˜n¨t°T¨lÐ;Å2Ä8ÐLÑLÔLˆ	å$6ØØØØØ"#Ý!¥$Ô"2Ô"8Ñ9Ô9ð%
ñ %
ô %
Ñ!ˆˆ1ˆaÐ!ð  Ô%­¬Ò3Ð3Ð3ØZñ 4Ô3Ð3õ Œ~Ø˜Q˜Q˜Q    1 a a a˜ZÔ(­"¬-Ð8HÈÈÈÈAÈAÈAÈqÐRSÐRSÐRSÈÔ8TÑ*UÔ*Uñ
ô 
ð 	Yð 	YàXñ	Yô 	Yð 
õ Œv•b”kÐ"2Ñ3Ô3Ñ4Ô4ð 	
ð 	
ØQñ	
ô 	
Ð4õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)ØMÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó0  — t           j                             d¦  «         d\  } }}}d}t          j                             dg d¢dgd¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        d	d
gt           j
        ¬¦  «        }	t          j	        g d¢g d¢g d¢ggg d¢g d¢g d¢gggt           j        ¬¦  «        }
t          ||||
|	d¬¦  «        \  }}}}t          j        t          j        |¦  «        ¦  «        s
J d¦   «         ‚t          ||||
|	d¬¦  «        \  }}}}t          ||||	d¬¦  «        \  }}}}t          ||||
d¬¦  «        \  }}}}t          j        ||d¬¦  «        r
J d¦   «         ‚t          j        ||d¬¦  «        r
J d¦   «         ‚t          j        ||d¬¦  «        r
J d¦   «         ‚t!          |||||
|	g|gdt          j                             dd¦  «        g¬¦  «         dS )a¯  Compose ``is_causal`` + ``nonpad_kv_seqlen`` + boolean ``attn_mask``.

        The existing nonpad tests use no ``attn_mask`` and the existing mask tests
        use no ``nonpad_kv_seqlen``; this is the first to activate all three
        constraints together on the external-cache path with ``batch > 1``.  The
        three biases are summed additively and a key is attended only if allowed by
        all three.  Crucially the inputs are designed so that **each constraint is
        independently necessary** -- removing any one changes the golden -- to avoid a
        degenerate test that a backend ignoring ``is_causal`` and/or
        ``nonpad_kv_seqlen`` could still pass:

        * **``is_causal`` binds.**  Each batch has a key that the boolean mask allows
          (``True``) but the bottom-right causal frontier disallows
          (``j > i + offset``); only ``is_causal`` masks it (batch 0 row 0 key 2,
          batch 1 row 0 key 3).
        * **``attn_mask`` binds.**  Each batch has a key the causal frontier and the
          padding bound both allow but the boolean mask sets ``False`` (batch 0 row 2
          key 1, batch 1 row 2 key 2); only the mask masks it.
        * **``nonpad_kv_seqlen`` binds.**  ``nonpad_kv_seqlen`` sets the per-batch
          causal *offset* (``offset = nonpad_kv_seqlen - q_sequence_length``), so
          dropping it collapses the frontier to top-left (``offset = 0``) and shifts
          which keys are attended.  (Under ``is_causal=1`` the causal frontier already
          subsumes the ``j < nonpad`` padding bound, so ``nonpad_kv_seqlen`` binds
          through the offset it induces rather than through a redundant padding cut.)

        The mask is chosen to leave at least one allowed key on every query row, so
        this exercises the *intersection* of the three constraints with finite outputs
        (the fully-masked-row guard is covered by
        ``test_attention_4d_causal_nonpad_negative_offset_structural_empty`` and
        ``test_attention_24_fullymasked_qk_matmul_output_mode3_zero``).

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        é   )r   r   r   r   r   r   r>  r   rK   rL   r   rs  r,  )TTTFFF)TFTTFF©TTTTFF)TTFTTF)rY   r?  rM   z)composed-constraint output must be finiter   rt  rc   T)Ú	equal_nanz3is_causal must bind: dropping it changes the resultz3attn_mask must bind: dropping it changes the resultzRnonpad_kv_seqlen must bind (via the causal offset): dropping it changes the resultÚ5test_attention_4d_causal_nonpad_attn_mask_compositionr   rÕ   r   N)r#   r$   rd  r    r!   r"   r%   r&   r'   rC  rD  r�  r   rŽ  r�  Úallcloser   r(   )rg  rh  rz  rk  ri  r*   r   r   r   r?  rY   r   r+   Úy_no_causalÚ	y_no_maskÚy_no_nonpads                   r,   Ú7export_attention_4d_causal_nonpad_attn_mask_compositionzAAttention.export_attention_4d_causal_nonpad_attn_mask_composition•
  s'  € õH 	Œ	�Š�rÑÔÐØ‰
ˆˆ1ˆa�ØˆåŒ{×$Ò$ØØKÐKÐKØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðõ
 ”Hð @Ð?Ð?Ø?Ð?Ð?Ø?Ð?Ð?ððð ?Ð>Ð>Ø>Ð>Ð>Ø>Ð>Ð>ðððõ  ”(ð#
ñ 
ô 
ˆ	õ( (ØØØØØ-Øð
ñ 
ô 
‰
ˆˆ1ˆa�õ Œv•b”k !‘n”nÑ%Ô%ÐRÐRÐ'RÑRÔRÐ%õ  2Øˆq�!˜yÐ;KÐWXð 
ñ  
ô  
Ñˆ�Q˜˜1õ 0Øˆq�!Ð&6À!ð
ñ 
ô 
Ñˆ	�1�a˜õ  2Øˆq�!˜y°Að 
ñ  
ô  
Ñˆ�Q˜˜1õ ”;˜q +¸Ð>Ñ>Ô>ð 	
ð 	
ØAñ	
ô 	
Ð>õ ”;˜q )°tÐ<Ñ<Ô<ð 	
ð 	
ØAñ	
ô 	
Ð<õ ”;˜q +¸Ð>Ñ>Ô>ð 	
ð 	
Ø`ñ	
ô 	
Ð>õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØHÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ób  — t           j                             d¦  «         d\  } }}}d}t          j                             dg d¢dgd¬¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t           j                             | |||¦  «                             t           j        ¦  «        }t          j	        g d	¢t           j
        ¬
¦  «        }	t          ||||	d¬¦  «        \  }
}}}t          j        t          j        |
¦  «        ¦  «        s
J d¦   «         ‚t          |||||	g|
gdt          j                             dd¦  «        g¬¦  «         dS )at  Batch>1 continued prefill with distinct per-batch bottom-right offsets.

        The batched generalization of the ``batch == 1`` continued-prefill case: with
        ``nonpad_kv_seqlen = [4, 5, 6]`` and ``S_q = 2`` the per-batch bottom-right
        offsets are ``[2, 3, 4]`` (all ``>= 0``), so each batch realigns its causal
        frontier to its own valid-key prefix.  This pins that the per-batch offset is
        applied independently across the batch dimension.

        4D Q/K/V is used so ``q_num_heads``/``kv_num_heads`` are omitted (passing
        them would make the function body treat the input as 3D).
        r‚   )r   r   r   r   r   r   rr  r   rK   rL   )r   rs  r   r,  rt  z'per-batch prefill output must be finiteÚ-test_attention_4d_causal_nonpad_batch_prefillr   rÕ   r   N)r#   r$   rd  r    r!   r"   r%   r&   r'   rC  rD  r   rŽ  r�  r   r(   r‚  s               r,   Ú/export_attention_4d_causal_nonpad_batch_prefillz9Attention.export_attention_4d_causal_nonpad_batch_prefill  s—  € õ 	Œ	�Š�rÑÔÐØ‰
ˆˆ1ˆa�ØˆåŒ{×$Ò$ØØBÐBÐBØ�EØð	 %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝœ8 I I IµR´XÐ>Ñ>Ô>Ðå'ØØØØ-Øð
ñ 
ô 
‰
ˆˆ1ˆa�õ Œv•b”k !‘n”nÑ%Ô%ÐPÐPÐ'PÑPÔPÐ%åØØ�q˜!Ð-Ð.Ø�CØ@Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ór  — d} t           j                             dg d¢dgd| ¬¦  «        }t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||d| ¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         dS )z=Causal sliding window attention with two preceding positions.r   r   r   r   rK   ©r   r   rM   Úleft_window_sizer   r   r   r   )rM   rÁ  Útest_attention_local_windowr   é   r   Nr   ©rÁ  r*   r   r   r   r   r+   s          r,   Úexport_attention_local_windowz'Attention.export_attention_local_window;  s/  € ð ÐÝŒ{×$Ò$ØØ"�?�?Ø�EØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'Øˆq�!˜qÐ3Cð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ.Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó†  — t           j                             dg d¢dgdd¬¦  «        } t          j        dt          j        ¬¦  «        }t          j        dt          j        ¬¦  «        }t          j        d	t          j        ¬¦  «                             ddd	d¦  «        }t          |||dd¬
¦  «        \  }}}}t          j	         
                    |                     d¦  «        t          j        g d¢t          j        ¬¦  «        ¦  «         t          | |||g|gdt           j                             dd¦  «        g¬¦  «         dS )z>Asymmetric bidirectional window independent of causal masking.r   r   r   rK   r   ©r   r   rÁ  Úright_window_size)rK   rK   rs  rK   r,  rs  ©rÁ  rÈ  éÿÿÿÿ)g      ð?g      ø?g      @r  g      @Ú#test_attention_bidirectional_windowr   rÃ  r   N)r    r!   r"   r#   r/  r'   ÚarangeÚreshaper   ÚtestingÚassert_allcloserC  r   r(   r)   s         r,   Ú%export_attention_bidirectional_windowz/Attention.export_attention_bidirectional_windowW  sJ  € õ Œ{×$Ò$ØØ"�?�?Ø�EØØð %ñ 
ô 
ˆõ ŒH�\­¬Ð4Ñ4Ô4ˆÝŒH�\­¬Ð4Ñ4Ô4ˆÝŒI�a�rœzÐ*Ñ*Ô*×2Ò2°1°a¸¸AÑ>Ô>ˆÝ'ØØØØØð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	Œ
×"Ò"Ø�IŠI�b‰MŒM�2œ8Ð$=Ð$=Ð$=ÅRÄZÐPÑPÔPñ	
ô 	
ð 	
õ 	ØØ�q˜!�9Ø�CØ6Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ón  — t           j                             dg d¢dgdd¬¦  «        } t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          |||dd¬¦  «        \  }}}}t          | |||g|gdt           j         
                    dd¦  «        g¬¦  «         dS )z8Disabled window bounds behave identically to version 24.r   r   r   rÊ  rÇ  r   r   r   r   r   rÉ  Ú#test_attention_local_window_defaultr   rÃ  r   Nr   r)   s         r,   Ú%export_attention_local_window_defaultz/Attention.export_attention_local_window_defaultx  s(  € õ Œ{×$Ò$ØØ"�?�?Ø�EØØ ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆå'Øˆq�! b¸Bð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ6Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó¢  — d} t           j                             dg d¢dgd| ¬¦  «        }t          j                             dddd	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j                             ddd
d	¦  «                             t          j        ¦  «        }t          j        g d¢¦  «        }t          ||||d| ¬¦  «        \  }}}}t          |||||g|gdt           j                             dd¦  «        g¬¦  «         dS )zBA rank-1 boolean mask retains standard right-aligned broadcasting.r   r   rX   r   rK   rÀ  r   r   r   r   r´  )rY   rM   rÁ  Ú.test_attention_local_window_rank1_boolean_maskr   rÃ  r   N)r    r!   r"   r#   r$   r%   r&   r'   rC  r   r   r(   )rÁ  r*   r   r   r   rY   r   r+   s           r,   Ú0export_attention_local_window_rank1_boolean_maskz:Attention.export_attention_local_window_rank1_boolean_mask“  sP  € ð ÐÝŒ{×$Ò$ØØ/Ð/Ð/Ø�EØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”HÐCÐCÐCÑDÔDˆ	å'ØØØØØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ'Ø�CØAÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ó€  — d} d}t           j                             dg d¢g d¢d| ¬¦  «        }t          j                             ddd	d¦  «                             t          j        ¦  «        }t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             dddd¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          j                             dd|d¦  «                             t          j        ¦  «        }t          |||||d| ¬
¦  «        \  }}	}
}t          ||||||g||	|
gdt           j         
                    dd¦  «        g¬¦  «         dS )z<Sliding window with internal KV cache (past_key/past_value).r   r   r   r…  r   rK   rÀ  r   r   )r}   r~   rM   rÁ  Ú%test_attention_local_window_with_pastr   rÃ  r   Nr   )rÁ  r†   r*   r   r   r   r}   r~   r   r€   r�   r+   s               r,   Ú'export_attention_local_window_with_pastz1Attention.export_attention_local_window_with_pastµ  s£  € ð ÐØ ÐÝŒ{×$Ò$ØØ@Ð@Ð@Ø9Ð9Ð9ØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝŒI�NŠN˜1˜a  AÑ&Ô&×-Ò-­b¬jÑ9Ô9ˆÝ”9—>’> ! QÐ(<¸aÑ@Ô@×GÒGÍÌ
ÑSÔSˆÝ”Y—^’^ A qÐ*>ÀÑBÔB×IÒIÍ"Ì*ÑUÔUˆ
å+=ØØØØØ!ØØ-ð,
ñ ,
ô ,
Ñ(ˆˆ;˜ qõ 	ØØ�q˜!˜X zÐ2Ø˜ ]Ð3Ø8Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óJ  — d} d\  }}}}}t           j                             dg d¢dgd| ¬¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }	t          j                             |||¦  «                             t          j        ¦  «        }
t          j        dd	gt          j	        ¬
¦  «        }t          |||	|
|d| ¬¦  «        \  }}}}t          ||||	|
|g|gdt           j                             dd¦  «        g¬¦  «         dS )z;External cache with a legal rank-3 ``(heads, q, kv)`` mask.r   ©r   r   r   r   r   r   r>  r   rK   rÀ  r   r™  r,  ©rY   r?  rM   rÁ  Ú5test_attention_local_window_ext_cache_rank3_head_maskr   rÃ  r   NrB  ©rÁ  rg  rh  ri  rj  rk  r*   r   r   r   rY   r?  r   r+   s                 r,   Ú7export_attention_local_window_ext_cache_rank3_head_maskzAAttention.export_attention_local_window_ext_cache_rank3_head_maskÚ  s’  € ð ÐØ*Ñˆˆ1ˆc�4˜ÝŒ{×$Ò$ØØKÐKÐKØ�EØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆå”I—N’N 1 c¨4Ñ0Ô0×7Ò7½¼
ÑCÔCˆ	åœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØ-ØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØHÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óL  — d} d\  }}}}}t           j                             dg d¢dgd| ¬¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }	t          j                             |d||¦  «                             t          j        ¦  «        }
t          j        dd	gt          j	        ¬
¦  «        }t          |||	|
|d| ¬¦  «        \  }}}}t          ||||	|
|g|gdt           j                             dd¦  «        g¬¦  «         dS )zGExternal cache with a batch-specific rank-4 ``(batch, 1, q, kv)`` mask.r   rÛ  r   r>  r   rK   rÀ  r   r™  r,  rÜ  Ú6test_attention_local_window_ext_cache_rank4_batch_maskr   rÃ  r   NrB  rÞ  s                 r,   Ú8export_attention_local_window_ext_cache_rank4_batch_maskzBAttention.export_attention_local_window_ext_cache_rank4_batch_mask  s”  € ð ÐØ*Ñˆˆ1ˆc�4˜ÝŒ{×$Ò$ØØKÐKÐKØ�EØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”I—N’N 1 a¨¨dÑ3Ô3×:Ò:½2¼:ÑFÔFˆ	Ýœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØ-ØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØIÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óH  — d} d\  }}}}}t           j                             dg d¢dgd| ¬¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }t          j                             ||||¦  «                             t          j        ¦  «        }	t          j                             d|¦  «                             t          j        ¦  «        }
t          j        dd	gt          j	        ¬
¦  «        }t          |||	|
|d| ¬¦  «        \  }}}}t          ||||	|
|g|gdt           j                             dd¦  «        g¬¦  «         dS )z;External cache with a conventional rank-2 ``(1, kv)`` mask.r   rÛ  r   r>  r   rK   rÀ  r   r™  r,  rÜ  Ú0test_attention_local_window_ext_cache_rank2_maskr   rÃ  r   NrB  rÞ  s                 r,   Ú2export_attention_local_window_ext_cache_rank2_maskz<Attention.export_attention_local_window_ext_cache_rank2_mask&  s�  € ð ÐØ*Ñˆˆ1ˆc�4˜ÝŒ{×$Ò$ØØKÐKÐKØ�EØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a  aÑ(Ô(×/Ò/µ´
Ñ;Ô;ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝŒI�NŠN˜1˜a  qÑ)Ô)×0Ò0µ´Ñ<Ô<ˆÝ”I—N’N 1 dÑ+Ô+×2Ò2µ2´:Ñ>Ô>ˆ	Ýœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØ-ØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØCÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     óp  — d} d\  }}}}}t           j                             dg d¢dgd| ¬¦  «        }t          j        ||||ft          j        ¬¦  «        }t          j        ||||ft          j        ¬¦  «        }t          j        ||||ft          j        ¬¦  «        }	t          j        d|ft          j        ¬¦  «        }
t          j        d	d
gt          j        ¬¦  «        }t          |||	|
|d| ¬¦  «        \  }}}}t          ||||	|
|g|gdt           j                             dd¦  «        g¬¦  «         dS )z-External cache with a float16 attention mask.r   rÛ  r   r>  r   rK   rÀ  r,  r   r™  rÜ  Ú2test_attention_local_window_ext_cache_float16_maskr   rÃ  r   N)r    r!   r"   r#   r/  r2   r2  rC  rD  r   r   r(   rÞ  s                 r,   Ú4export_attention_local_window_ext_cache_float16_maskz>Attention.export_attention_local_window_ext_cache_float16_maskK  sd  € ð ÐØ*Ñˆˆ1ˆc�4˜ÝŒ{×$Ò$ØØKÐKÐKØ�EØØ-ð %ñ 
ô 
ˆõ ŒH�a˜˜C �^­2¬:Ð6Ñ6Ô6ˆÝŒH�a˜˜D !�_­B¬JÐ7Ñ7Ô7ˆÝŒG�Q˜˜4 �O­2¬:Ð6Ñ6Ô6ˆÝ”H˜a ˜Y­b¬jÐ9Ñ9Ô9ˆ	Ýœ8 Q¨ Fµ"´(Ð;Ñ;Ô;Ðå'ØØØØØ-ØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!˜YÐ(8Ð9Ø�CØEÝœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c            
     ót  — d} t           j                             dg d¢dgddd| ¬¦  «        }t          j                             ddd¦  «                             t          j        ¦  «        }t          j                             dd	d
¦  «                             t          j        ¦  «        }t          j                             dd	d	¦  «                             t          j        ¦  «        }t          |||ddd| ¬¦  «        \  }}}}t          ||||g|gdt           j         
                    dd¦  «        g¬¦  «         dS )z=Sliding window with 3D MQA inputs and a distinct V head size.r   r   r   r   r   rK   )r   r   rÓ   rÔ   rM   rÁ  é    r   r   )rÓ   rÔ   rM   rÁ  Útest_attention_3d_local_windowr   rÃ  r   Nr   rÄ  s          r,   Ú export_attention_3d_local_windowz*Attention.export_attention_3d_local_windowp  s8  € ð ÐÝŒ{×$Ò$ØØ"�?�?Ø�EØØØØ-ð %ñ 
ô 
ˆõ ŒI�NŠN˜1˜a Ñ$Ô$×+Ò+­B¬JÑ7Ô7ˆÝŒI�NŠN˜1˜a Ñ#Ô#×*Ò*­2¬:Ñ6Ô6ˆÝŒI�NŠN˜1˜a Ñ#Ô#×*Ò*­2¬:Ñ6Ô6ˆå'ØØØØØØØ-ð
ñ 
ô 
‰
ˆˆ1ˆa�õ 	ØØ�q˜!�9Ø�CØ1Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   c                 óÀ  — t           j                             d¦  «         d\  } }}}}}}d}t          t          j        j        ¦  «        }t          j                             dg d¢g d¢d|d|d	¬
¦  «        }	t           j         	                    | |||¦  «         
                    t           j        ¦  «        }
t           j         	                    | |||¦  «         
                    t           j        ¦  «        }t           j         	                    | |||¦  «         
                    t           j        ¦  «        }t          j        | |||ft           j        ¬¦  «        }d|dd…dd…ddd…f<   t          |
|||d|d|d	¬¦	  «	        \  }}}}|j        | |||fk    sJ ‚t          j        |dd…dd…ddd…f         t          j        |dd…dd…ddd…f         ¦  «        ¦  «        sJ ‚t          j        |dd…dd…ddd…f         t          j        |dd…dd…ddd…f         ¦  «        ¦  «        sJ ‚t%          |	|
|||g||gdt          j                             dd¦  «        g¬¦  «         dS )zCWindowed GQA with distinct V head size and a per-head boolean mask.rÃ  )r   r   r   r   r   r   r   r   r   rX   r¦   rK   r™   r   )r   r   rM   rÁ  r›   r¬  r¬   r,  FNr   )rY   rM   rÁ  r›   r¬  r¬   Ú*test_attention_local_window_gqa_rank4_maskr   r   )r#   r$   rd  r®  r    r¯  ÚDOUBLEr!   r"   r%   r&   r'   r2  r�  r   Úshaper�  r‘  r   r(   )rg  rx  ry  ri  rj  ÚD_qkÚD_vrÁ  r¬  r*   r   r   r   rY   r   r+   r§   s                    r,   Ú,export_attention_local_window_gqa_rank4_maskz6Attention.export_attention_local_window_gqa_rank4_mask”  s¢  € õ 	Œ	�Š�rÑÔÐØ-@Ñ*ˆˆ3��c˜4  sØÐÝ¥Ô 0Ô 7Ñ8Ô8ÐÝŒ{×$Ò$ØØ/Ð/Ð/Ø5Ð5Ð5ØØ-ØØ/Ø"#ð %ñ 	
ô 	
ˆõ ŒI�NŠN˜1˜c 3¨Ñ-Ô-×4Ò4µR´ZÑ@Ô@ˆÝŒI�NŠN˜1˜d D¨$Ñ/Ô/×6Ò6µr´zÑBÔBˆÝŒI�NŠN˜1˜d D¨#Ñ.Ô.×5Ò5µb´jÑAÔAˆÝ”G˜Q  S¨$Ð/µr´xÐ@Ñ@Ô@ˆ	Ø %ˆ	�!�!�!�Q�Q�Q˜˜1˜1˜1�*Ñå$6ØØØØØØ-ØØ/Ø"#ð
%
ñ 
%
ô 
%
Ñ!ˆˆ1ˆaÐ!ð Œw˜1˜c 3¨Ð,Ò,Ð,Ð,Ð,ÝŒ~˜a    1 1 1 a¨¨¨ 
œm­R¬]¸1¸Q¸Q¸QÀÀÀÀ1ÀaÀaÀa¸Z¼=Ñ-IÔ-IÑJÔJÐJÐJÐJÝŒ~Ø˜Q˜Q˜Q    1 a a a˜ZÔ(­"¬-Ð8HÈÈÈÈAÈAÈAÈqÐRSÐRSÐRSÈÔ8TÑ*UÔ*Uñ
ô 
ð 	
ð 	
ð 
õ 	ØØ�q˜!˜YÐ'ØÐ(Ð)Ø=Ýœ;×3Ò3°B¸Ñ;Ô;Ð<ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r.   N)r	   r
   )aÚ__name__Ú
__module__Ú__qualname__Ústaticmethodr-   r3   r7   r;   rC   rF   rI   rP   rS   rV   r]   r`   re   ri   rl   rq   rt   rw   rz   r‡   rŠ   r�   r�   r“   r—   rž   r¡   r¤   r©   r°   r³   r¶   r¼   r¿   rÃ   rÈ   rÌ   rÏ   rÙ   rÞ   râ   rè   rë   rî   ró   rö   rù   rþ   r  r  r
  r  r  r  r  r  r  r$  r'  r*  r<  rF  rL  rO  rS  rV  rY  r\  rl  ro  r{  r~  rƒ  r‡  r”  r—  rœ  r¦  r©  r±  r»  r¾  rÅ  rÐ  rÓ  rÖ  rÙ  rß  râ  rå  rè  rì  ró  © r.   r,   r   r      sí  € € € € € Øð
ð 
ð 
ñ „\ð
ð" ð
ð 
ð 
ñ „\ð
ð" ð
ð 
ð 
ñ „\ð
ð" ð
ð 
ð 
ñ „\ð
ð" ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð, ð
ð 
ð 
ñ „\ð
ð, ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð: ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð: ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð, ð
ð 
ð 
ñ „\ð
ð, ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð* ð
ð 
ð 
ñ „\ð
ð: ð
ð 
ð 
ñ „\ð
ð> ð
ð 
ð 
ñ „\ð
ð: ð 
ð  
ð  
ñ „\ð 
ðD ð 
ð  
ð  
ñ „\ð 
ðD ð 
ð  
ð  
ñ „\ð 
ðD ð"
ð "
ð "
ñ „\ð"
ðH ð"
ð "
ð "
ñ „\ð"
ðH ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ðB ð
ð 
ð 
ñ „\ð
ðB ð
ð 
ð 
ñ „\ð
ðB ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð@ ð#
ð #
ð #
ñ „\ð#
ðJ ð#
ð #
ð #
ñ „\ð#
ðJ ð#
ð #
ð #
ñ „\ð#
ðJ ð#
ð #
ð #
ñ „\ð#
ðJ ð%
ð %
ð %
ñ „\ð%
ðN ð'
ð '
ð '
ñ „\ð'
ðR ð%
ð %
ð %
ñ „\ð%
ðN ð4
ð 4
ð 4
ñ „\ð4
ðl ð
ð 
ð 
ñ „\ð
ð> ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð. ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð< ð
ð 
ð 
ñ „\ð
ð6 ð$
ð $
ð $
ñ „\ð$
ðL ð'
ð '
ð '
ñ „\ð'
ðR ð'
ð '
ð '
ñ „\ð'
ðR ð
ð 
ð 
ñ „\ð
ðB ð&
ð &
ð &
ñ „\ð&
ðP ð&
ð &
ð &
ñ „\ð&
ðP ð;
ð ;
ð ;
ñ „\ð;
ðz ð,
ð ,
ð ,
ñ „\ð,
ð\ ð=
ð =
ð =
ñ „\ð=
ð~ ð9
ð 9
ð 9
ñ „\ð9
ðv ð;
ð ;
ð ;
ñ „\ð;
ðz ð<
ð <
ð <
ñ „\ð<
ð| ðt
ð t
ð t
ñ „\ðt
ðl ð,
ð ,
ð ,
ñ „\ð,
ð\ ð
ð 
ð 
ñ „\ð
ð6 ð
ð 
ð 
ñ „\ð
ð@ ð
ð 
ð 
ñ „\ð
ð4 ð
ð 
ð 
ñ „\ð
ðB ð"
ð "
ð "
ñ „\ð"
ðH ð$
ð $
ð $
ñ „\ð$
ðL ð"
ð "
ð "
ñ „\ð"
ðH ð"
ð "
ð "
ñ „\ð"
ðH ð"
ð "
ð "
ñ „\ð"
ðH ð!
ð !
ð !
ñ „\ð!
ðF ð/
ð /
ð /
ñ „\ð/
ð /
ð /
r.   r   )Ú
__future__r   rJ  Únumpyr#   r    Úonnx.backend.test.case.baser   Úonnx.backend.test.case.noder   Úonnx.reference.ops.op_attentionr   r   rø  r.   r,   ú<module>rþ     s®   ðð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð à €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø .Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >ðu2
ð u2
ð u2
ð u2
ð u2
�ñ u2
ô u2
ð u2
ð u2
ð u2
r.   