o
    oh                     @   s   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dlm	Z	 d dl
Z
dd Zdd Zdd	d
ZdddZdd Zdd Zdd ZedkrKe  dS dS )    N   )startfinalize_select_backend)set_command_linec                  C   s   t jddt jd} | jddtdd | jdd	td
d g dd | jddtddddgd | jddtdddgd | jddtdd d dgd | jddtdd d dgd | jdt jdd  |  }||jfS )!NzBThe proton command utility for profiling scripts and pytest tests.z
    proton [options] script.py [script_args] [script_options]
    proton [options] pytest [pytest_args] [script_options]
    python -m triton.profiler.proton [options] script.py [script_args] [script_options]
)descriptionusageformatter_classz-nz--namezName of the profiling session)typehelpz-bz	--backendzProfiling backend)cupticupti_pcsampling	roctracer)r
   r   defaultchoicesz-cz	--contextzProfiling contextshadowpythonz-dz--datazProfiling datatreez-kz--hookzProfiling hooktritonz-iz--instrumentzInstrumentation analysis typeprint-mem-spacestarget_argszSubcommand and its arguments)nargsr   )argparseArgumentParserRawTextHelpFormatteradd_argumentstr	REMAINDER
parse_argsr   )parserargs r!   j/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/triton/profiler/proton.pyparse_arguments
   s&   
r#   c                 C   s   t j| dkS )Npytest)ospathbasename)scriptr!   r!   r"   	is_pytest      r)   c              
   C   s4  t j| }ddd|dttjti}tj}| g| t_tjt j| t jt	j
}|dkrKttt|dd }dt jd< d	t jd
< |t jd< zJz$t|d}t| |d}	W d    n1 sew   Y  t|	| W n ty }
 ztd|
  W Y d }
~
nd }
~
ww W |t_d S W |t_d S |t_w )N__name____main____file____builtins__r   zlibPrintLoadStoreMemSpaces.so1TRITON_ALWAYS_COMPILE0TRITON_DISABLE_LINE_INFOLLVM_PASS_PLUGIN_PATHrbexecz.An error occurred while executing the script: )r%   r&   abspathr.   sysr+   argvappenddirnamer   r-   r   nextpathlibPathrglobenvironopencompilereadr5   	Exceptionprint)r(   r    instrumentation_passscript_pathclean_globalsoriginal_argvtop_level_triton_pathinstrumentation_pass_pathfilecodeer!   r!   r"   execute_as_main#   s<   



rN   c                 C   sX   t   | d }t| dkr| dd  ng }t|r$dd l}|| d S t||| d S )Nr   r   )r   lenr)   r$   mainrN   )r   rE   r(   script_argsr$   r!   r!   r"   do_setup_and_executeE   s   rR   c                 C   s>   | j r| j nt }t| j| j| j|| jd t| t  d S )N)contextdatabackendhook)	rU   r   r   namerS   rT   rV   rR   r   )r    r   rU   r!   r!   r"   run_profilingR   s   
rX   c                 C   s   t || j d S N)rR   
instrumentr    r   r!   r!   r"   run_instrumentation\   r*   r\   c                  C   s,   t  \} }| jrt| | d S t| | d S rY   )r#   rZ   r\   rX   r[   r!   r!   r"   rP   `   s
   

rP   r,   rY   )r   r7   r%   r<   profiler   r   r   flagsr   r   r#   r)   rN   rR   rX   r\   rP   r+   r!   r!   r!   r"   <module>   s"    

"

