
    Iri:                     N   d dl mZmZmZmZ d dlZd dlmZ d dlm	Z
 d dlmZ d dlmZ d dlmZ d dlm	Z d dlmZ d d	lmZmZ d d
lmZ ddlmZ ddlmZ ddlmZ dZ G d d          Z  G d d          Z!dee"ej#        f         dej#        fdZ$de"fdZ% G d de          Z&dS )    )DictOptionalUnionAnyN)ir)proton)amd)nvidia)passes)LazyDict)set_profile_allocatorNullAllocator)backends   )Hook   )flags)modec                   4    e Zd Zd Zdededee         fdZdS )CudaAllocatorc                     || _         d S N)instrumentation_hook)selfr   s     }/var/www/html/bestrading.cuttalo.com/models/btc_v9/venv/lib/python3.11/site-packages/triton/profiler/hooks/instrumentation.py__init__zCudaAllocator.__init__   s    $8!!!    size	alignmentstreamc                    || j         j        k    rt          d| d| j         j                   ||z   dz
  |z  |z  }t          || j         j                  }dd l}|                    |f|j        d          }|| j         _        |S )NzAlignment mismatch: z != r   r   cudadtypedevice)	r   profile_buffer_alignmentRuntimeErrormaxprofile_buffer_sizetorchemptyuint8buffer)r   r   r   r    aligned_sizer*   r-   s          r   __call__zCudaAllocator.__call__   s    1JJJjyjjd6O6hjjl l ly(1,:YF
 <)B)VWW 	l-U[PP+1!(r   N)__name__
__module____qualname__r   intr   r/    r   r   r   r      sP        9 9 9S S (3-      r   r   c                   H    e Zd Zdeeef         fdZdefdZdefdZd Z	dS )Instrumentationir_mapc                     || _         d S r   )manager)r   r7   s     r   r   zInstrumentation.__init__/   s    r   r   c                 P    || j         v rt          d|           || j         |<   d S )NzIR already registered: )r9   r'   )r   r   funcs      r   registerzInstrumentation.register2   s8    ===>>>Rr   c                 r    |                      |           || j        v r | j        |         |           d S d S r   )load_dialectsr9   )r   r   pmcontexts       r   patchzInstrumentation.patch7   sH    7###DLR      r   c                 .    t          j        |           d S r   )triton_protonr>   )r   ctxs     r   r>   zInstrumentation.load_dialects<   s    #C(((((r   N)
r0   r1   r2   r   strr   r   r<   rA   r>   r4   r   r   r6   r6   -   s|        tCH~     3        
! ! ! ! !
) ) ) ) )r   r6   mode_objreturnc                   
 t          | t          j                  r| S | sd} |                     d          }|d         }i }|dd          D ]7}d|v r|                    dd          \  }}|||<   %t	          d| d          |                    dd	          |                    d
d          |                    dd          t          |                    dd                    |                    dd          |                    dd          |                    dd          |                    dd          d

fd} |dt          j                  
d<    |d
t          j                  
d
<    |dt          j	                  
d<    |dt          j
                  
