by benreesman | 2026-02-19 07:10:21+00:00
## 1. Myelin Compiler Structure

Myelin is TensorRT's internal graph compiler. Source tree structure:

```
/nvidia/gpgpu/MachineLearning/myelin/src/
├── api_wrap/
│ ├── graph_wrap.cpp
│ ├── op_wrap.cpp
│ ├── op_wrap.h
│ └── tensor_wrap.cpp
├── common/
│ ├── cask6_base.cpp # CASK 6 = Blackwell
│ ├── cask6_common.cpp
│ ├── cask6_launched_shader.cpp
│ ├── cask_base.cpp
│ ├── cask_common.cpp
│ ├── convolution_common.cpp
│ ├── device_utils.cpp
│ ├── myelin_binary.cpp
│ ├── myelin_operation.cpp
│ ├── myelin_session.cpp
│ └── ...
├── compiler/
│ ├── analysis/
│ │ ├── alias.cpp
│ │ ├── dom.cpp
│ │ ├── graph_io_alias.cpp
│ │ ├── implicit_padding.cpp
│ │ ├── l2_cache_management.cpp
│ │ ├── loops.cpp
│ │ ├── shape.cpp
│ │ ├── ssa.cpp
│ │ ├── tensorify.cpp
│ │ ├── type.cpp
│ │ └── verify.cpp
│ ├── codegen/
│ │ ├── codegen.cpp
│ │ ├── data.cpp
│ │ └── ops.cpp
│ ├── global_allocator/
│ │ ├── block_allocator.cpp
│ │ ├── happens_before.cpp
│ │ ├── interference_graph.cpp
│ │ ├── list_allocator.cpp
│ │ ├── live_analysis.cpp
│ │ ├── live_interval.cpp
│ │ ├── memory_allocator.cpp
│ │ ├── overlap.cpp
│ │ ├── region_allocator.cpp
│ │ ├── reorder_ops_to_reduce_live_set.cpp
│ │ └── tensor_allocator.cpp
│ ├── ir/
│ │ ├── explicit_dds.cpp
│ │ ├── multidef_map_t.cpp
│ │ └── operation/pointwise_op.cpp
│ ├── ir_builder/
│ │ └── ir_sequence_builder.cpp
│ ├── kernel_gen/
│ │ ├── align_stride_order.cpp
│ │ ├── align_stride_order_heuristic.cpp
│ │ ├── convert_move_to_transpose.cpp
│ │ ├── dag.cpp
│ │ ├── kernel_gen.cpp
│ │ ├── kernel_gen_ds.cpp
│ │ ├── kernel_gen_utils.cpp
│ │ ├── kgen.cpp
│ │ ├── kgen_prelim_transforms.cpp
│ │ ├── knode.cpp
│ │ ├── myl_fusion_heuristics.cpp
│ │ ├── partition_dag.cpp
│ │ ├── cuda_codegen/
│ │ │ ├── crd_computation.cpp
│ │ │ ├── cuda_codegen.cpp # 9000+ lines
│ │ │ ├── cuda_codegen_fc.cpp
│ │ │ ├── cuda_codegen_flash_decode.cpp
│ │ │ ├── cuda_codegen_pattern.cpp
│ │ │ ├── cuda_codegen_utils.cpp
│ │ │ ├── cuda_compile.cpp
│ │ │ ├── cuda_dynq_op.cpp
│ │ │ ├── cuda_norm_op.cpp
│ │ │ ├── cuda_reduce_op.cpp
│ │ │ ├── cuda_tma_gnorm_op.cpp
│ │ │ ├── generate_block_group_norm_kernel.cpp
│ │ │ ├── generate_block_inst_norm_kernel.cpp
│ │ │ ├── generate_cumsum_kernel.cpp
│ │ │ ├── generate_dynq_kernel.cpp
│ │ │ ├── generate_norm_kernel.cpp
│ │ │ ├── generate_reduction_kernel.cpp
│ │ │ ├── generate_tma_group_norm_kernel.cpp
│ │ │ ├── nvcc_compile.cpp
│ │ │ ├── nvrtc_compile.cpp
│ │ │ ├── op_scheduler.cpp
│ │ │ ├── permutation_utils.cpp
│ │ │ ├── source_guard.cpp
│ │ │ ├── stream_tile_size_solver.cpp
│ │ │ ├── vectorizer.cpp
│ │ │ └── xqa_codegen.cpp # XQA = Cross-Query Attention
│ │ ├── fusion_codegen/
│ │ │ ├── backbone_fuser.cpp
│ │ │ ├── cask_codegen.cpp
│ │ │ ├── fir_builder.cpp
│ │ │ └── fusion_codegen.cpp
│ │ └── mlir_codegen/
│ │ ├── cask6_api.cpp # Blackwell API
│ │ ├── collective_codegen.cpp
│ │ ├── mlir_b2b_gemm_emitter.cpp # Back-to-back GEMM
│ │ ├── mlir_builder.cpp
│ │ ├── mlir_codegen.cpp
│ │ ├── mlir_codegen_utils.cpp
│ │ ├── mlir_dual_gemm_emitter.cpp # Dual GEMM (MoE?)
│ │ ├── mlir_emitter_base.hpp
│ │ ├── mlir_epilogue_emitter.cpp
│ │ ├── mlir_fusion_codegen.cpp
│ │ ├── mlir_gemm_base_emitter.cpp
│ │ ├── mlir_params.cpp
│ │ ├── tile_aa_codegen.cpp # TileAA codegen
│ │ └── tile_aa_epilogue.cpp
│ └── optimizer/
│ ├── autotuner.cpp
│ ├── autotuner_cache.cpp
│ ├── cache_model.cpp
│ ├── canonicalize_ops.cpp
│ ├── cask6_compile_utils.cpp
│ ├── cask_compile_utils.cpp
│ ├── cask_heuristics.cpp
│ ├── cask_impl.cpp
│ ├── cast_elimination.cpp
│ ├── common_utils.cpp
│ ├── const_ppg.cpp
│ ├── conv_act_pool_fusion.cpp
│ ├── conv_lowering.cpp
│ ├── conv_w2c_transformation.cpp
│ ├── copy_ppg.cpp
│ ├── cost-model.cpp
│ ├── create_shape_context.cpp
│ ├── custom_layer_alias_io.cpp
│ ├── custom_layer_internal_transform.cpp
│ ├── dce.cpp
│ ├── dds_output_scan_dim_to_transform.cpp
│ ├── dds_output_size_tensors_t.cpp
│ ├── decompose_composite_ops.cpp
│ ├── deconv_lowering.cpp
│ ├── dep_sep_fusion.cpp
│ ├── einsum_helper.cpp
│ ├── einsum_transformer.cpp
│ ├── enable_batch_matmul.cpp
│ ├── extract_reverse_iterator.cpp
│ ├── fc_lowering.cpp
│ ├── formats.cpp
│ ├── formats_util.cpp
│ ├── fusion_op_inliner.cpp
│ ├── fusion_op_lowering.cpp
│ ├── fusion_pipeline.cpp
│ ├── fusion_rewrite.cpp
│ ├── fusion_rewrite_utils.cpp
│ ├── graph_jit.cpp
│ ├── gvn/gvn.cpp
│ ├── gvn/value_number_adv.cpp
│ ├── gvn/value_number_op_attrs.cpp
│ ├── inline.cpp
│ ├── inout_variant.cpp
│ ├── instCombine.cpp
│ ├── iv_lowering.cpp
│ ├── kgen_cache.cpp
│ ├── kqv_gemm_split.cpp # K/Q/V GEMM splitting
│ ├── kqv_gemm_split_utils.cpp
│ ├── kvcache_update_lowering.cpp
│ ├── l2tc_cost_model.cpp
│ ├── l2tc_opt.cpp
│ ├── l2tc_relations.cpp
│ ├── l2tc_scheduler.cpp
│ ├── l2tc_utils.cpp
│ ├── layouts.cpp
│ ├── lgtc_opt.cpp
│ ├── lgtc_scheduler.cpp
│ ├── linearize.cpp
│ ├── loop_conv.cpp
│ ├── loop_fusion.cpp
│ ├── loop_unroll.cpp
│ ├── lower_dds_scanout.cpp
│ ├── lower_hwc_group_norm_op.cpp
│ ├── lower_hwc_inst_norm_op.cpp
│ ├── lower_inst_norm.cpp
│ ├── lower_reduce.cpp
│ ├── match_dual_gemm.cpp
│ ├── match_gemv_mha.cpp # GEMV MHA (decode phase)
│ ├── match_group_norm.cpp
│ ├── match_ragged_mha.cpp # Ragged/variable-length MHA
│ ├── match_vertical_small_batched_gemm.cpp
│ ├── memory_prop_ppg.cpp
│ ├── merge_bbs.cpp
│ ├── mha_fusion.cpp # MHA fusion
│ ├── mha_matching_utils.cpp
│ ├── mha_prologue_fusion.cpp # MHA prologue fusion
│ ├── mmdit_combine_modal.cpp
│ ├── pattern_rewriter.cpp
│ ├── peephole.cpp
│ ├── peephole_epilogue_fusion.cpp
│ ├── peephole_h_fusion_util.cpp
│ ├── peephole_prologue_fusion.cpp
│ ├── quantize_lowering.cpp
│ ├── quantize_ppg.cpp
│ ├── reduce_copy_fusion.cpp
│ ├── reduce_fusion_base.cpp
│ ├── refit.cpp
│ ├── replace_empty_input_with_zeros.cpp
│ ├── replicate_ppg.cpp
│ ├── reset_elim.cpp
│ ├── reshape_mapping.cpp
│ ├── reshape_ppg_1d_conv.cpp
│ ├── reshape_ppg.cpp
│ ├── resize_lowering.cpp
│ ├── scan_fusion.cpp
│ ├── sequence_lowering.cpp
│ ├── shape_call_lowering.cpp
│ ├── shape_graph_opt.cpp
│ ├── simplify_attention_op.cpp # Attention simplification
│ ├── slice_fill_conv_fusion.cpp
│ ├── slice_fusion.cpp
│ ├── slice_lowering.cpp
│ ├── speed_of_light.cpp
│ ├── split_slice_elim.cpp
│ ├── stream_sched.cpp
│ ├── subgraph_rewriter.cpp
│ ├── symbolic_global_padding.cpp
│ ├── symbolic_global_padding_impl.cpp
│ ├── synthesize_inst.cpp
│ ├── tactic.cpp
│ ├── tactics_tiled_layout.cpp
│ ├── transform_batch_matmul.cpp
│ ├── transform_multi_batch.cpp
│ ├── transpose_fusion.cpp
│ ├── transpose_ppg.cpp
│ ├── tunable_graph.cpp
│ └── wrap_attention_op_in_kgen.cpp # Wrap attention in kgen
└── executor/
├── analysis/user-buffer.cpp
└── instruction/cask_fusion.cpp
```

*Total: 576 source file paths leaked*

---