o
    پi)                     @   s>   d dl Z d dlmZ de jde jfddZdd Zd	d
 ZdS )    N)Iterablexyc                 C   sB   |   |  } }| |  ||   }d| |   | }d| S )N      )doublesum)r   r   denominatorsim r   M/home/ubuntu/.local/lib/python3.10/site-packages/deep_gemm/testing/numeric.py	calc_diff   s   r   c                  G   sJ   d}| D ]}t |ttfr|t| 7 }q|d ur"|| |  7 }q|S )Nr   )
isinstancetuplelistcount_bytesnumelelement_size)tensorstotaltr   r   r   r      s   r   c              	   C   s   dd }|| }t | D ]K}|| }	|| }
|| | }||	|}t |
|D ]0}||
| k rD|| |ksCJ d|d|| d|q&|| dksVJ d|d|| q&qd S )Nc                 S   s   | | d | S )Nr   r   )abr   r   r   <lambda>   s    zcheck_signal.<locals>.<lambda>zi=z, signal[i]=z, threshold=r   )range)num_local_expertmax_mblock_m	thresholdsignalmasked_mceil_div
expert_lenexpertmaskstartend	valid_lenir   r   r   check_signal   s   
,&r)   )torchtypingr   Tensorr   r   r)   r   r   r   r   <module>   s
    	