U
    zâh‹†  ã                   @   sþ  U d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 d dl
Z
dd„ ZdZdZdZe j d¡dkZe j d	¡dkZdZe j d
¡dkZe j d¡dkZe j dd¡dkZe j deƒ rºdnd¡dkZe j deƒ rÖdnd¡ZdZdZe j dd¡dkZe j d¡dkZdZdZdZe j dd¡dkZ e j dd¡Z!dZ"dZ#dZ$dZ%dZ&eee
j'j(j)gdf  e*d< dZ+eee
j'j(j)gdf  e*d< dZ,eee
j'j)gdf  e*d< dZ-eee
j'j)gdf  e*d< dZ.eee
j'j(j)gdf  e*d< dZ/dZ0dZ1dZ2dZ3i i i i i i dœZ4ee5ee5ef f e*d< i Z6ee5ee5ef f e*d< dZ7e j dd¡dkZ8dZ9dZ:ddd dd!œZ;ee5ef e*d"< dZ<dZ=d#d$d%gZ>d&Z?d'Z@d(ZAe j d)¡dkZBe j d*¡dkZCe j d+¡dkZDeƒ rÎdne j d,¡dkZEe j d-d.¡ F¡ ZGe j d/d0¡ F¡ ZHe j d1d¡dkZId2ZJe j d3¡dkZKe j d4¡dkZLe j d5¡dkZMd6ZNd7ZOd8ZPe j d9¡dkZQe j d:¡dkZRe j d;¡dkZSeTe j d<d¡ƒZUe
jVjWs¤dndZXe j d=eX¡dkZYe j d>d¡dkZZe j d?d¡dkZ[e j d@¡dkZ\dAZ]dBZ^dCZ_dZ`dZadZbe j dD¡dkZce j dE¡dkZde j dFdG¡Zee j dHd¡dkZfd ZgdIZhdCZidCZjdZkdZldZme j dJd¡dkZndZodZpdZqdZrdZsdZtdKe
jukp dLe
jukZveƒ p¬evZwdMdN„ Zxexƒ ZydZzd(Z{dOdPgZ|ee	edQ e5f  e*dR< dZ}e~e*dS< dTdU„ Zeƒ Z€eƒ rdd dVlm‚Z‚ z4eƒr:e‚ „e j… †eƒ ‡dWe jˆ¡dX¡¡Z‰n
e‚ „dX¡Z‰W n eŠk
r`   dZ‰Y nX ndZ‰dYZ‹e j dZd¡dkZŒe j d[eƒ r’dnd¡dkZdZŽdZdZe~e*d\< e j d]d¡dkZ‘dZ’dZ“dZ”dZ•e j d^dG¡Z–e–dGkZ—e–dkrödGne–Z˜e j d_d¡Z™dZše j d`d¡dkZ›e~e*da< dZœe~e*db< e j dceƒ rFdnd¡dkZe~e*dd< dZže~e*de< dZŸe~e*df< dZ e~e*dg< G dhdi„ diƒZ¡G djdk„ dkƒZ¢G dldm„ dmƒZ£G dndo„ doƒZ¤G dpdq„ dqƒZ¥drgZ¦dqdsdtgZ§eràd dul¨T d dvl©mªZª eªej«e¬ ƒ dS )wé    N)ÚAnyÚCallableÚDictÚListÚOptionalÚTYPE_CHECKINGÚUnionc                   C   s   t tjdƒ S )NZgit_version)ÚhasattrÚtorchÚversion© r   r   úH/var/www/html/venv/lib/python3.8/site-packages/torch/_inductor/config.pyÚ	is_fbcode	   s    r   FTZTORCHINDUCTOR_FX_GRAPH_CACHEÚ1Z#TORCHINDUCTOR_FX_GRAPH_REMOTE_CACHEZ#TORCHINDUCTOR_AUTOTUNE_REMOTE_CACHEZ"TORCHINDUCTOR_FORCE_DISABLE_CACHESZTORCHINDUCTOR_CPP_WRAPPERÚ0ZTORCHINDUCTOR_ABI_COMPATIBLEZTORCHINDUCTOR_C_SHIM_VERSIONÚ2ZTORCHINDUCTOR_SIZE_ASSERTSZTORCHINDUCTOR_NAN_ASSERTSZTORCHINDUCTOR_MEMORY_PLANNINGZTORCHINDUCTOR_MEMORY_POOLZintermediatesÚpost_grad_custom_pre_passÚpost_grad_custom_post_passÚjoint_custom_pre_passÚjoint_custom_post_passÚpre_grad_custom_pass)Zbatch_linearZbatch_linear_lhsZbatch_layernormZ
batch_tanhZ
batch_reluZbatch_sigmoidÚpre_grad_fusion_optionsÚpost_grad_fusion_optionsZ"TORCHINDUCTOR_DYNAMIC_SCALE_RBLOCKg-Cëâ6?é   )Zpre_gradÚ	precisionZnum_iterationsZrequires_optimizerÚfx_passes_numeric_checkZreorder_compute_for_overlapZ
sink_waitsZraise_commsÚdefaulti,  é   ZTORCHINDUCTOR_MAX_AUTOTUNEZ$TORCHINDUCTOR_MAX_AUTOTUNE_POINTWISEZTORCHINDUCTOR_MAX_AUTOTUNE_GEMMZ"TORCHINDUCTOR_FORCE_SAME_PRECISIONZ(TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_BACKENDSzATEN,TRITON,CPPZ,TORCHINDUCTOR_MAX_AUTOTUNE_GEMM_SEARCH_SPACEÚDEFAULTZ'TORCHINDUCTOR_AUTOTUNE_FALLBACK_TO_ATENi    Z#TORCHINDUCTOR_SEARCH_AUTOTUNE_CACHEZTORCHINDUCTOR_SAVE_ARGSZ!TORCHINDUCTOR_AUTOTUNE_IN_SUBPROCg      N@g      ð?g       @Z#TORCHINDUCTOR_AUTOTUNE_MULTI_DEVICEZ'TORCHINDUCTOR_COORDINATE_DESCENT_TUNINGZ5TORCHINDUCTOR_COORDINATE_DESCENT_CHECK_ALL_DIRECTIONSZ'TORCHINDUCTOR_COORDINATE_DESCENT_RADIUSZ!TORCHINDUCTOR_LAYOUT_OPTIMIZATIONZTORCHINDUCTOR_FORCE_LAYOUT_OPTZ TORCHINDUCTOR_KEEP_OUTPUT_STRIDEZTORCHINDUCTOR_WARN_MIX_LAYOUTé   é   é   ZTORCHINDUCTOR_DEBUG_FUSIONZTORCHINDUCTOR_BENCHMARK_FUSIONZ#TORCHINDUCTOR_ENABLED_METRIC_TABLESÚ Z'TORCHINDUCTOR_BENCHMARK_EPILOGUE_FUSIONé@   ZTORCHINDUCTOR_BENCHMARK_KERNELÚdevÚgitc                  C   s2   t j dtƒ rdnd¡} | dks.td| › ƒ‚| S )NZTORCHINDUCTOR_WORKER_STARTÚforkÚ
subprocess)r'   r&   ÚspawnzInvalid start method: )ÚosÚenvironÚgetr   ÚAssertionError)Zstart_methodr   r   r   Údecide_worker_start_methodƒ  s     ÿ
ür-   Zfuse_ddp_with_concat_opZschedule_comm_wait).NÚ_fuse_ddp_communication_passesÚ_micro_pipeline_tpc                  C   sb   dt jkrtt jd ƒS tjdks(tƒ r,dS tt dƒrDtt  d¡ƒnt  	¡ } | sTt
‚td| ƒS 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
    ZTORCHINDUCTOR_COMPILE_THREADSÚwin32r   Úsched_getaffinityr   é    N)r)   r*   ÚintÚsysÚplatformr   r	   Úlenr1   Ú	cpu_countr,   Úmin)r7   r   r   r   Údecide_compile_threads«  s    
ÿýr9   )ÚparutilÚ.zfb/cacheé
   ZTORCHINDUCTOR_SHAPE_PADDINGZ#TORCHINDUCTOR_COMPREHENSIVE_PADDINGÚforce_shape_padZTORCHINDUCTOR_PERMUTE_FUSIONZTORCHINDUCTOR_PROFILEZTORCHINDUCTOR_PROFILE_OUTPUTZTORCHINDUCTOR_FREEZINGÚfreezingÚfreezing_discard_parametersZTORCHINDUCTOR_STACK_ALLOCATIONÚallow_stack_allocationÚuse_minimal_arrayref_interfaceÚdecompose_mem_bound_mmÚassume_aligned_inputsc                   @   s  e Zd ZU dZej dd¡dkZej dd¡dkZdZ	e
e ed< eej dd	¡ƒZdej d
ejdkrldnd¡fZej dd¡dkZej dd¡dkZdZe
e ed< dZe
e ed< dZe
e ed< d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¡dkZdS )ÚcppéÿÿÿÿZ$TORCHINDUCTOR_CPP_NO_REDUNDANT_LOOPSr   Z!TORCHINDUCTOR_CPP_DYNAMIC_THREADSr   NÚsimdlenZ TORCHINDUCTOR_CPP_MIN_CHUNK_SIZEZ4096ÚCXXÚdarwinzclang++zg++Z'TORCHINDUCTOR_CPP_ENABLE_KERNEL_PROFILEZ TORCHINDUCTOR_CPP_WEIGHT_PREPACKÚinject_relu_bug_TESTING_ONLYÚinject_log1p_bug_TESTING_ONLYÚ
vec_isa_okÚoriginal_atenZ,TORCHINDUCTOR_CPP_MAX_HORIZONTAL_FUSION_SIZEZ16Z-TORCHINDUCTOR_CPP_FALLBACK_SCATTER_REDUCE_SUMZ-TORCHINDUCTOR_CPP_ENABLE_UNSAFE_MATH_OPT_FLAGZ5TORCHINDUCTOR_CPP_ENABLE_FLOATING_POINT_CONTRACT_FLAG)Ú__name__Ú
__module__Ú__qualname__Úthreadsr)   r*   r+   Zno_redundant_loopsZdynamic_threadsrF   r   r3   Ú__annotations__Zmin_chunk_sizer4   r5   ÚcxxZenable_kernel_profileZweight_prepackrI   ÚstrrJ   rK   ÚboolÚdescriptive_namesZmax_horizontal_fusion_sizeZfallback_scatter_reduce_sumZenable_unsafe_math_opt_flagZ#enable_floating_point_contract_flagr   r   r   r   rD   )  s6   
ÿúÿÿÿÿÿÿrD   c                   @   sÆ   e Zd ZU ej 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dZdZdZej d¡dkZdZej dd¡dkZeej d	d
¡ƒZdZdZdZdZ ee!d< dZ"dZ#e$e% e!d< dS )ÚtritonZTORCHINDUCTOR_CUDAGRAPHSr   TFé   Z!TORCHINDUCTOR_UNIQUE_KERNEL_NAMESrL   Z#TORCHINDUCTOR_PERSISTENT_REDUCTIONSZTORCHINDUCTOR_MULTI_KERNELr   é   é   Úspill_thresholdNrI   )&rM   rN   rO   r)   r*   r+   Z
cudagraphsZcudagraph_treesZcudagraph_skip_dynamic_graphsZslow_path_cudagraph_assertsZ!cudagraph_trees_history_recordingZ cudagraph_support_input_mutationZforce_cudagraph_syncZforce_cudagraphs_warmupZfast_path_cudagraph_assertsZskip_cudagraph_warmupZdebug_sync_graphZdebug_sync_kernelZdense_indexingZ	max_tilesZautotune_pointwiseZautotune_cublasLtZ tiling_prevents_pointwise_fusionZ tiling_prevents_reduction_fusionZunique_kernel_namesrU   Zpersistent_reductionsr3   Zmulti_kernelZdivisible_by_16Zmin_split_scan_rblockZstore_cubinrZ   rQ   Zuse_block_ptrrI   r   rS   r   r   r   r   rV   q  s:   
ÿrV   c                   @   s^   e Zd ZU dZej dd¡dkZej dd¡dkZe	e
d< dZdZdZe	e
d< dZe	e
d	< d
S )Úaot_inductorr"   ZAOT_INDUCTOR_DEBUG_COMPILEr   r   Z"AOT_INDUCTOR_DEBUG_DUMP_CONSTS_BINÚdebug_dump_consts_binFÚuse_runtime_constant_foldingÚforce_mmap_weightsN)rM   rN   rO   Zoutput_pathr)   r*   r+   Zdebug_compiler\   rT   rQ   Zserialized_in_specZserialized_out_specr]   r^   r   r   r   r   r[   á  s   
ÿ
r[   c                
   @   sÒ   e Zd ZU dZee ed< dZee ed< dZdZ	dZ
dZdZej dej ej ej ej¡d¡¡¡ZdZee ed< dZee ed	< d
Zeed< ej dd¡dkZeed< dZee ed< dZee ed< dS )ÚcudaNÚarchr   z-O1FZTORCHINDUCTOR_CUTLASS_DIRz../third_party/cutlass/Úcutlass_max_profiling_configsÚcuda_cxxr   Úcutlass_backend_min_gemm_sizeZ/INDUCTOR_CUDA_BACKEND_GENERATE_TEST_RUNNER_CODEr   Úgenerate_test_runnerÚcutlass_op_allowlist_regexZpingpongÚcutlass_op_denylist_regex)rM   rN   rO   r`   r   rS   rQ   r   Zcompile_opt_levelZenable_cuda_ltoZenable_ptxas_infoZenable_debug_infoZuse_fast_mathr)   r*   r+   ÚpathÚabspathÚjoinÚdirnamer
   Ú__file__Zcutlass_dirra   r3   rb   rc   rd   rT   re   rf   r   r   r   r   r_   þ  s(   
ÿþ
ÿ
r_   c                   @   s¶   e Zd ZU ej dd¡dkZdZee	 e
d< dZdZdZdZdZdZdZej dd¡dkZej d	d¡dkZej d
d¡Zej dd¡ZdZdZeee	gdf  e
d< dZee
d< dS )ÚtraceZTORCH_COMPILE_DEBUGr   r   NÚ	debug_dirFTZINDUCTOR_POST_FUSION_SVGZINDUCTOR_ORIG_FX_SVGZINDUCTOR_DOT_GRAPH_SHAPE_SVGZ INDUCTOR_LOG_URL_FOR_GRAPH_XFORMÚ
upload_tarÚlog_autotuning_results)rM   rN   rO   r)   r*   r+   Zenabledrm   r   rS   rQ   Z	debug_logZinfo_logZfx_graphZfx_graph_transformedZir_pre_fusionZir_post_fusionZoutput_codeZgraph_diagramZdraw_orig_fx_graphZdot_graph_shapeZlog_url_for_graph_xformZcompile_profilern   r   ro   rT   r   r   r   r   rl   H  s    