d<    |dt          j                  
d<   t          
d                   dk    r%d 
d                             d          D             ng }|D ]"}	|	t          j        vrt	          d|	           #d |D             
d<   |dk    rt          j        di 
S |dk    rt          j        di 
S t	          d|            ) Ndefault:r   r   =z#Malformed instrumentation option: ''metric_typecyclebuffer_typesharedbuffer_strategycircularbuffer_size0granularitywarpsampling_strategynonesampling_options optimizations)rM   rO   rQ   rS   rU   rW   rY   r[   c                 b    |          }|r||vrt          d|  d|           |r||         n|S )NzUnknown z: )
ValueError)opt_namemappingvalueoptionss      r   get_option_valuez)_interpret_mode.<locals>.get_option_valueY   sQ    ! 	=U'));;;E;;<<<!&1wu~~E1r   c                 6    g | ]}|                                 S r4   )strip.0r`   s     r   
<listcomp>z#_interpret_mode.<locals>.<listcomp>f   s6     A A A {{}} A A Ar   ,zUnknown optimization: c                 2    g | ]}t           j        |         S r4   )r   r[   re   s     r   rg   z#_interpret_mode.<locals>.<listcomp>k   s     NNNe 25 9NNNr   mmazUnknown mode: r4   )
isinstancer   InstrumentationModesplitr]   getr3   metric_typesbuffer_typesbuffer_strategiesgranularitiessampling_strategieslenr[   DefaultMMA)rF   parts	mode_nameoptsoptkeyvalrb   valuesr`   ra   s             @r   _interpret_moder~   @   s   (D455  NN3EaIDQRRy K K#::yya((HCDIII3IIIJJJ xxw77Q^`hHiHi88$5zBBSVW[W_W_`morWsWsStStxxv66TXXVikqMrMr HH%7<<txxXgikOlOl	 G2 2 2 2 2 .-mT=NOOGM--mT=NOOGM!1!12CTE[!\!\G--mT=OPPGM#3#34GIa#b#bG  EHP_H`DaDadeDeDeA A#O4::3??A A A Akm  ? ?***=e==>>> +NNvNNNGO I|&&g&&&	e		x""'"""4(44555r   c                      t           j        j        j                                        j        } | dk    rdS | dk    rdS t          d|            )Nr"   r
   hipr	   zUnsupported backend: )tritonruntimedriveractiveget_current_targetbackendr'   )r   s    r   _get_backend_namer   v   sU    n#*==??GG&x	E		u<7<<===r   c                      e Zd ZU dZeed<   dZeed<   dZeed<   dZ	e
e         ed<   dZeed	<   d
Zeed<   dedeej        f         fdZd Zd Zdedededeeef         deddfdZdefdZdeddfdZdeddfdZdeddfdZdS )InstrumentationHookr   priorityactive_countFenable_host_bufferNhost_bufferr   r)      r&   rF   c                 r    t          |          | _        t          |           | _        d | _        i | _        d S r   )r~   r   r   	allocatorr-   metadata_path)r   rF   s     r   r   zInstrumentationHook.__init__   s5    .=h.G.G	&t,,79r   c                 R    t           j        dk    rt          d          t           xj        dz  c_        dt          _        t
          j        j        j        	                                t
          j        j        j        j
                                      d         t                       fdfdt          fdfd	d
          t                   j        _        t#           j                   t'           j                  t
          j        j        _        d S )Nr   zFOnly one instance of the instrumentation hook can be active at a time.r   Tmax_shared_memc                 f   t           j        j        j         j        v rdnd}t	          j        | j         j        j         j        j         j        j         j	        j         j
        j         j        j         j        j        j        |           t          j                            |            t           j        j        j         j        v rt	          j        |            t	          j        |            t           j        j        j         j        v rdk    rt	          j        |            d S d S d S )NFTr	   )r   OptimizeCLOCK32r[   rC   add_convert_proton_to_protongpurM   rW   rY   rU   rQ   rO   rS   r)   r&   triton_passescommonadd_cseSCHED_STORESadd_schedule_buffer_store!add_allocate_proton_shared_memorySCHED_BARRIERSadd_sched_barriers)r?   is_long_clkbackend_namer   r   s     r   to_llvmir_passesz6InstrumentationHook.activate.<locals>.to_llvmir_passes   s   #'=#8DI<S#S#S%%Y]K9"di>SUYU^Up:>):TVZV_Vk:>):SUYU^Uj:>):OQ_:>:RTXTq:EG G G  ((,,,})TY-DDD7;;;;B???}+ty/FFF<[`K`K`044444 GFK`K`r   c                 <   t          j        |            dk    rt          j        |            d S dk    rdt          j        j        j        j                                      d         	                    d          d         }t          j
        | |           d S d S )Nr
   r	   archrJ   r   )rC   )add_allocate_proton_global_scratch_buffer%add_convert_proton_nvidia_gpu_to_llvmr   r   r   r   utilsget_device_propertiesrm   "add_convert_proton_amd_gpu_to_llvm)r?   r   r   r%   s     r   to_llvm_passesz4InstrumentationHook.activate.<locals>.to_llvm_passes   s    CBGGGx''CBGGGGG&&~,39OOPVWWX^_eefijjklm@TJJJJJ '&r   c                      |           S r   r4   )r?   r   s    r   <lambda>z.InstrumentationHook.activate.<locals>.<lambda>   s    ''++ r   c                      |           S r   r4   )r?   r   s    r   r   z.InstrumentationHook.activate.<locals>.<lambda>   s    ~~b)) r   )ttgpuir_to_llvmirllvmir_to_llvm)r   r   r'   r   instrumentation_onr   r   r   r   get_current_devicer   r   r   r6   r   compilerinstrumentationr   r   rE   r   knobscompilationinstrumentation_mode)r   r   r%   r   r   r   s   `@@@@@r   activatezInstrumentationHook.activate   sA   +a//ghhh((A-((#' &-@@BB.5;QQRXYYZjk(**	5 	5 	5 	5 	5 	5 	5$	K 	K 	K 	K 	K 	K ;J++++))))	K
 K
 ; ;'7 	dn--- 9<DI 555r   c                 >   t           j        dk    rd S t           xj        dz  c_        t                      }i t          |         j        _        dt          _        dt          j	        j
        _        t          t                                 d t           _        d | _        d S )Nr   r   FrZ   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r-   )r   r   s     r   
