+
    ˜°³j@  ã                   óŽ   € R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIH	t	 ^ RI
t
RtR R ltR R	 ltR
 R lt]R8X  d
   ]! 4        R# R# )zfExample use of Timer and op fuzzers to measure kernel performance.

$ python -m examples.op_benchmark
N)ÚTimer)ÚBinaryOpFuzzer)ÚUnaryOpFuzzerg      ð?c                ó   € V ^8„  d   QhRR/# ©é   ÚreturnN© )Úformats   "Úl/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/utils/benchmark/examples/op_benchmark.pyÚ__annotate__r      s   € ÷ Oñ O¨$ñ Oó    c                óV  a€ \        V P                  4       4      \        V P                  4       4      8w  d   \        R4      h\        ;QJ d-    V3R lV P	                  4        4       F  '       d   K   RM"	  RM! V3R lV P	                  4        4       4      '       d   \        R4      hR# )zBuiltin dict comparison will not compare numpy arrays.

e.g.::

    x = {"a": np.ones((2, 1))}
    x == x  # Raises ValueError
zdicts must have the same keysc              3   óz   <"  € T F0  w  rVR 8w  g   K  \         P                  ! VSV,          8g  4      x € K2  	  R# 5i)ÚdtypeN)ÚnpÚall)Ú.0ÚkÚvÚdict_1s   &  €r   Ú	<genexpr>Ú%assert_dicts_equal.<locals>.<genexpr>   s0   øé € Ð
M©n¡d aÀÀWÁÔ!Œ2�6Š6�!�v˜a•y‘.×!Ð!«nùs   ƒ;“(;FTz.dict values differ for keys other than 'dtype'N)ÚsetÚkeysÚAssertionErrorr   Úitems)Údict_0r   s   &fr   Úassert_dicts_equalr      sn   ø€ ô ˆ6�;‰;‹=ÓœS §¡£Ó/Ô/ÜÐ<Ó=Ð=ß
ƒsÔ
M¨f¯l©l¬nÓ
M‡s‡s‚sÔ
M¨f¯l©l¬nÓ
M×MÒMÜÐMÓNÐNñ Nr   c                ó   € V ^8„  d   QhRR/# r   r	   )r
   s   "r   r   r   !   s   € ÷ Bñ B ñ Br   c                 ó|	  a€ V! ^ \         P                  R7      P                  V 4      pV! ^ \         P                  R7      P                  V 4      p. p\	        \        W4RR7      4       EFÂ  w  pw  rxVw  ršpVw  rÍp\        W¾4       \        V
R,          VR,          4       V3R lWœ3 4       w  pp. pV	 EFC  pRRP                  V	V,          P                   Uu. uFb  p^\        \        P                  ! V4      4      ,          V8X  d*   V^8”  d#   R\        \        P                  ! V4      4       2M
\        V4      NKd  	  up4      ,           R	,           pV
V,          R
,          p\        V\        P                  ! \        V4      4      8H  4      '       d   RM\        \!        V4      4      pV
V,          R,          p\#        V4      \        V4      8”  d   \        V4      MRpVP%                  VVVV34       EKF  	  VP%                  VVV34       \'        RX^,            RV  2RR7       EKÅ  	  \'        4        . ^ ^ ^ ^ 3w  pppppV FË  w  pppVP(                  R,          pVP(                  R,          p\+        VV,
          4      VV,           ,          ^,          pVP%                  VVVV34       V F\  w  pp pp\-        V\        V4      4      p\-        V\        V 4      4      p\-        V\        V4      4      p\-        V\        V4      4      pK^  	  KÍ  	  VP/                  \0        P2                  ! ^4      R7       \'        RS 24       \'        RRR RV,           R2RR7       \'        RP5                  V4       RR R
P5                  V4       2RR7       \'        RR% 24       VR,          R3VR&R R33 Fö  w  p!p"V! Fß  w  ppppV^d,          R RVV8  d   RMRR  2.p#T#P7                  VRR'  U$u. uF$  p$RP5                  \        V#^ ,          4      4      NK&  	  up$4       \        V#VRR7       Fh  w  p%w  pp ppV R!2P5                  V^,           4      pV P5                  V^
,           4      p VP5                  V4      p\'        V% RV R"V  R#V R$V 2	4       Kj  	  Ká  	  \'        V"4       Kø  	  R# u upi u up$i )(é    )Úseedr   T)ÚstrictÚxc              3   óf   <"  € T F&  p\        SVR 7      P                  \        R7      x € K(  	  R# 5i))Úglobals)Úmin_run_timeN)r   Úblocked_autorangeÚ_MEASURE_TIME)r   ÚtensorsÚstmts   & €r   r   Úrun.<locals>.<genexpr>.   s<   øé € ð .
ñ
 8�ô	 ØØô÷  Ñ¬]ÐÓ;ô<ó 8ùs   ƒ.1Ú(z, z2 ** Ú)ÚorderÚ ÚstepsÚz / )Úendg    €„.A)Úkeyzstmt: z diff    fasterz>17Ú Úshapez>16z          steps
:Né
   Nz...Nz>4.1fz%    ÚintÚfloatz<20Ú:z  z|     z
      |   zd----------------------------------------------------------------------------------------------------iöÿÿÿéÿÿÿÿ)ÚtorchÚfloat32ÚtakeÚint32Ú	enumerateÚzipr   Újoinr6   r8   r   Úlog2Ústrr   ÚarangeÚlenÚtupleÚsumÚappendÚprintÚmedianÚabsÚmaxÚsortÚoperatorÚ
