+
    œ°³j7  ã                   óØ   € ^ RI t ^ RIt^ RIt^RIHt ]! 4       '       d   ^ RIHt ^t^t]	! ]P                  ! R]R7      4      t]]]39  d	   ]! R4      h/ tR tR tRR	 ltRR
 ltR tR# )é    N)Úis_torch_npu_available)Únpu_fusion_attentionÚNPU_FA2_SPARSE_MODE)Údefaultz…Environment variable `NPU_FA2_SPARSE_MODE` can only be set as 2 (top-left aligned causal mask) or 3 (down-right aligned causal mask).c                ó¼   € V \         9  dF   \        P                  ! \        P                  ! RR.V R7      ^R7      P	                  4       \         V &   \         V ,          # )z6Get or create attention mask for the specified device.i   ©Údevice)Údiagonal)ÚATTN_MASK_NPU_CACHEÚtorchÚtriuÚonesÚboolr   s   &Ún/home/luca/screen-checking/.venv/lib/python3.14/site-packages/transformers/integrations/npu_flash_attention.pyÚget_attn_mask_npur   (   sF   € àÔ(Ô(Ü&+§j¢j´·²¸TÀ4¸LÐQWÔ1XÐcdÔ&e×&jÑ&jÓ&lÔ˜FÑ#Ü˜vÕ&Ð&ó    c                  ó@   € \        4       '       d   \        \        8H  # R # )F)r   ÚSPARSE_MODEÚ!TOP_LEFT_ALIGNED_CAUSAL_MASK_MODE© r   r   Ú'is_npu_fa2_top_left_aligned_causal_maskr   /   s   € Ü?U×?WÒ?WŒ;Ô;Ñ;ÐbÐ]bÐbr   c                 óp  € R V,
          pVf/   R \         P                  ! V P                  R,          4      ,          pV'       g,   V P                  ^,          p\        WW(RWtR7      ^ ,          p	V	# \	        V P
                  4      p
V P                  ^,          p\        V VVVRVVV
\        R7	      ^ ,          p	V	# )ç      ð?ÚBSND)Ú	keep_probÚscale)r   r   Ú
atten_maskÚsparse_modeéÿÿÿÿ)ÚmathÚsqrtÚshaper   r   r	   r   )ÚqÚkÚvÚ	dropout_pÚsoftmax_scaleÚcausalÚkwargsr   Úhead_numÚoutputÚattn_mask_npus   &&&&&&,    r   Únpu_flash_attn_funcr-   3   s®   € ð �i•€IàÒØœdŸiši¨¯©°­Ó4Õ4ˆçØ—7‘7˜1•:ˆÜ% a¨A¸È9ÔjÐklÕmˆð  €Mô *¨!¯(©(Ó3ˆØ—7‘7˜1•:ˆÜ%ØØØØØØØØ$Ü#ô

ð õ
ˆð €Mr   c
                 óV  € R V,
          pVf/   R \         P                  ! V P                  R,          4      ,          pV	'       g§   V P                  ^,          p\        V VVVRRVVR\	        VR,          P                  4       P                  4       P                  4       4      \	        VR,          P                  4       P                  4       P                  4       4      R7      ^ ,          pV# \        V P                  4      pV P                  ^,          p\        V VVVRRVVVR\	        VR,          P                  4       P                  4       P                  4       4      \	        VR,          P                  4       P                  4       P                  4       4      \        R7      ^ ,          pV# )r   NÚTND:é   NN)Úpser   r   r   Úinput_layoutÚactual_seq_qlenÚactual_seq_kvlen)	r1   Úpadding_maskr   r   r   r2   r3   r4   r   r   )r    r!   r"   r   ÚtupleÚcpuÚnumpyÚtolistr   r	   r   )r#   r$   r%   Úcu_seqlens_qÚcu_seqlens_kÚmax_seqlen_qÚmax_seqlen_kr&   r'   r(   r)   r   r*   r+   r,   s   &&&&&&&&&&,    r   Únpu_flash_attn_varlen_funcr>   V   sn  € ð �i•€IàÒØœdŸiši¨¯©°­Ó4Õ4ˆçØ—7‘7˜1•:ˆÜ%ØØØØØØØØØÜ! ,¨rÕ"2×"6Ñ"6Ó"8×">Ñ">Ó"@×"GÑ"GÓ"IÓJÜ" <°Õ#3×#7Ñ#7Ó#9×#?Ñ#?Ó#A×#HÑ#HÓ#JÓKô
ð õˆð@ €Mô% *¨!¯(©(Ó3ˆØ—7‘7˜1•:ˆÜ%ØØØØØØØ$ØØØÜ! ,¨rÕ"2×"6Ñ"6Ó"8×">Ñ">Ó"@×"GÑ"GÓ"IÓJÜ" <°Õ#3×#7Ñ#7Ó#9×#?Ñ#?Ó#A×#HÑ#HÓ#JÓKÜ#ô
ð õˆð  €Mr   c                  ó   € \        R 4      h)z.npu_flash_attn_with_kvcache is not implemented)ÚNotImplementedErrorr   r   r   Únpu_flash_attn_with_kvcacherA   Ž   s   € Ü
ÐNÓ
OÐOr   )ç        NF)NNrB   NF)r    Úosr   Úutils.import_utilsr   Ú	torch_npur   r   Ú#DOWN_RIGHT_ALIGNED_CAUSAL_MASK_MODEÚintÚgetenvr   Ú
ValueErrorr   r   r   r-   r>   rA   r   r   r   Ú<module>rJ      sŒ   ðó Û 	ã å 7ñ ×ÒÝ.ð
 %&Ð !Ø&'Ð #á�"—)’)Ð1Ð;^Ô_Ó`€ØÐ8Ð:]Ð^Ô^Ù
ð	1óð ð
 Ð ò'òcô ôF4ôpPr   