deactivatezInstrumentationHook.deactivate   s    +q00F((A-(((** ;='7 $)  9; 5 	moo... +/' r   modulefunctionnamemetadata_grouphashrG   c                    |sd S t          d |                                D             d           }t          d |                                D             d           }|| j        |<   |rt          j                    }t          j        |           t                      }	|	dk    rt          j        |           n|	dk    rt          j        |           t          j        |           t          j
        ||          }||_        t          j        |          }
t          j        |          }t          j        |||
||           d S t          d|           )Nc              3   J   K   | ]\  }}|                     d           |V  dS )ttgirNendswithrf   r{   paths      r   	<genexpr>z2InstrumentationHook.init_handle.<locals>.<genexpr>   s8      ``dV]H_H_```````r   c              3   J   K   | ]\  }}|                     d           |V  dS )jsonNr   r   s      r   r   z2InstrumentationHook.init_handle.<locals>.<genexpr>   s8      eeysDcll\bNdNdedeeeeeer   r
   r	   z+IR path not found in metadata for function )nextitemsr   	triton_irr@   r>   r   triton_nvidia
triton_amdrC   parse_mlir_moduleget_scope_id_namesget_scope_id_parents	libprotoninit_function_metadatar'   )r   r   r   r   r   r   ir_pathr   r@   r   scope_id_namesscope_id_parentss               r   init_handlezInstrumentationHook.init_handle   se    	F ``n.B.B.D.D```bfggeeN4H4H4J4Jeeegkll'48$ 	Y'))G#G,,,,..Lx''+G4444&&(111'0000'BBF$FN*=fEEN,A&II,Xt^M]_lmmmmmWXWWXXXr   c                 F    | j         dn| j                                         S )Nr   )r-   data_ptr)r   s    r   	_data_ptrzInstrumentationHook._data_ptr   s!    K'qqT[-A-A-C-CCr   metadatac                 l   |j                             d          }|j                             d          }| j        dn2| j                                        | j                                        z  }t          j        |||                                 |           t          j	        rd t          _
        d S d S Nr   r    r   )datarn   r-   element_sizenumelr   enter_instrumented_opr   r   r   r   r   r   r;   r    
alloc_sizes        r   enterzInstrumentationHook.enter   s    }  ,,""8,,+-QQ4;3K3K3M3MPTP[PaPaPcPc3c
'dnn6F6F
SSS1 	3.2+++	3 	3r   c                 ~   |j                             d          }|j                             d          }| j        dn2| j                                        | j                                        z  }t          j        |||                                 |           t          j	        r| 
                    |           d S d S r   )r   rn   r-   r   r   r   exit_instrumented_opr   r   r   _populate_host_bufferr   s        r   exitzInstrumentationHook.exit  s    }  ,,""8,,+-QQ4;3K3K3M3MPTP[PaPaPcPc3c
&vtT^^5E5EzRRR1 	-&&t,,,,,	- 	-r   c           
         |r| j         |         rdd l}dd l}dd l}dt          t
          t          f         dt          fd}| j        dn2| j        	                                | j        
                                z  }| j        j                                                            d          }i }t          | j         |         d          5 }	|                    |	          }d d d            n# 1 swxY w Y    ||d                   }
