
    h                         S SK r S SKrS SKrS SKrS SKr\R
                  " SS5      r      SS jrSqS r	S r
S rS rS rSS	 jrS
 rS rg)    NTORCHAO_AUTOTUNER_DATA_PATHc           	      .   US;   d   eSS K n U " 5         UR                  R                  5         U(       a&  UR                  " [	        S5      UR                  SS9nO%UR                  " [	        S5      UR
                  SS9nUR                  R                  SS9n	UR                  R                  SS9n
U	R                  5         [        S	5       H  nUR                  5         U " 5         M     U
R                  5         UR                  R                  5         U	R                  U
5      S	-  n[        S
[	        X-  5      5      n[        S
[	        X,-  5      5      n[        U5       Vs/ s H  oR                  R                  SS9PM     n	n[        U5       Vs/ s H  oR                  R                  SS9PM     n
n[        U5       H
  nU " 5         M     [        U5       HQ  nUb  U H
  nS Ul        M     UR                  5         X   R                  5         U " 5         X   R                  5         MS     UR                  R                  5         UR                  " [        X5       VVs/ s H  u  nnUR                  U5      PM     snnUR                  S9nUbO  UR                   " UUR                  " XGR                  S95      R#                  5       n[%        U5      S
:X  a  US   nU$ ['        Xv5      " U5      R)                  5       $ s  snf s  snf s  snnf )N)minmaxmeanmedianr       Acudadtypedeviceg    ATenable_timing      )r   )torchr
   synchronizeemptyintint8Eventrecordrangezero_elapsed_timer   gradtensorzipfloatquantiletolistlengetattritem)fnwarmuprepgrad_to_none	quantiles
fast_flushreturn_moder   cachestart_event	end_event_estimate_msn_warmupn_repeatixsetimesrets                        R/home/james-whalen/.local/lib/python3.13/site-packages/torchao/kernel/autotuner.pydo_bench_tritonr:      s    ::::$ D	JJ
 C
O599VLCJejjH **"""6K

  t 4I1X
  	JJ**959K 1c&./0H1c#+,-HAFxQA::##$#7KQ?DXO!!!!5IO8_
  8_ #! " 	
  
JJLL'*;'BC'Btq!	'BC5;;E nnUELL++$NOVVXs8q=a&C
5&u-2244; RO* 	Ds   %"L"L'L
c                    [         R                  R                  5       n[        c"  [        R
                  R                  5       S-  nO[        R
                  " [        5      n[        R                  " SU SU 35        [        US5       nSS K
n[        R                  " SU 35        UR                  X5        S S S 5        g ! , (       d  f       g = f)Nzdata.pklzTrying to store configs for z locally under wbr   zSaving best configs to file )r   r
   get_device_nameAUTOTUNER_DATA_PATHpathlibPathcwdlogginginfoopenpickledump)best_configsdevice_namesaved_configsfrE   s        r9   _save_best_configsrK   j   s    **,,.K"((*Z7%89LL
&{m?=/R 
mT	"a3M?CDL$	 
#	"	"s   
/C
Cc                  <   [         R                  R                  5       n SS Kn[        cS  UR
                  R                  S5      nUS-  S-  S-  nU R                  S5      (       d  [        R                  " S5        O[        R                  " [        5      n[        R                  " SU  S	U 35        UR                  5       (       aD  SS Kn[        US
5       n[        R                  " SU 35        UR                  U5      sS S S 5        $ g ! , (       d  f       g = f)Nr   torchaokernelconfigszdata_a100.pklzNVIDIA A100z6Warning! Loaded configurations are optimized for A100!zTrying to load configs for z from rbzLoading best configs from file )r   r
   r=   	importlibr>   	resourcesfiles
startswithrB   rC   r?   r@   is_filerE   rD   load)rH   rQ   rI   rE   rJ   s        r9   _load_best_configsrW   z   s    **,,.K"!++11)<%09<N%%m44LLQR%89LL.{m6-QR-&!LL:=/JK;;q> '&  '&s   *D
Dc                     [         R                  " U 5      (       a+  U R                  U R                  5       U R	                  5       4$ U 4$ N)r   	is_tensorr   sizestride)as    r9   get_arg_keyr^      s5    q188:..4K    c                 :    [        [        S U  5       5      S5      $ )Nc              3   8   #    U  H  n[        U5      v   M     g 7frY   )r^   ).0r]   s     r9   	<genexpr>get_args_key.<locals>.<genexpr>   s     2T[^^Ts    )sumtuple)argss    r9   get_args_keyri      s    u2T22B77r_   c                    U " 5         [         R                  R                  5         [         R                  " [	        S5      [         R                  SS9nUR                  5         [         R                  R                  SS9n[         R                  R                  SS9nUR                  5         [        U5       H
  nU " 5         M     UR                  5         [         R                  R                  5         UR                  U5      U-  nU$ )Nr	   r
   r   Tr   )
r   r
   r   r   r   r   r   r   r   r   )r%   r'   r,   r-   r.   r/   r0   s          r9   do_bench_basicrk      s    D	JJKKJuyyHE	KKM**"""6K

  t 4I3Z
 	JJ**95;Kr_   c                 $  ^ ^^ UUU 4S jn [        US5      nUb  Ub  XSS-  :  a  [        S5      $ [        US5      nUb  XSS-  :  a  [        S5      $ [        U5      $ ! [         a    S n NT[        R                  R                   a    S n Nuf = f)Nc                     > T" T T/-   6 $ rY   re   )rh   configr%   s   r9   
wrapped_fndo_bench.<locals>.wrapped_fn   s    DF8O%%r_   r   d   infr   
   )rk   RuntimeErrortritonruntimeOutOfResourcesr   r:   )r%   rh   rn   	best_timero   times   ```   r9   do_benchrz      s    &j!,
 |	-$S2HU| *a(DB!6U| :&&  >>(( s   A B-BBc                 0    U [         ;   a  [         U    S   $ g )Nr   )BEST_CONFIGS)keys    r9   get_best_config_by_keyr~      s    
lC ## r_   c           
         [         c
  [        5       q [         c  0 q [        U5      S:X  a  g [        U5      n[	        U5      nUb  U$ [
        R                  " SU S35        US   n[        XUS   5      n[
        R                  " SR                  [        [        X5U/5      5      5        SnUSS   H`  n[        XXu5      n[
        R                  " SR                  US S[        U5      S 3US [        U5      /5      5        X:  a  UnUnUS-  nMb     XE4[         U'   [
        R                  " S	5        [
        R                  " SR                  [        [        XT/5      5      5        [        [         5        U$ )
Nr   z2Starting autotune search. No config found for key . r   4d/z6.3fz-- perfetto --)r|   rW   r"   ri   r~   rB   rC   rz   joinmapstrrK   )	r%   rh   rO   r}   best_configrx   r3   rn   ry   s	            r9   get_best_config_fnr      s`   )+ 
7|q
t
C(-KLLEcU!LM !*K71:.ILL#cCK#@ABC	A !"+&4HH2aGR01d4[3v;OP	
 I K	Q  %0LLL!"LL#cI#;<=>|$r_   )   rq   NNTr   rY   )rB   osr?   r   ru   getenvr>   r:   r|   rK   rW   r^   ri   rk   rz   r~   r   re   r_   r9   <module>r      sr     	   ii =tD 
 T5n % "(8$'4$
)r_   