o
    0hZ
                     @   s<   d Z ddlZddlm  mZ dd Zedkre  dS dS )zCExample of the Timer and Fuzzer APIs:

$ python -m examples.fuzzer
    Nc                  C   s*  t jdd tdD t jdddddgd	d d
D gdd} d}g }t| j|dD ]\}\}}}|d t|d d }}|d t|d d }	}
dtdd |j	D }d|
 dd|dd| rldn|dd|	 rwdn|
ddg}t jd||d}||jdd d|
 i|d  _td!|d"  d#| dd$ tj  q+t  td%d&d&| j  d' d(d) }|j|d* d+d, d-d. d/d0 }t|d1 |d d2 D ]}t||d3 d4d5|j  qtd6|d7  |d8d  D ]}t||d3 d4d5|j  q d S )9Nc                 S   s$   g | ]}t jd | ddddqS )k   i @  
loguniform)nameminvalmaxvaldistribution)benchmark_utilsFuzzedParameter.0i r   Y/var/www/vscode/kcb/lib/python3.10/site-packages/torch/utils/benchmark/examples/fuzzer.py
<listcomp>   s    zmain.<locals>.<listcomp>   dg333333?g?)   r   )r   r   c              
   S   s"   g | ]}t j|d dddddqS ))k0k1k2r   g      ?i   i   )r   sizedim_parameterprobability_contiguousmin_elementsmax_elements)r	   FuzzedTensor)r   r   r   r   r   r      s    )xyr   )
parameterstensorsseed   )nr   orderr   z, c                 s   s    | ]}|d V  qdS )z>4Nr   r   r   r   r   	<genexpr>0   s    zmain.<locals>.<genexpr> z>7z | z<16
contiguousz<12zx + y)stmtglobalsdescriptiong?)min_run_timenumel   z / )endz#Average attempts per valid config: g      ?z.1fc                 S   s   | j | jd  S )Nr,   )medianmetadata)mr   r   r   time_fnG   s   zmain.<locals>.time_fn)keyz{:>6}z                   zSize    Shapez             zX order        Y order
zP--------------------------------------------------------------------------------zBest:   g    eAz>4.1fz ns / element     
zWorst:i)r	   Fuzzerranger
   	enumeratetakestrjointupleshaper,   is_contiguousTimerappendblocked_autoranger2   printsysstdoutflushrejection_ratesortformatr*   )
add_fuzzerr#   measurementsr   r    tensor_properties_r   x_orderr   y_orderr?   r*   timerr4   templater3   r   r   r   main   s^    "rS   __main__)__doc__rE   torch.utils.benchmarkutils	benchmarkr	   rS   __name__r   r   r   r   <module>   s   I
