
    .`i^                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	 d Z
ddZ G d de j                  Zd	 Zd
 ZdS )    N)MAX_FINITE_FLOAT8E4B8MAX_FINITE_FLOAT8E4NVMAX_FINITE_FLOAT8E5c                     t          | t          j                  rt          j        | |k              sJ d S | |k    sJ d S N)
isinstancetorchTensorall)reftris     {/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/third_party/triton_kernels/testing.pyassert_equalr   
   sG    #u|$$ y$$$$$$$czzzzzz    --Tc                    |j         j        dk    rH|                     |j                   }| j         |j         k    rt          j        ||k              sJ d S |} |                                 dk    rd S |d}|d}	 |                     t          j                                                  } |                    t          j                                                  }| j        |j        k    sJ d| j        d|j                    t          j	        |           }t          j	        |          }t          j
        ||          s
J d            t          j        |d|           }	t          j        |d|          }
d}d	t          j        t          j        |	                    |z   z  }|	|z  }	|
|z  }
t          j        t          j        |	                                                    |z   }t          j        |	|
z
            t          j        |t          j        |	                    z  }t          j        |                                          }t          j        t          j        |                                                                                    }|r0t'          |d
|d|d           t'          |d|d|d           ||k    rt          j        ||k              }|                    d          }|d d         }t'          d||                                t-          |j                  |                                fz             |                    d          }t'          d| t-          |                                                              t'          d|t-          |                                                              ||k    sJ ||k    sJ d S )N   r   g{Gz?gMbp?z&Tensors must have same size ref.shape=z tri.shape=z'Tensor must have same infinite elementsgKH9g      ?z maximum relative error = z (threshold = )z RMS relative error = i  z5%d / %d mismatched elements (shape = %s) at coords %szref values: ztri values: )dtypeitemsizetor	   r   numelfloat32detachshapeisinfequalwheremaxabssqrtsquaremeanmaximumitemprintnonzerosizetupletolistunbindcpu)r   r   maxtolrmstoldescriptionverboseref_as_typeinf_mask_refinf_mask_trirefntrineps
multiplierref_rmsrel_errmax_errrms_errbad_idxsnum_nonzeros                      r   assert_closer?      s   
yQffSY''9	!!9[C/00000F
yy{{a~~
 &&


&
&
(
(C
&&


&
&
(
(C9	!!!#[#)#[#[sy#[#[!!! ;s##L;s##L;|\22]]4]]]2;|Q,,D;|Q,,D C	%)D//22S89JJDJDjd++002233c9Git$$u}Weioo'N'NNGi  %%''Gjg..335566;;==G ^;;;PWPWPWY_Y_Y_`aaa{{{GGGU[U[U[\]]]=6!122mmA&&ETE?EGMMOOU7=-A-A8??CTCTUV 	W 	W 	W ??2&&nc%//26688999nc%//26688999ffr   c                       e Zd ZdZdZdZdZdS )ComputeSanitizerToolmemcheck	racecheck	synccheck	initcheckN)__name__
__module____qualname__MEMCHECK	RACECHECK	SYNCCHECK	INITCHECK r   r   rA   rA   O   s"        HIIIIIr   rA   c                        fd}|S )a  
    Decorator to run a test with compute sanitizer enabled and pytorch caching allocator disabled,
    to expose potential memory access errors.
    This decorator requires the `request` fixture to be present.
    If `run_sanitizer` argument is present and set to False, the sanitizer is not run.
    Running tests under compute sanitizer requires launching subprocess and is slow,
    so use sparingly
    c                 J     t          j                    fd            }|S )Nc            
         t           j                            d          dk    r
 | i | d S dd l}                    dd          rt
          j                                                             dt          j	        g          }t          |t                    sJ d|            t          d |D                       sJ d	d
 |D                         |                    t          j                                                              }                                |                                k    }d|v r||d         z  }|r+d|vr&|D ] }t           j                            j        d                   }t           j        d         dddd}dt           j        v rt           j        d         |d<   d|v s
J d            |d         j        j        j        }	| dj         d|	 d}
dddd|j         t2          j        ddd|
g	}
dD ]%}|t2          j        v r|
                    |           &t;          j        |
