
    `i                         d Z ddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
Z
dZd Zd Zd	 Zed
k    r e             dS dS )zfExample use of Timer and op fuzzers to measure kernel performance.

$ python -m examples.op_benchmark
    N)Timer)BinaryOpFuzzer)UnaryOpFuzzerg      ?c                     t          |                                           t          |                                           k    sJ t          fd|                                 D                       sJ dS )zBuiltin dict comparison will not compare numpy arrays.
    e.g.
        x = {"a": np.ones((2, 1))}
        x == x  # Raises ValueError
    c              3   f   K   | ]+\  }}|d k    t          j        ||         k              V  ,dS )dtypeN)npall).0kvdict_1s      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/utils/benchmark/examples/op_benchmark.py	<genexpr>z%assert_dicts_equal.<locals>.<genexpr>   s=      QQ$!QALLrva6!9n%%LLLLQQ    N)setkeysr
   items)dict_0r   s    `r   assert_dicts_equalr      sm     v{{}}V[[]]!3!33333QQQQ&,,..QQQQQQQQQQr   c                   $  |dt           j                                      |           } |dt           j                                      |           }g }t	          t          ||                    D ]s\  }\  }}|\  }	}
}|\  }}}t          ||           t          |
d         |d                    fd|	|fD             \  }}g }|	D ]}dd                    d |	|         j        D                       z   dz   }|
|         d	         }t          |t          j        t          |                    k              rd
nt          t          |                    }|
|         d         }t          |          t          |          k    rt          |          nd
}|                    ||||f           |                    |||f           t#          d|dz    d|  d
           ut#                       g ddddf\  }}}}}|D ]\  }}}|j        dz  }|j        dz  }t'          ||z
            ||z   z  dz  }|                    ||||f           |D ]{\  }} }}t)          |t          |                    }t)          |t          |                     }t)          |t          |                    }t)          |t          |                    }||                    t-          j        d                     t#          d            t#          dd
dd|z   dd
           t#          d                    |           d
dd	                    |           d
           t#          dd            |d d         df|dd          d
ffD ]\  }!}"|!D ]\  }}}}|dz  dd ||k     rd!nd"d#g$$                    $fd$|d d%         D                        t          $|          D ]o\  }#\  }} }}| d&                    |dz             }|                     |dz             } |                    |          }t#          |# d| d'|  d(| d)| 	           pt#          |"           d S )*Nr   )seedr   xc              3   l   K   | ].}t          |                               t                    V  /dS ))globals)min_run_timeN)r   blocked_autorange_MEASURE_TIME)r   tensorsstmts     r   r   zrun.<locals>.<genexpr>*   sa       .
 .

 	     ];;	.
 .
 .
 .
 .
 .
r   (z, c                     g | ]c}d t          t          j        |                    z  |k    r*|dk    r$dt          t          j        |                     nt          |          dS )      z2 ** )intr	   log2str)r   is     r   
<listcomp>zrun.<locals>.<listcomp>4   st     ) ) )  BGAJJ'1,,Q *BGAJJ)))VV) ) )r   )order stepsr$   z / )endg    .Ar#   )keyzstmt: z diff    fasterz>17 shapez>16z          steps
zd----------------------------------------------------------------------------------------------------
   z...id   z>4.1fz%    r%   floatz<20c                 `    g | ]*}d                      t          d                             +S )r,   r   )ljustlen)r   _time_strs     r   r)   zrun.<locals>.<listcomp>Y   s1    SSSARXXc(1+&6&677SSSr   :z  z|     z
      |   )torchfloat32takeint32	enumeratezipr   joinr2   r
   r	   aranger8   r'   tuplesumappendprintmedianabsmaxsortoperator
itemgetterr7   extend)%nr    
fuzzer_cls
float_iterint_iterraw_resultsr(   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_strr-   	steps_strparsed_resultsname_len	shape_len	order_len	steps_lent_floatt_intrel_diffr2   resultsspacert_strr:   s%    `                                  @r   runro      sj   %-888==a@@Jzq44499!<<HK)23z83L3L)M)M  *  *%%L*;G8*L5?2&
 	<444.s35Fs5KLLL.
 .
 .
 .

 *;7.
 .
 .
*? ! 	I 	IDdii ) ) 't,2	) ) )   
 I (-g6E"5BIc%jj,A,A#ABBYERWLLHYHYI'-g6E&)%jj3u::&=&=E


2Iy)Y GHHHH-MNNN 1q5  Q  b)))))	GGG@BAq!Q=NHiI<G 	3 	38?L#*S0&,w''7U?;a?wxFGGG)5 	3 	3%D%8SYY//HIs5zz22IIs5zz22IIs5zz22II		3 H/22333	/4//	
5B
5
5C(N
5
5
52>>>>	W]]9%%
Ir
I
Iw}}Y/G/G
I
IrRRRR	
)i
)
)***+CRC0%8>#$$;OQS:TU 	 	6= 	P 	P2GUHl#c>aaauweeT[aaabHOOSSSScrcARSSSTTT69(L6Q6Q P P22eUEzzz''155IN33I..NNNNNNeNNuNNOOOO	P
 	f	 	r   c                      t          ddt                     t          ddt                     t          ddt                     d S )Nr4   ztorch.median(x, dim=0))rP   r    rQ   ztorch.square(x)zx + y)ro   r   r    r   r   mainrr   b   sI    #,GGGG#%-@@@@#G777777r   __main__)__doc__numpyr	   r=   torch.utils.benchmarkr   'torch.utils.benchmark.op_fuzzers.binaryr   &torch.utils.benchmark.op_fuzzers.unaryr   rM   r   r   ro   rr   __name__rq   r   r   <module>rz      s    
      ' ' ' ' ' ' B B B B B B @ @ @ @ @ @  R R RB B BJ8 8 8 zDFFFFF r   