o
    h:                     @   s  U d dl Z d dlZd dlZdZdZdZdZdZdZe j	
dddkZdZdZdZdZdZdZdZdZdZdZdZdZdZdZe j	
ddkZe j	
ddkZe j	
d	dkZe j	
d
d Ze j	
ddkZe j	
ddkZ e j	
ddkZ!e j	
ddkZ"e j	
ddkZ#e$e j	
ddZ%e j	
dddkZ&e j	
dddkZ'e j	
ddkZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3e j	
dddkZ4dZ5dZ6dZ7dd Z8dej9v pdej9v Z:e8 pe:Z;dd  Z<e< Z=e8 rd d!l>m?Z? ze@re?Ae jBCe@Dd"e jEd#ZFne?Ad#ZFW n eGy   dZFY nw dZFd$ZHe j	
d%ddkZIe j	
d&ddkZJdZKdZLdZMdZNe j	
d'dZOeOdkZPeOdkrJdneOZQdZRe j	
d(ddkZSeTeUd)< dZVeTeUd*< G d+d, d,ZWG d-d. d.ZXG d/d0 d0ZYd1hZZd2d3l[m\Z\ e\ej]e^  dS )4    NFTTORCHINDUCTOR_SIZE_ASSERTS1 TORCHINDUCTOR_MAX_AUTOTUNE$TORCHINDUCTOR_MAX_AUTOTUNE_POINTWISETORCHINDUCTOR_MAX_AUTOTUNE_GEMM(TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDSzATEN,TRITON#TORCHINDUCTOR_SEARCH_AUTOTUNE_CACHETORCHINDUCTOR_SAVE_ARGS!TORCHINDUCTOR_AUTOTUNE_IN_SUBPROC'TORCHINDUCTOR_COORDINATE_DESCENT_TUNING5TORCHINDUCTOR_COORDINATE_DESCENT_CHECK_ALL_DIRECTIONS'TORCHINDUCTOR_COORDINATE_DESCENT_RADIUS!TORCHINDUCTOR_LAYOUT_OPTIMIZATION TORCHINDUCTOR_KEEP_OUTPUT_STRIDETORCHINDUCTOR_WARN_MIX_LAYOUT   i     @   TORCHINDUCTOR_BENCHMARK_KERNEL0c                   C   s   t tjd S )Ngit_version)hasattrtorchversion r   r   L/var/www/html/ai/venv/lib/python3.10/site-packages/torch/_inductor/config.py	is_fbcode   s   r   devgitc                  C   s^   dt jv rtt jd S tjdkst rdS tt dr"tt dnt 	 } | s*J t
d| S )a8  
    Here are the precedence to decide compile_threads
    1. User can override it by TORCHINDUCTOR_COMPILE_THREADS.  One may want to disable async compiling by
       setting this to 1 to make pdb happy.
    2. Set to 1 if it's win32 platform or it's a fbcode build
    3. decide by the number of CPU cores
    TORCHINDUCTOR_COMPILE_THREADSwin32   sched_getaffinityr       )osenvironintsysplatformr   r   lenr#   	cpu_countmin)r+   r   r   r   decide_compile_threads   s   

r-   )parutil.zfb/cache
   TORCHINDUCTOR_SHAPE_PADDINGTORCHINDUCTOR_PERMUTE_FUSIONTORCHINDUCTOR_PROFILETORCHINDUCTOR_FREEZINGfreezingfreezing_discard_parametersc                   @   sN   e Zd ZdZdZdZdZdZdej	
ddfZdZdZdZdZdZdZd	ZdS )
cppTFNi   CXXzg++original_aten   )__name__
__module____qualname__threadsno_redundant_loopsdynamic_threadssimdlenmin_chunk_sizer%   r&   getcxxenable_kernel_profileweight_prepackinject_relu_bug_TESTING_ONLYinject_log1p_bug_TESTING_ONLY
vec_isa_okdescriptive_namesmax_horizontal_fusion_sizer   r   r   r   r7     s     
r7   c                   @   s   e Zd ZU dZe  ZdZdZdZdZ	dZ
dZdZdZdZdZdZdZdZejddkZdZejdddkZdZdd	d	d
ZdZdZeed< dZdS )tritonFT   !TORCHINDUCTOR_UNIQUE_KERNEL_NAMESr   r:   #TORCHINDUCTOR_PERSISTENT_REDUCTIONSi   i   )XYZr;   spill_thresholdN) r<   r=   r>   
cudagraphsr   cudagraph_treesslow_path_cudagraph_asserts!cudagraph_trees_history_recordingfast_path_cudagraph_assertsskip_cudagraph_warmupdebug_sync_graphdebug_sync_kerneldense_indexing	max_tilesautotune_pointwiseautotune_cublasLt tiling_prevents_pointwise_fusion tiling_prevents_reduction_fusionassert_indirect_indexingr%   r&   rD   unique_kernel_namesrK   persistent_reductionsdivisible_by_16	max_blockstore_cubinrT   r'   __annotations__rH   r   r   r   r   rM   7  s2   
 rM   c                   @   sT   e Zd ZejdddkZdZdZdZ	dZ
dZdZdZejdddkZdZdZdS )traceTORCH_COMPILE_DEBUGr   r   FTINDUCTOR_POST_FUSION_SVGN)r<   r=   r>   r%   r&   rD   enabled	debug_loginfo_logfx_graphfx_graph_transformedir_pre_fusionir_post_fusionoutput_codegraph_diagramcompile_profile
upload_tarr   r   r   r   rj     s    rj   ztrace.upload_tarrN   )install_config_module)_r%   r(   r   debugdisable_progressverbose_progresscpp_wrapperdcestatic_weight_shapesr&   rD   size_assertspick_loop_ordersinplace_buffersallow_buffer_reusebenchmark_harnessepilogue_fusionepilogue_fusion_firstpattern_matchersplit_cat_fx_passesgroup_fusionbatch_fusion
reorderinguse_mixed_mmforce_mixed_mmaot_inductor_output_pathmax_autotunemax_autotune_pointwisemax_autotune_gemmuppermax_autotune_gemm_backendssearch_autotune_cache	save_argsautotune_in_subproccoordinate_descent_tuning'coordinate_descent_check_all_directionsr'    coordinate_descent_search_radiuslayout_optimizationkeep_output_stridewarn_mix_layoutrealize_reads_thresholdrealize_bytes_thresholdrealize_acc_reads_thresholdfallback_randomimplicit_fallbacksaggressive_fusionmax_fusion_sizeunroll_reductions_thresholdcomment_originconv_1x1_as_mmsplit_reductionsbenchmark_kernelconstant_and_index_propagationjoint_graph_constant_foldingdebug_index_assertsr   __version__is_nightly_or_sourcedeveloper_warningsr-   compile_threadslibfb.pyr.   __package__get_dir_pathpathjoinreplacesepglobal_cache_dir
ValueErrorkernel_name_max_opsshape_paddingpermute_fusionprofiler_mark_wrapper_callgenerate_intermediate_hooksdebug_ir_traceback_raise_error_for_testing_profile_varprofile_bandwidthprofile_bandwidth_regexdisable_cpp_codegenr5   boolri   r6   r7   rM   rj   _save_config_ignore_dynamo.config_utilsrx   modulesr<   r   r   r   r   <module>   s   
 

1]&