U
    •Ê¹j?
  ã                   @   s8   d Z ddlZddlm  mZ dd„ Zedkr4eƒ  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�| ¡ rÚdn|d›d�|	 ¡ rðdn|
d›d�g¡}t jd||d�}| |jdd�¡ d| 
¡ i|d  _td!|d" › d#|› �dd$� tj ¡  qVtƒ  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› �ƒ �qÀt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 @  Z
loguniform)ÚnameÚminvalÚmaxvalÚdistribution)Úbenchmark_utilsÚFuzzedParameter©Ú.0Úi© r   úd/var/www/html/bwave/python/venv/lib/python3.8/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 ))Zk0Zk1Zk2r   g      è?i   i   )r   ÚsizeZdim_parameterZprobability_contiguousZmin_elementsZmax_elements)r   Z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>/   s     zmain.<locals>.<genexpr>Ú z>7z | z<16Ú
contiguousz<12zx + y)ÚstmtÚglobalsÚdescriptiongš™™™™™¹?)Zmin_run_timeÚnumeléÿÿÿÿúé   z / )Úendz#Average attempts per valid config: g      ð?z.1fc                 S   s   | j | jd  S )Nr"   )ZmedianÚmetadata)Úmr   r   r   Útime_fnF   s    zmain.<locals>.time_fn)Úkeyz{:>6}z                   zSize    Shapez             zX order        Y order
zP--------------------------------------------------------------------------------zBest:é   g    eÍÍAz>4.1fz ns / element     Ú
zWorst:iñÿÿÿ)r   ZFuzzerÚranger	   Ú	enumerateZtakeÚstrÚjoinÚtupleÚshaper"   Zis_contiguousÚTimerÚappendZblocked_autoranger'   ÚprintÚsysÚstdoutÚflushZrejection_rateÚsortÚformatr!   )Z
add_fuzzerr   Úmeasurementsr   r   Ztensor_propertiesÚ_r   Zx_orderr   Zy_orderr2   r!   Ztimerr)   Útemplater(   r   r   r   Úmain   s\    úþ÷øÿå ýý"r>   Ú__main__)Ú__doc__r6   Ztorch.utils.benchmarkÚutilsZ	benchmarkr   r>   Ú__name__r   r   r   r   Ú<module>   s
   I