t:          j        t:          j         |          }dtC          |j"                  v pdtC          |j"                  v }|j"        }tG          |          tH          u r|%                                }d}|stM          d            d!}n3|j'        dk    r(tM          d"           tM          d#|j'                   d!}|rktM          d$           tM          d%           tM          d$           tM          |           tM          d$           tM          d&           tM          d$           J "d S  | i | d S )'NSKIP_COMPUTE_SANITIZER1r   clear_torch_cacheFtools_to_checkztools_to_check=c              3   (   K   | ]}|t           v V  d S r   rA   .0tools     r   	<genexpr>zHcompute_sanitizer.<locals>.decorator.<locals>.wrapper.<locals>.<genexpr>p   s(      OOt33OOOOOOr   zF(tool for tool in tools_to_check if tool not in ComputeSanitizerTool)=c              3   ,   K   | ]}|t           v|V  d S r   rV   rW   s     r   rZ   zHcompute_sanitizer.<locals>.decorator.<locals>.wrapper.<locals>.<genexpr>q   s-      XXTtCW7W7WD7W7W7W7WXXr   run_sanitizerzcompute-sanitizer__file__PATH)r^   PYTORCH_NO_CUDA_MEMORY_CACHINGTORCH_SHOW_CPP_STACKTRACESCUDA_LAUNCH_BLOCKINGCUDA_VISIBLE_DEVICESrequest_fixturez@memcheck'ed test must have a (possibly unused) `request` fixturez::[]z#--target-processes=application-onlyz!--destroy-on-device-error=contextz--tool=z-mpytestz-vsx)z--update_checksumz--ignore_checksum_error)stdoutstderrenvzERROR SUMMARY: 0 errorsz&RACECHECK SUMMARY: 0 hazards displayedz#compute-sanitizer returned an errorTz_The test failed due to some other reason: consider running without compute-sanitizer to verify.zout.returncode=z5*****************************************************z5******************** TEST OUTPUT ********************z5****************** TEST OUTPUT END ******************)(osenvirongetpsutilpopr	   cudaempty_cacherA   rI   r   listr   Processgetppidexeitemspathrealpath__globals__nodecallspecidrF   valuesys
executableargvappend
subprocessrunPIPESTDOUTstrrg   typebytesdecoder'   
returncode)argskwargsrm   rT   	ppid_namerun_compute_sanitizerrY   rv   ri   test_idcmdoptoutsanitizer_oktest_outputfailtarget_kwargstest_fns                   r   wrapperz5compute_sanitizer.<locals>.decorator.<locals>.wrapperb   s&   z~~6773>>((((MMM  !4e<< ) 
&&(((*../?BVB_A`aaNnd33II5I5I5III3OOOOOOO ] ][XX^XXX[[] ]O rz||4488::I$1$7$7$9$9V\\^^$K!&((%)@@%$ ?))<I)M)M* <$ <$D7++G,?
,KLLD !#
6 2:=6903	 C .;;68jAW6X23,666Z 766$%67<EHG!BBW%5BBBBBC+=;.$*.. 
C  P , ,#(??JJsOOO$.))0	  C $=
A$ A$ $$ $c'OSVWZWaSbSb'b !"%*KK((E11&1&8&8&:&: D' $CDDD#1,,}   222333# $UVVVUVVVUVVVk***UVVVUVVVUVVV#t$i<$ <$| ((((((r   )	functoolswraps)r   r   r   s   ` r   	decoratorz$compute_sanitizer.<locals>.decorator`   sE    		!	!S	) S	) S	) S	) S	) 
"	!S	)j r   rM   )r   r   s   ` r   compute_sanitizerr   V   s*    X X X X Xt r   c                     t           j        t          t           j        t          t           j        t          i|         }|                                                                 |z  S r   )	r	   float8_e5m2r   float8_e4m3fnr   float8_e4m3fnuzr   r!   r    )xr   
max_finites      r   compute_actual_scaler      sK    .24 	J
 5577;;==:%%r   )NNr   T)enumr   rj   r   r}   r	   triton_kernels.numericsr   r   r   r   r?   EnumrA   r   r   rM   r   r   <module>r      s         				     



  e e e e e e e e e e  ; ; ; ;|    49   d d dN& & & & &r   