itemgetterÚljustÚextend)&Únr+   Ú
fuzzer_clsÚ
float_iterÚint_iterÚraw_resultsÚiÚfloat_valuesÚ
int_valuesÚfloat_tensorsÚfloat_tensor_paramsÚfloat_paramsÚint_tensorsÚint_tensor_paramsÚ
int_paramsÚfloat_measurementÚint_measurementÚdescriptionsÚnameÚ	shape_strr/   Ú	order_strr1   Ú	steps_strÚparsed_resultsÚname_lenÚ	shape_lenÚ	order_lenÚ	steps_lenÚt_floatÚt_intÚrel_diffr6   ÚresultsÚspacerÚtime_strÚ_Út_strs&   &f&                                   r   Úrunru   !   s“  ø€ Ù ¬%¯-©-Ô8×=Ñ=¸aÓ@€JÙ˜q¬¯©Ô4×9Ñ9¸!Ó<€HØ€KÜ)2´3°zÐTXÔ3Y×)ZÑ%ˆÑ%ˆLØ;GÑ8ˆ¨LØ5?Ñ2ˆ¨
ô 	˜<Ô4ÜÐ.¨sÕ3Ð5FÀsÕ5KÔLô.
ð
 *Ñ7ó.
Ñ*Ð˜?ð ˆÜ!ˆDØ˜dŸi™ið ' tÕ,×2Ò2ó	)ñ 3�Að œœBŸGšG A›J›Õ'¨1Ô,°°Q´ð œœBŸGšG A›J›Ð(Ñ)ä˜“Vòñ 3ñ	)ó õ ð
 õˆIð (¨Õ-¨gÕ6ˆEÜ" 5¬B¯IªI´c¸%³jÓ,AÑ#A×BÒB™ÌÌEÐRWËLÓHYˆIØ'¨Õ-¨gÕ6ˆEÜ&)¨%£j´3°u³:Ô&=œ˜Eœ
À2ˆIØ×Ñ  y°)¸YÐ G×Hñ "ð 	×ÑÐ-¨ÀÐMÔNä��1�q•5�'˜˜Q˜CÐ  b×)Ð)ñA *[ôB 
„Gà@BÀAÀqÈ!ÈQÀÑ=€N�H˜i¨°IÛ<GÑ8Ð˜?¨LØ#×*Ñ*¨SÕ0ˆØ×&Ñ&¨Õ,ˆÜ�w •Ó'¨7°U­?Õ;¸aÕ?ˆØ×Ñ˜w¨¨x¸ÐFÔGÛ)5Ñ%ˆD�%˜ Ü˜8¤S¨£YÓ/ˆHÜ˜I¤s¨5£zÓ2ˆIÜ˜I¤s¨5£zÓ2ˆIÜ˜I¤s¨5£zÓ2ŠIó	 *6ñ =Hð ×ÑœH×/Ò/°Ó2ÐÔ3ä	ˆF�4�&ˆ/ÔÜ	ˆO˜B˜s˜8 C¨(¥NÐ#3°1Ð
5¸2Õ>Ü	ˆW�]‰]˜9Ó%Ð& r¨# h¨w¯}©}¸YÓ/GÐ.HÐ
IÈrÕRÜ	Ð˜i˜[Ð
)Ô*Ø+¨CÕ0°%Ð8¸>È#È$Ð;OÐQSÐ:TÓU‰ˆ�Û6=Ñ2ˆG�U˜H lØ# c�>¨%Ð0°¸uÀw¼±eÐT[Ð\_Ð5`ÐaÐbˆHØ�O‰OÀÈcÈrÑARÓSÑAR¸A˜RŸX™X¤c¨(°1­+Ó&6Ö7ÑARÑSÔTÜ69¸(ÀLÐY]×6^Ñ2�Ñ2˜˜e U¨EØ˜˜q�z×'Ñ'¨°1­Ó5�ØŸ™ I°¥NÓ3�ØŸ™ IÓ.�Ü˜˜˜q   b¨¨¨v°e°W¸JÀuÀgÐNÖOó	 7_ñ 7>ô 	ˆfŽó VùòE)ùòJ Ts   ÃA(R4Ï4*R9c                ó   € V ^8„  d   QhRR/# r   r	   )r
   s   "r   r   r   f   s   € ÷ 8ñ 8ˆdñ 8r   c                  ór   € \        ^dR\        R7       \        ^dR\        R7       \        ^dR\        R7       R# )éd   ztorch.median(x, dim=0))rS   r+   rT   ztorch.square(x)zx + yN)ru   r   r   r	   r   r   Úmainry   f   s(   € Üˆ#Ð,¼ÕGÜˆ#Ð%´-Õ@Üˆ#�G¬×7r   Ú__main__)Ú__doc__Únumpyr   r<   Útorch.utils.benchmarkr   Ú'torch.utils.benchmark.op_fuzzers.binaryr   Ú&torch.utils.benchmark.op_fuzzers.unaryr   rO   r)   r   ru   ry   Ú__name__r	   r   r   Ú<module>r�      sK   ðñó
 Û å 'Ý BÝ @Û ð €õOõBõJ8ð ˆzÔÙ†Fñ r   