|d         }|d         }| j        j        t$          j        j        k    r|nt+          |          }t          ||z            }| j        j        d	k    o| j        j        t$          j        j        k    }|rd
 t3          |          D             }nd |D             }d|dz  z   }d}|}|}t4          |||||
||||g
|} |j        dt+          |          z  g|R  }|                    ||z   |j        d          t<          _        t<          j        d |         }|                     |!                    tE          |          |j                             t<          j        |d          #                    | j                  }|                     | j        $                                           d S d S d S )Nr   targetrG   c                 >    | d         dk    rdS | d         dk    rdS dS )Nr   r"   r   r   r   r   r4   )r   s    r   encode_targetz@InstrumentationHook._populate_host_buffer.<locals>.encode_target  s1    )$..1I&%//1qr   rh   rprofile_scratch_size	num_warpsrZ   c                     g | ]}|S r4   r4   rf   is     r   rg   z=InstrumentationHook._populate_host_buffer.<locals>.<listcomp>J  s    8881888r   c                 ,    g | ]}t          |          S r4   )r3   r   s     r   rg   z=InstrumentationHook._populate_host_buffer.<locals>.<listcomp>L  s    999a3q66999r   (      Icpur#   )r$   )%r   r*   structr   r   rE   r   r3   r-   r   r   r   rY   rd   rm   openloadrW   rC   SAMPLING_STRATEGYNONErt   rU   GRANULARITYWARPrangeVERSIONpackr+   r,   r   r   copy_tensorlistview_asr   )r   r   r*   r   r   r   r   sampled_warpsr   filedevice_typescratch_mem_size
total_unituid_num	block_numis_all_warpsuid_vecheader_sizeheader_offsetpayload_offsetpayload_sizeheader_valuesheader_bytesconfig_portiondata_portions                            r   r   z)InstrumentationHook._populate_host_buffer  s6    M	2*84 M	2LLLMMMKKKd38n      #k1t{7O7O7Q7QTXT_TeTeTgTg7gJ I6<<>>DDSIIMDd(2C88 'Dyy' ' ' ' ' ' ' ' ' ' ' ' ' ' ' (-X77K#$:;k*J$(I$?=CbCg$g$gjjmpn nGJ)99::IB  95;w	@UYfYrYw@wL :88eJ&7&788899=999w{*KM(N%L^\S^`iku ',3M '6;sS-?-?'?P-PPPL.3kk+
:RZ_Zensk.t.t+0<\k\JN  d<.@.@!T!TUUU.:;<<HPPQUQ\]]Lt{0011111[M	2 M	2 M	2 M	2s   C..C25C2)r0   r1   r2   r   r3   __annotations__r   r   boolr   r   r   r)   r&   r   rE   r   rl   r   r   r   r   r   r   r   r   r   r   r4   r   r   r   r      s        HcL#$$$$!%K#%%%    $'c''':tS$2J'J!K : : : :1G 1G 1Gf  4Y# Y YC YQUVY[^V^Q_ Ygj Yos Y Y Y Y6D3 D D D D3h 34 3 3 3 3-X -$ - - - -N2c N2d N2 N2 N2 N2 N2 N2r   r   )'typingr   r   r   r   r   triton._C.libtritonr   r   r   rC   r	   r   r
   r   r   r   triton._C.libprotonr   triton.compilerr   triton.runtime._allocationr   r   triton.backendsr   hookr   r   rZ   r   r   r   r6   rE   rl   r~   r   r   r4   r   r   <module>r     s   - - - - - - - - - - - -  / / / / / / 7 7 7 7 7 7 1 1 1 1 1 1 7 7 7 7 7 7 7 7 7 7 7 7 3 3 3 3 3 3 $ $ $ $ $ $ K K K K K K K K $ $ $ $ $ $                          .) ) ) ) ) ) ) )&36eC)A$AB 36tG_ 36 36 36 36l>3 > > > >\2 \2 \2 \2 \2$ \2 \2 \2 \2 \2r   