o
    ߗi                     @   s  d dl mZmZ g dZg dZedd eddge edd	g ed
ddg edd edddg edd ede edd ede edddg edddg eddg edd d!g ed"d#d$g ed%d& ed'dd(d)ged*d+ ed,d-d.d/ ed0d1d.d2 ed3d4d.d2 ed5d6 ed7d8 ed9d: ed;d< ed=d> ed?d@ edAdBd.d/ edCdD edEdFd.d/ edGdH edIdJd.d/ edKdLd.d2 edMdN edOdPd.d/ edQdRd.d.dS edTdUd.d/ edVdW edXdYd.d.dZ ed[d\d.d.dZ ed]d^d.d2 ed_d1d.d2 ed`d1d.d2 edadbd.d2 edcddd.d2 ededfd.d2 edgdhd.d2 edidjd.d2 edkdld.d2 edmdnd.d2 edodpd.d2 edqdrd1ds dtS )u   )register_artifactregister_log)z%torch.fx.experimental.symbolic_shapesztorch.fx.experimental.sym_nodeztorch.fx.experimental.recording)ztorch.distributed"torch._dynamo.backends.distributedtorch.nn.parallel.distributedcache)ztorch._inductor.remote_cacheztorch._inductor.fb.remote_cachedynamoztorch._dynamofake_tensorztorch._subclasses.fake_tensoraotztorch._functorch.aot_autogradztorch._functorch._aot_autogradautogradztorch.autogradinductorztorch._inductorztorch._inductor.cudagraph_trees
cudagraphszGLogs information from wrapping inductor generated code with cudagraphs.dynamictorchdistributedc10dz"torch.distributed.distributed_c10dztorch.distributed.rendezvousddpr   r   ppztorch.distributed.pipeliningfsdpztorch.distributed.fsdpz"torch.distributed._composable.fsdpdtensorztorch.distributed._tensorztorch.distributed.tensoronnxz
torch.onnxexportztorch.exportztorch.export.dynamic_shapesztorch._export.converterztorch._export.non_strict_utilsguardszhThis prints the guards for every compiled Dynamo frame. It does not tell you where the guards come from.T)visibleverbose_guards )off_by_defaultbytecodez{Prints the original and modified bytecode from Dynamo. Mostly useful if you're debugging our bytecode generation in Dynamo.graphzvPrints the dynamo traced graph (prior to AOTDispatch) in a table. If you prefer python code use `graph_code` instead. 
graph_codez4Like `graph`, but gives you the Python code instead.graph_sizesz5Prints the sizes of all FX nodes in the dynamo graph.trace_sourcezAs we execute bytecode, prints the file name / line number we are processing and the actual source code. Useful with `bytecode`
trace_callzhLike trace_source, but it will give you the per-expression blow-by-blow if your Python is recent enough.trace_bytecodezCAs we trace bytecode, prints the instruction and the current stack.
aot_graphszPrints the FX forward and backward graph generated by AOTDispatch, after partitioning. Useful to understand what's being given to Inductoraot_joint_graphz_Print FX joint graph from AOTAutograd, prior to partitioning. Useful for debugging partitioningaot_graphs_effectszkPrints the FX forward and backward graph generated by AOTDispatch, useful for debugging effects processing.post_grad_graphsz}Prints the FX graph generated by post grad passes. Useful to understand what's being given to Inductor after post grad passescompiled_autogradzzPrints various logs in compiled_autograd, including but not limited to the graphs. Useful for debugging compiled_autograd.compiled_autograd_verbosezjWill affect performance. Prints compiled_autograd logs with C++ info e.g. autograd node -> fx node mapping
ddp_graphszOnly relevant for compiling DDP. DDP splits into multiple graphs to trigger comms early. This will print each individual graph here.
recompilesz?Prints the reason why we recompiled a graph. Very, very useful.recompiles_verbosezPrints all guard checks that fail during a recompilation. At runtime, Dynamo will stop at the first failed check for each failing guard. So not all logged failing checks are actually ran by Dynamo.)r   r   graph_breakszPrints whenever Dynamo decides that it needs to graph break (i.e. create a new graph). Useful for debugging why torch.compile has poor performancenot_implementedzPrints log messages whenever we return NotImplemented in a multi-dispatch, letting you trace through each object we attempted to dispatch tooutput_codez>Prints the code that Inductor generates (either Triton or C++))r   r   kernel_codez?Prints the code that Inductor generates (on a per-kernel basis)schedulezIInductor scheduler information. Useful if working on Inductor fusion algo
perf_hintsonnx_diagnosticsfusionzADetailed Inductor fusion decisions. More detailed than 'schedule'loop_orderingzLogs related to loop orderingoverlapz0Detailed Inductor compute/comm overlap decisionssym_nodez.Logs extra info for various SymNode operationstrace_shape_eventszBLogs traces for every ShapeEnv operation that we record for replaycudagraph_static_inputsz:Logs static inputs handling in dynamo, AOT, and cudagraphsbenchmarkingz+Detailed Inductor benchmarking information.graph_region_expansionzMLogs detailed steps of the duplicate graph region tracker expansion algorithmcustom_format_test_artifactzTesting only)
log_formatN)	_internalr   r   DYNAMICDISTRIBUTED r@   r@   [/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/torch/_logging/_registrations.py<module>   sp  





