+
    ˜°³jÃ  ã                   ó  € ^ RI t ^ RIHtHt ^ RIHtHt ^ RIHtH	t	 ^ RI
Ht ^RIHt ] P                  P                  t]! ] P                   ] P"                  ] P$                  ] P&                  .4      t]! . ]P*                  N]P,                  N]P.                  N]P0                  N]P2                  N]P4                  N]P6                  N]P8                  N]P:                  N]P<                  N]P>                  N]P@                  N]PB                  N]PD                  N]PF                  N]PH                  N]PJ                  N]PL                  N]PN                  N]PP                  N]PR                  N]PT                  N]PV                  N]PX                  N]PZ                  N]P\                  N]P^                  N]P`                  N]Pb                  N]Pd                  N]Pf                  N4      t4]! ]Pj                  ]Pl                  ]Pn                  ]Pp                  ]Pr                  ]Pt                  ]Pv                  ]Px                  ]Pz                  .	4      t>]4]>,          t?RR R llt@RR	 R
 lltAR R ltBRR R lltCR# )é    N)Údatasheet_dram_bw_gbsÚdatasheet_tops)Úget_device_tflopsÚget_gpu_dram_gbps)Úoptimization_hintÚstatically_known_true)Ú
OrderedSet)Úflop_registryc                ód   € V ^8„  d   QhR\         \        ,          RRR\        R,          R\         /# )é   ÚflopsÚdtypeztorch.dtypeÚgpu_typeNÚreturn)ÚfloatÚintÚstr)Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/utils/_runtime_estimation.pyÚ__annotate__r   N   s4   € ÷ 2ñ 2Ü”3�;ð2Ø,ð2Ü8;¸d½
ð2ä
ñ2ó    c                ó.  € VeV   \         P                  P                  P                  P                  R8H  p\        WVR7      pVf   \        RV: RV 24      hM\        V4      pVR,          pV^ 8X  d   R# V ^,          pVRV,          ,          R,          # )	a>  Convert a FLOPs count to estimated nanoseconds on the GPU.

Uses 75% of theoretical peak and converts FLOPs to MACs (divide by 2).

If ``gpu_type`` names a device in the datasheet, its pinned datasheet
TFLOPS are used instead of querying the current device, making the
estimate deterministic and hardware-independent.
Útf32)Úis_tf32Údevice_nameú	gpu_type z has no datasheet entry for g   ¢”mBç        g      è?g    eÍÍA)ÚtorchÚbackendsÚcudaÚmatmulÚfp32_precisionr   Ú
ValueErrorr   )r   r   r   r   ÚtflopsÚpeak_gpu_flopsÚmacss   &&&    r   Úflops_to_nsr'   N   sœ   € ð ÒÜ—.‘.×%Ñ%×,Ñ,×;Ñ;¸vÑEˆÜ ÀHÔMˆØŠ>ÜØ˜H™<Ð'CÀEÀ7ÐKóð ð ô
 # 5Ó)ˆØ˜d•]€NØ˜ÔÙØ�1�9€DØ�D˜>Õ)Õ*¨cÕ1Ð1r   c                ó$   € V ^8„  d   QhR\         /# ©r   r   ©r   )r   s   "r   r   r   i   s   € ÷ !ñ !ä
ñ!r   c                óâ   € V \         9   dd   \        V4      ^8w  d   \        RV RV  24      hVP                  4       p\         V ,          p/ p	Ve   WYR&   V! V/ VBRV/BV	B p
\	        W§VR7      # R# )at  
Estimates the compute time of an aten operator.

Args:
    func_packet: The operator overload packet.
    args: The arguments to the operator.
    kwargs: The keyword arguments to the operator.
    out: The output of the operator.
    out_dtypes: The output data types.
    node_meta: Optional FX node meta dict. Passed through to the flop
        formula as ``_node_meta`` kwarg so formulas can read annotations
        like ``sparsity_hint``.
    gpu_type: Optional datasheet device name to pin the peak FLOPS to
        instead of querying the current device.

Returns:
    float: The estimated compute time in nanoseconds.
z"Only support single out dtype got z for Ú
_node_metaÚout_val)r   r   )r
   ÚlenÚAssertionErrorÚpopr'   )Úfunc_packetÚargsÚkwargsÚoutÚ
out_dtypesÚ	node_metar   r   Úflop_count_funcÚextra_kwargsÚ
flop_counts   &&&&&&&    r   Úget_compute_timer:   i   s‰   € ð* ”mÔ#Üˆz‹?˜aÔÜ Ø4°Z°LÀÀkÀ]ÐSóð ð —‘Ó ˆÜ'¨Õ4ˆØˆØÒ Ø)2˜Ñ&Ù$ dÐR¨fÑR¸cÑRÀ\ÑRˆ
Ü˜:°xÔ@Ð@Ùr   c                óD   € V ^8„  d   QhR\         P                  R\        /# )r   Útr   )r   ÚTensorr   )r   s   "r   r   r   �   s   € ÷ )ñ )”U—\‘\ð )¤cñ )r   c                óà   € ^p\        V P                  V P                  4       4       F/  w  r#\        V^ 8H  4      '       d   K  V\	        V^ R7      ,          pK1  	  WP                  4       ,          # )z¡
Calculates the memory consumption of a tensor.

