U
    <c                     @   s   d dl Z d dlZd dlmZ d dlmZmZmZ dgZdZ	dZ
dd Zg Zee
d	D ]NZee
e d
D ]:Zee Zee
e dD ]Zee Zee	kree qqfqTe  G dd dejZdS )    N)	benchmark)FuzzedParameterFuzzedTensorParameterAliasSpectralOpFuzzer   i @  c                    s&    fddt tt|  d D S )Nc                 3   s   | ]} | V  qd S )N .0ibaser   M/tmp/pip-unpacked-wheel-gikjz4vx/torch/utils/benchmark/op_fuzzers/spectral.py	<genexpr>   s     zpower_range.<locals>.<genexpr>   )rangeintmathlog)Zupper_boundr   r   r   r   power_range   s    r            c                       s2   e Zd Zejdddeeed fddZ  Z	S )r   F      ?)dtypecudaprobability_regular)seedr   r   c                   s   t  jtddddddddd td	D d
d td	D  fddtd	D dd td	D gtdddddddd||d
g|d d S )Nndimg333333?g?)r   r   r   T)distributionstrictc                 S   s"   g | ]}t d | ttddqS )k_any_Z
loguniform)nameminvalmaxvalr   )r   MIN_DIM_SIZEMAX_DIM_SIZEr	   r   r   r   
<listcomp>-   s   z-SpectralOpFuzzer.__init__.<locals>.<listcomp>r   c                 S   s(   g | ] }t d | dd tD dqS )
k_regular_c                 S   s   i | ]}|d t t qS )r   )lenREGULAR_SIZES)r
   sizer   r   r   
<dictcomp>8   s      z8SpectralOpFuzzer.__init__.<locals>.<listcomp>.<dictcomp>r"   r   )r   r*   r	   r   r   r   r'   5   s
   c              	      s@   g | ]8}t d | td|  td| d  iddqS )kr(   r!   r   T)r"   r   r    )r   r   r	   r   r   r   r'   ;   s     c              
   S   s*   g | ]"}t d | dddddddqS )Zstep_g?gQ?g{Gz?)r   r         r   r-   )r   r	   r   r   r   r'   G   s
   x)Zk0Zk1Zk2)Zstep_0Zstep_1Zstep_2g      ?i   i   l        )
r"   r+   ZstepsZprobability_contiguousZmin_elementsZmax_elementsZmax_allocation_bytesZdim_parameterr   r   )
parametersZtensorsr   )super__init__r   r   r   )selfr   r   r   r   	__class__r/   r   r5      s<    

.zSpectralOpFuzzer.__init__)
__name__
__module____qualname__torchZfloat64r   boolfloatr5   __classcell__r   r   r7   r   r      s     )r   r<   Ztorch.utilsr   Ztorch.utils.benchmarkr   r   r   __all__r%   r&   r   r*   r   jZijr.   ZijkappendsortZFuzzerr   r   r   r   r   <module>   s"   