rl   ztrace.upload_tarzcuda.cutlass_dirÚcompile_threads)Ú*)Úinstall_config_module)­r)   r4   Útypingr   r   r   r   r   r   r   r
   r   ÚdebugZdisable_progressZverbose_progressr*   r+   Zfx_graph_cacheZfx_graph_remote_cacheZautotune_local_cacheZautotune_remote_cacheZforce_disable_cachesZcpp_wrapperZabi_compatibleZc_shim_versionZdceZstatic_weight_shapesZsize_assertsZnan_assertsZpick_loop_ordersZinplace_buffersZallow_buffer_reuseZmemory_planningZmemory_poolZbenchmark_harnessZepilogue_fusionZepilogue_fusion_firstZpattern_matcherr   ZfxÚgraphZGraphrQ   r   r   r   r   Zsplit_cat_fx_passesZ efficient_conv_bn_eval_fx_passesZis_predispatchZgroup_fusionZbatch_fusionr   rS   r   Zreorder_for_localityZdynamic_scale_rblockZforce_fuse_int_mm_with_mulZuse_mixed_mmr   Zforce_mixed_mmZ reorder_for_compute_comm_overlapZ'reorder_for_compute_comm_overlap_passesZestimate_op_runtimeZintra_node_bwZinter_node_bwZmax_autotuneZmax_autotune_pointwiseZmax_autotune_gemmZforce_same_precisionÚupperZmax_autotune_gemm_backendsZmax_autotune_gemm_search_spaceZautotune_fallback_to_atenZunbacked_symint_fallbackZsearch_autotune_cacheZ	save_argsZautotune_in_subprocZ+max_autotune_subproc_result_timeout_secondsZ-max_autotune_subproc_graceful_timeout_secondsZ.max_autotune_subproc_terminate_timeout_secondsZautotune_multi_deviceZcoordinate_descent_tuningZ'coordinate_descent_check_all_directionsr3   Z coordinate_descent_search_radiusr   ZhipZlayout_opt_defaultZlayout_optimizationZforce_layout_optimizationZkeep_output_strideZwarn_mix_layoutZrealize_reads_thresholdZrealize_opcount_thresholdZrealize_acc_reads_thresholdZfallback_randomZimplicit_fallbacksZaggressive_fusionZdebug_fusionZbenchmark_fusionZenabled_metric_tablesZbenchmark_epilogue_fusionZ max_epilogue_benchmarked_choicesZmax_fusion_sizeZmax_pointwise_cat_inputsZunroll_reductions_thresholdZcomment_originZconv_1x1_as_mmZsplit_reductionsZbenchmark_kernelZconstant_and_index_propagationZalways_keep_tensor_constantsZassert_indirect_indexingZcompute_all_boundsZjoint_graph_constant_foldingZdebug_index_assertsÚ__version__Zis_nightly_or_sourceZdeveloper_warningsr-   Zworker_start_methodZ_fuse_ddp_communicationZ_fuse_ddp_bucket_sizer.   r/   rT   r9   rp   Zlibfb.pyr:   Ú__package__Zget_dir_pathrg   ri   ÚreplaceÚsepZglobal_cache_dirÚ
ValueErrorZkernel_name_max_opsZshape_paddingZcomprehensive_paddingZpad_channels_lastZbw_outputs_user_visibler=   Zpermute_fusionZprofiler_mark_wrapper_callZgenerate_intermediate_hooksZdebug_ir_tracebackZ_raise_error_for_testingZ_profile_varZprofile_bandwidthZprofile_bandwidth_regexZprofile_bandwidth_outputZdisable_cpp_codegenr>   r?   r@   rA   rB   rC   rD   rV   r[   r_   rl   Z_save_config_ignoreZ_cache_config_ignore_prefixZtorch.utils._config_typingZtorch.utils._config_modulerr   ÚmodulesrM   r   r   r   r   Ú<module>   s„   $ÿ ÿ   úüýÿ
 ÿ ÿÿÿÿÿÿÿþÿÿÿÿ
HpJ?þú	