Args:
    t (torch.Tensor): The input tensor.

Returns:
    int: The memory consumption of the tensor in bytes.
)Úfallback)ÚzipÚshapeÚstrider   r   Úelement_size)r<   Ú
real_numelÚsizerB   s   &   r   Úget_num_bytesrF   �   sY   € ð €JÜ˜AŸG™G Q§X¡X£ZÖ0‰ˆä$ V¨q¡[×1Ô1ØÔ+¨D¸1Ô=Õ=ŠJñ 1ð
 Ÿ™Ó(Õ(Ð(r   c                ó$   € V ^8„  d   QhR\         /# r)   r*   )r   s   "r   r   r       s   € ÷ ñ ÄUñ r   c                óÊ   € Ve!   \        V4      pVf   \        RV: R24      hM
\        4       p\        R V  4       4      p\        R V 4       4      pWE,           pWc,          pV# )a¥  
Estimates the memory transfer time of input and output tensors.

Args:
    flat_args_kwargs (List[torch.Tensor]): The flat list of arguments and keyword arguments.
    flat_outs (List[torch.Tensor]): The flat list of outputs.
    gpu_type: Optional datasheet device name to pin the DRAM bandwidth to
        instead of querying the current device.

Returns:
    float: The estimated memory transfer time in nanoseconds.
r   z not found in datasheetc              3   ó|   "  € T F2  p\        V\        P                  4      '       g   K%  \        V4      x € K4  	  R # 5i©N©Ú
isinstancer   r=   rF   ©Ú.0r<   s   & r   Ú	<genexpr>Ú$get_transfer_time.<locals>.<genexpr>³   s,   é € ð Ù"2˜Q´jÀÄEÇLÁL×6QÔŒ�a×ÐÓ"2ùó   ‚"<©<c              3   ó|   "  € T F2  p\        V\        P                  4      '       g   K%  \        V4      x € K4  	  R # 5irJ   rK   rM   s   & r   rO   rP   ¶   s+   é € ð Ù"+˜Q¬z¸!¼U¿\¹\×/JÔŒ�a×Ð£)ùrQ   )r   r#   r   Úsum)Úflat_args_kwargsÚ	flat_outsr   Úgpu_memory_bandwidthÚ
read_bytesÚwrite_bytesÚcounted_bytesÚtransfer_times   &&&     r   Úget_transfer_timer[       sˆ   € ð ÒÜ4°XÓ>ÐØÒ'Ü˜y¨©Ð4KÐLÓMÐMð (ô  1Ó2ÐÜñ Ù"2óó €Jô ñ Ù"+óó €Kð Õ,€Mà!Õ8€MØÐr   rJ   )NN)Dr   Ú$torch._inductor.analysis.device_infor   r   Útorch._inductor.utilsr   r   Ú%torch.fx.experimental.symbolic_shapesr   r   Útorch.utils._ordered_setr	   Úflop_counterr
   ÚopsÚatenÚfloat16Úbfloat16Úfloat32Úfloat64Ú_FLOAT_TYPESÚ
lift_freshr<   Ú	transposeÚviewÚdetachÚ_unsafe_viewÚsplitÚadjointÚ
as_stridedÚdiagonalÚexpandÚ	expand_asÚmovedimÚpermuteÚselectÚsqueezeÚmTÚmHÚrealÚimagÚview_asÚ	unflattenÚunfoldÚunbindÚ	unsqueezeÚvsplitÚhsplitÚsplit_with_sizesÚswapaxesÚswapdimsÚchunkÚ	_VIEW_OPSÚrandintÚrandnÚrandÚ
randn_likeÚ	rand_likeÚrandint_likeÚarangeÚ	ones_likeÚ
zeros_likeÚ_CREATE_OPSÚ_IGNORE_OPSr'   r:   rF   r[   © r   r   Ú<module>r“      s‘  ðÛ ß Vß F÷õ 0å 'ð ‡y�y‡~�~€áà�‰Ø�‰Ø�‰Ø�‰ð	ó€ñ ð Ø�‰ð à�‰ð ð 	�‰ð ð 	�	‰	ð	 ð
 	�‰ð ð 	×Ñð ð 	�
‰
ð ð 	�‰ð ð 	�‰ð ð 	�‰ð ð 	�‰ð ð 	�‰ð ð 	�‰ð ð 	�‰ð ð 	�‰ð ð  	�‰ð! ð" 	�‰ð# ð$ 	�‰ð% ð& 	�	‰	ð' ð( 	�	‰	ð) ð* 	�‰ð+ ð, 	�‰ð- ð. 	�‰ð/ ð0 	�‰ð1 ð2 	�‰ð3 ð4 	�‰ð5 ð6 	�‰ð7 ð8 	×Ñð9 ð: 	�‰ð; ð< 	�‰ð= ð> 	�
‰
ð? ó"€	ñH à�‰Ø�
‰
Ø�	‰	Ø�‰Ø�‰Ø×ÑØ�‰Ø�‰Ø�‰ð
ó€ð ˜+Õ%€÷2÷6!õH)÷&ñ r   