Skip to content

Flag 家族

本页所有地址、符号和计数都适用于 libtpu-0.0.40-cp314 wheel 中的 libtpu.so(构建 libtpu_lts_20260413_b_RC00,build-id md5 89edbbe81c5b328a958fe628a9f2207d,781,691,048 字节,ELF x86-64 DYN,未 strip)。其他版本会不同。

摘要

libtpu 注册了约 2048 个 absl::Flag<T> FLAGS_<name> 全局对象,并且每个 flag 名称都带有一个并非装饰性的前缀:前缀是路由键,它决定哪个 config structure 消费该 flag、哪个子系统拥有它,以及——对于带 codename 前缀的家族——该旋钮作用域属于哪一代 TPU。本页是 prefix → owner / routing map:约 18 个前缀命名空间的分类,说明每个属于什么子系统,前缀是否路由到 xla::DebugOptions、路由到 TpuCompilationEnvironment(TCE)、或路由到独立 runtime flag,并且关键地给出哪些家族是 TPU-live、哪些是 inherited-from-XLA-but-inert

参考框架是 XLA 自己的 flag system。上游 XLA 在 CPU、GPU 和 TPU 后端之间共享一个 DebugOptions proto,flag 通过两个不同站点注册:MakeDebugOptionsFlags(mangled MakeDebugOptionsFlagsEPNS_,存在于二进制中)把通用 xla_* flag 接到 DebugOptions 字段上,而 TPU 构建加入了第二个大得多的表面——xla_tpu_* / codename 家族——它们落入 TPU 私有 TCE,完全不接触 DebugOptions。TPU 构建在共享 proto descriptor 中保留了 GPU/CPU 字段名,但注册了零个 xla_gpu_* / xla_cpu_* flag(字节级确认:零个 AbslFlagHelpGenForxla_gpu_* 符号)。枚举 DebugOptions 字段的重新实现者会看到约 275 个 xla_gpu_* 和约 64 个 xla_cpu_* 字符串,但背后没有 flag——这是 inert metadata,不是 live knobs。

本页是分类和路由图。它不重新列出逐 flag 目录——那是 flat atlas。它不负责 TpuVersion 感知的 prefix-strip/select 机制——那是 flag-prefix-dispatch.md。它不负责 proto 内部结构——那些是 debugoptions-proto.mdtpu-compilation-environment.md。它负责的是 prefix → owner 分类以及每个家族 live-vs-inert 的判定

对重新实现来说,契约是:

  • prefix → owner 路由表——对约 18 个前缀中的每一个,给出注册站点、它落入的 config struct(DebugOptions vs TCE vs standalone),以及消费它的子系统。
  • codename 家族模型——jf / pf / vf / gf 是按 TpuVersion 划分的代际命名空间(Jellyfish / Pufferfish / Viperfish / 6acc60406),每个都携带作用域属于不同代际的同一组 VMEM/MSA knob 名称,并且目录中提到的 gl codename 在此构建中不存在
  • live-vs-inert 分类——哪些家族拥有已注册的 AbslFlagHelpGenFor 符号(live,可通过 LIBTPU_INIT_ARGS 设置),哪些仅作为 proto descriptor 字符串保留(在 TPU 上 inert)。
权威计数方法AbslFlagHelpGenFor<name> mangled symbols——每个已注册 absl::Flag 一个
xla_*(generic)注册站点MakeDebugOptionsFlagsMakeDebugOptionsFlagsEPNS_,176 个字符串引用)→ DebugOptions
TCE flag→field bridgeOverrideTpuCompEnvByCmdLineFlags @ 0x1d73e640 · SetFieldFromFlagString @ 0x1d73fcc0 · CreateDefaultTpuCompEnv @ 0x1d73dfa0
DebugOptions baselineDefaultDebugOptionsIgnoringFlags @ 0x1e66a860
已注册 flag 总数~2048 个 FLAGS_<name> 全局;2107 个不同名称(含 rodata-only aliases)
Inert(零注册)xla_gpu_*(0 flags / 275 strings),xla_cpu_*(0 flags / 64 strings)
存在的 codename 家族jf 148,vf 16,gf 14,pf 1——gl 缺失
置信度除非某行另有说明,否则为 CONFIRMED(在二进制中统计 registration symbols)

1. 路由问题

目的

一个 flag 前缀一次回答三个问题;其中任何一个弄错,都会让重新实现者追逐一个不存在的字段,或交付一个悄悄 inert 的旋钮。这三个问题是:(1) 这个 flag 在 TPU 上是否真的注册? (2) 哪个 config struct 存储它的值? (3) 哪个子系统读取它? 本节建立路由框架;§2–§3 给出每个家族的答案。

三个 sink

每个已注册 flag 的值都恰好落在三个位置之一。前缀是判别器:

text
PREFIX                         SINK                            REGISTRATION SITE
──────                         ────                            ─────────────────
xla_* (generic, non-tpu)   →   xla::DebugOptions field     →   MakeDebugOptionsFlags
                               (290-field DebugOptions)         (MakeDebugOptionsFlagsEPNS_)

xla_tpu_* / xla_jf_*       →   TpuCompilationEnvironment   →   per-flag FLAGS_<name> ctor,
xla_sc_* / xla_msa_*           field (1:1 flag↔field)           bridged by
xla_gf_* / xla_vf_* / …                                         OverrideTpuCompEnvByCmdLineFlags
barna_core_*                                                    + SetFieldFromFlagString

megascale_* / tpu_* / tf_* →   standalone absl::Flag       →   per-flag FLAGS_<name> ctor;
                               (no proto; read directly)        DCN runtime / driver / TF bridge
```text

第四种非 sink 情况是 **inert** 家族:名称存在于二进制的 `.rodata` 中(作为 `DebugOptions` proto field tag 或错误字符串),但没有 `FLAGS_<name>` 全局对象,也没有 `AbslFlagHelpGenFor` 符号。`xla_gpu_*` 和 `xla_cpu_*` 构成了这一类的全部。

> **陷阱 —** 前缀 `xla_` *不是*单一家族。名为 `xla_foo`(generic)的 flag 是 `DebugOptions` 字段,但 `xla_tpu_foo`、`xla_jf_foo`、`xla_sc_foo`、`xla_msa_foo`、`xla_gf_foo`、`xla_vf_foo`、`xla_hlo_foo`、`xla_llvm_foo`、`xla_mosaic_foo`、`xla_ior_foo`、`xla_llo_foo` 和 `xla_gpu_foo` 各自的路由都不同。只剥掉开头 `xla_` 并统一处理剩余部分的重新实现者,会把 1100+ 个 TCE flag 路由到错误的 proto。路由键是*第二个* token,而不是第一个。

### 计数方法——为什么这些数字是权威的

本页的逐家族计数**不是**原始字符串 grep(那些会因为相邻 `.rodata` 字面量产生 1–2 位数字拼接噪声后缀,例如 `xla_jf_accumulation_reassociation8`)。它们是 Itanium-mangled `_ZN<len>AbslFlagHelpGenFor<name>8NonConstEv` 符号的计数,每个已注册 `absl::Flag<T>` 都会发出一个这样的符号。在剥掉尾部数字噪声后,`AbslFlagHelpGenForxla_jf_*` 正好得到 148 个不同名称——与目录中的去重计数一致。同一方法给出每个前缀干净、注册真实的计数;一个前缀如果有**零**个此类符号,按构造它在此构建中就没有接入 flag。

---

## 2. 核心 XLA 家族(路由到 `DebugOptions` 且为 generic)

这些前缀继承自上游 XLA。有些在 TPU 上 live;有些只作为共享 proto metadata 保留。

### `xla_*` — generic XLA,`DebugOptions` proto

普通 `xla_*` 前缀(没有识别出的第二 token)是 generic XLA flag 家族:**112** 个不同已注册名称(去重后的 `AbslFlagHelpGenForxla_*`,与下面各自成行的 `tpu`/`jf`/`sc`/`gpu`/`cpu`/`msa`/`gf`/`vf`/`pf`/`ior`/`mosaic`/`llo`/`hlo`/`llvm` 第二 token 家族不重叠)。每个都按 1:1 名称映射到 `DebugOptions` 字段(`--xla_foo` ↔ field `xla_foo`),由 `MakeDebugOptionsFlags` 注册。在 libtpu descriptor 的 **290** 个 `DebugOptions` wire-fields 中,只有 **2** 个接到了已注册的 standalone `absl::Flag`(`xla_tpu_detect_nan` (135)、`xla_tpu_detect_inf` (136));其余——包括这些 generic `xla_*` 字段——是通过 PJRT `CompileOptions.debug_options` proto 路径到达的,而不是 standalone flag 表面(完整拆分见 [debugoptions-proto.md](debugoptions-proto.md))。全默认 baseline 是 `DefaultDebugOptionsIgnoringFlags @ 0x1e66a860`。此家族覆盖跨后端关注点:scheduler(`xla_latency_hiding_scheduler_*`)、MSA(`xla_enable_cross_program_prefetch`)、collectives(`xla_enable_async_all_reduce`)、dump/trace(`xla_enable_hlo_trace`),以及 `xla_backend_extra_options` string→string escape-hatch map。详细归属见 [debugoptions-proto.md](debugoptions-proto.md)。

### `xla_hlo_*` — HLO-level passes(拆分:live + proto-only)

`xla_hlo_*` 是一个*拆分*家族。5 个名称是 live registered flags(字节级确认的 `AbslFlagHelpGenForxla_hlo_*` 符号):`xla_hlo_scheduling_brkga_{computation_limit,generation_limit,enable_as_fallback,compute_runtime_estimates}`(BRKGA genetic-scheduler 调优子家族)和 `xla_hlo_parse_memory_schedule_from_file`。这些注册为 HLO scheduler 读取的 standalone `absl::Flag` 全局,而不是 TCE 字段。另外,`xla_hlo_print_inline_stack_frames` 作为 *proto-only* `DebugOptions` 字段存在(无 flag)——这是 TPU 后端未接线的 generic XLA dump plumbing。

> **注意 —** `xla_hlo_*` 是“前缀是否在 proto 中?”和“前缀是否是 flag?”彼此独立的最清楚例子。HLO scheduler knobs 是 live flags,但*不是* `DebugOptions` 字段;`xla_hlo_print_inline_stack_frames` 是 `DebugOptions` 字段,但*不是* flag。单靠前缀无法决定 sink。(CONFIRMED——5 个 registration symbols vs [debugoptions-proto.md](debugoptions-proto.md) 中列出的 proto-only 字段。)

### `xla_llvm_*` — LLVM-backend passes(拆分:live + proto-only)

`xla_llvm_*` 与 `xla_hlo_*` 类似。4 个名称是 live registered flags:`xla_llvm_isa_emitter`、`xla_llvm_isa_emitter_bundles`、`xla_llvm_isa_emitter_force`、`xla_llvm_generate_xla_compatible_dwg`——TPU 的 LLVM/LLO ISA-emission 路径。上游 generic 的 `xla_llvm_disable_expensive_passes` 仅作为 proto-only `DebugOptions` 字段保留(无 TPU flag)。因此 *live* 的 `xla_llvm_*` flags 是 TPU 专属 ISA emitter 控制,而不是名称暗示的 generic LLVM pass gate。

### `xla_gpu_*` 和 `xla_cpu_*` — inherited,INERT

这些是 inert 家族。二进制包含约 275 个 `xla_gpu_*` 和约 64 个 `xla_cpu_*` 字符串——但 **零个** `AbslFlagHelpGenForxla_gpu_*` 和 **零个** `AbslFlagHelpGenForxla_cpu_*` registration symbols。这些字符串是共享 `DebugOptions` proto descriptor 的 field tags(例如 `xla_gpu_command_buffer_scheduling_mode`、`xla_gpu_enable_split_k_autotuning`、`xla_cpu_enable_platform_dependent_math`),再加上 GPU/CPU 后端使用的 22 个 nested-enum 名称。在 TPU 上它们是无用负载:libtpu 填充的 `DebugOptions` 会以 proto 默认值携带这些字段,但没有 flag 可以设置它们,也没有 TPU consumer 读取它们。

| Family | Strings in binary | Registered flags | Verdict |
|---|---:|---:|---|
| `xla_gpu_*` | ~275 | **0** | INERT — 仅 `DebugOptions` 字段名 |
| `xla_cpu_*` | ~64 | **0** | INERT — 仅 `DebugOptions` 字段名 |

> **怪癖 —** TPU 构建在 descriptor pool 中携带了*整个* GPU/CPU `DebugOptions` 字段集,但剥掉了所有 GPU/CPU flag wiring。这是上游 XLA one-proto-for-all-backends 设计在 TPU-only 二进制中的残留。枚举 proto 的重新实现者会找到 17 个 proto-only 字段(在 [debugoptions-proto.md](debugoptions-proto.md) 中列举的 GPU/CPU/generic 子集);没有一个可从 `LIBTPU_INIT_ARGS` 到达。不要实现 `xla_gpu_*` 解析——没有任何东西可供它解析。(CONFIRMED——零 registration symbols。)

---

## 3. TPU 私有家族(路由到 TCE)

这些前缀是 TPU 专属的。每一个都是已注册 flag,其值通过 `OverrideTpuCompEnvByCmdLineFlags @ 0x1d73e640` bridge 1:1 落入 `TpuCompilationEnvironment` 字段。它们都不是 `DebugOptions` 字段。

### `xla_tpu_*` — 主 TPU 表面

占主导地位的家族:**909 个已注册 flags**(`AbslFlagHelpGenForxla_tpu_*` 符号;目录中的 968-distinct union 额外计入 rodata-only aliases 和只出现在错误消息中的引用)。每个 `xla_tpu_*` flag 都按名称成为 TCE 字段。该家族横跨整个 TPU compiler 和 runtime:scheduler(LHS/ILP/BRKGA/Dozer/LEM)、MSA(scoped VMEM/CMEM、prefetch)、fusion(rwb/dot-dot/nested-dot/MRB)、ICI collectives、numerics、layout、dot/conv、autotune/AutoFDO,以及 debug/dump。每组的 subsystem keyword taxonomy 和代表性 flags 见 [xla-flag-atlas.md](xla-flag-atlas.md)。这些 flag 背后的 TCE 字段中约 330 个是 `AutoProto` tri-state knobs(通过 `AutoOr<T>` 解析),详见 [overview.md](overview.md) §4。

### Codename 家族 — `jf` / `pf` / `vf` / `gf`(按 `TpuVersion`)

最有特色的路由事实是:四个前缀是 **TPU 代际 codename**,每个携带一组*并行* knob 名称,作用域属于某个 `TpuVersion`。这些 codename 在二进制中确认为 `JELLYFISH`、`PUFFERFISH`、`VIPERFISH`、`DRAGONFISH` token。

| Prefix | Codename | Registered | Role |
|---|---|---:|---|
| `xla_jf_*` | Jellyfish | 148 | TPU XLA backend 命名空间(compiler core,所有代际) |
| `xla_vf_*` | Viperfish | 16 | 按代际的 VMEM / MSA overrides |
| `xla_gf_*` | (6acc60406 / v7x TPU7x, `gxc::gfc`) | 14 | 按代际的 VMEM / MSA overrides |
| `xla_pf_*` | Pufferfish | 1 | `xla_pf_enable_nd_allreduce`(ND all-reduce gate) |

`vf` / `gf` 家族几乎逐名称相同——它们是按代际复制的*同一组* memory-subsystem knobs。比较这些字节级确认名称:

```text
xla_gf_max_vmem_used_by_memory_space_assignment        ┐
xla_vf_max_vmem_used_by_memory_space_assignment        ├─ same knob, different gen

xla_gf_vmem_default_cross_program_prefetch_heuristic   ┐
xla_vf_vmem_default_cross_program_prefetch_heuristic   ├─ same knob, different gen

xla_gf_vmem_enable_cross_program_prefetch              ┐
xla_vf_vmem_enable_cross_program_prefetch              ┘
xla_vf_allow_split_vmem  ·  xla_vf_allow_replicated_vmem_writes  (vf-only)

这是 TpuVersion 感知 overlay 的静态表面:per-codename MSA overlay(baseline ⊕ family-overlay,v0/1→jf,v2→cmem,v3→vf,v4/5→gf)会按代际改写一组 TCE 字段。解析编译时应用哪个 codename 家族的 prefix-strip/version-select 分派由 flag-prefix-dispatch.md 负责。

注意 — xla_gf_*(14)不是唯一的 per-gen VMEM 家族。Registration-symbol 计数显示还共存一个 16-flag 的 xla_vf_* 家族(Viperfish)和一个 1-flag 的 xla_pf_*(Pufferfish),二者都携带相同的 VMEM/MSA knob 名称(存在 AbslFlagHelpGenForxla_{vf,pf}_* 符号)。这三个都是真实的、字节级确认的 codename 家族。

陷阱 — 此构建中不存在 gl codename 家族——零个 xla_gl_* 字符串,零个 AbslFlagHelpGenForxla_gl_* 符号。重新实现者不得为它保留路由分支。live codename set 是 {jf, pf, vf, gf}

xla_sc_*barna_core_* — SparseCore / embedding

xla_sc_*(92 个已注册)是 SparseCore LLVM-backend compiler 家族:instruction fusion、latency-hiding scheduler、tile/SCS overlays、stack eliding、HBM optimization,以及 xla_sc_dump_* debug 表面。barna_core_*(61 个已注册)是 BarnaCore embedding-engine runtime 家族——HBM fraction budgets、row-sharding limits、partitioner objectives、profiler intervals。二者都路由到 TCE。注意 barna_core_* 完全没有 xla_ 前缀,但仍路由到 TCE:路由键是已识别的 family token,而不是开头的 xla_xla_sc_* codegen 关系从 tpu-compilation-environment.md 交叉引用。

xla_msa_*xla_gf_*xla_ior_*xla_mosaic_*xla_llo_* — 窄 TCE 命名空间

PrefixRegisteredOwner / roleSink
xla_msa_*22Memory-Space-Assignment(专用命名空间:prefetch ratios、eviction/repack caps、IOR algorithm)TCE
xla_gf_*146acc60406/v7x VMEM/MSA overrides(codename,见 §3)TCE
xla_vf_*16Viperfish VMEM/MSA overrides(codename,见 §3)TCE
xla_ior_*4"IOR" fast-mem round-trip MSA variantTCE
xla_mosaic_*8Mosaic MLIR custom-kernel dialect controlsTCE
xla_llo_*1xla_llo_annotation_lifecycle_strict_mode(LLO annotation lifecycle)TCE

xla_msa_* 是专用 MSA 命名空间,它补充了 xla_tpu_* MSA flags 和 per-gen xla_{gf,vf}_vmem_* overrides;这三层(xla_msa_* policy、xla_tpu_* scoped limits、per-gen overlay)在 consumer 处组合。


4. Runtime / Standalone 家族(无 proto)

这些家族注册为 runtime 直接读取的普通 absl::Flag 全局——它们既不落入 DebugOptions,也不落入 TCE。

megascale_* — DCN collective runtime

150 个已注册 flags。Megascale data-center-network collective runtime:slice topology(megascale_num_slicesmegascale_slice_idmegascale_coordinator_address)、transport(megascale_transport_typemegascale_grpc_num_channelsmegascale_use_mtls_for_grpc)、watchdog/heartbeat(megascale_enable_watchdogmegascale_heartbeat_{interval,timeout}_ms),以及 abort policy(megascale_error_reporter_abort_on_{error,hang})。这些由 DCN runtime 在执行时读取,而不是由 compiler 读取;它们是没有 proto backing 的 standalone flags。

tpu_* — runtime / cache / driver

69 个已注册 flags。TPU runtime、compilation-cache 和 driver 表面:persistent compilation cache(tpu_persistent_compilation_cache_locationtpu_program_cache_eviction_policy)、driver lifecycle(tpu_deferred_deallocationtpu_driver_callback_watchdog_timeouttpu_link_up_check_timeout)、telemetry/coredump(tpu_core_dump_directorytpu_hbm_report_enable),以及危险的 DANGEROUS_tpu_runtime_abi_verification_disabled。这些是与 compile-time 无关的 runtime knobs。

怪癖 — 尽管共享 tpu 子串,tpu_*(runtime)和 xla_tpu_*(compiler)是不同家族。xla_tpu_foo → TCE compiler field;tpu_foo → standalone runtime flag。小写 libtpu_* 标识符(libtpu_init_utilslibtpu_lockfilelibtpu_versionlibtpu_lts_20260413_b_ build tag)根本不是 flags——它们是 module / translation-unit 名称,并且不存在 AbslFlagHelpGenForlibtpu_* 符号。(CONFIRMED。)

tf_* — TensorFlow-TPU bridge

20 个已注册 flags(例如 FLAGS_tf_jf_*)。旧版 TensorFlow-TPU bridge 表面,由 TF integration layer 读取的 standalone flags。


5. 完整路由图

完整的 prefix → owner / routing / live-vs-inert 表。计数是 registration-symbol-true(AbslFlagHelpGenFor<prefix>);INERT 行显示 string-count / zero-flags。

PrefixRegisteredSubsystem ownerSinkLive?
xla_tpu_*909TPU compiler + runtime(主表面)TCELIVE
megascale_*150Megascale DCN collective runtimestandaloneLIVE
xla_jf_*148Jellyfish — TPU XLA backend coreTCELIVE
xla_*(generic)112Generic XLA(scheduler/MSA/collective/dump)DebugOptionsLIVE(290-field schema)
xla_sc_*92SparseCore LLVM compiler backendTCELIVE
tpu_*69TPU runtime / cache / driverstandaloneLIVE
barna_core_*61BarnaCore embedding-engine runtimeTCELIVE
xla_msa_*22Memory-Space-Assignment namespaceTCELIVE
tf_*20TensorFlow-TPU bridgestandaloneLIVE
xla_vf_*16Viperfish per-gen VMEM/MSATCELIVE
xla_gf_*146acc60406/v7x per-gen VMEM/MSATCELIVE
xla_mosaic_*8Mosaic MLIR custom-kernel dialectTCELIVE
xla_hlo_*5HLO scheduler(BRKGA)+ schedule I/Ostandalone*LIVE(split)
xla_ior_*4IOR fast-mem round-trip MSA variantTCELIVE
xla_llvm_*4LLVM/LLO ISA emitter controlsTCE/standaloneLIVE(split)
xla_pf_*1Pufferfish ND all-reduceTCELIVE
xla_llo_*1LLO annotation lifecycleTCELIVE
xla_gpu_*0(~275 str)(GPU backend — 不在 TPU 上)DebugOptions proto-onlyINERT
xla_cpu_*0(~64 str)(CPU backend — 不在 TPU 上)DebugOptions proto-onlyINERT
xla_gl_*0(0 str)ABSENT

* xla_hlo_* / xla_llvm_* 是拆分家族:有一个 registered-flag 子集(standalone 或 TCE)以及一个 proto-only DebugOptions 子集(见 §2)。"Sink" 单元格命名的是 live 子集的 sink。

注意 — 目录中的 (other / no std prefix) 412-name bucket(静态链接进 libtpu 的 abseil / grpc / protobuf / OR-tools / cp_model 库 flags)有意从此图中省略——那些不是 XLA/TPU flags,并且通过各自库的注册路由,而不是 TPU config pipeline。它们只能附带地像任何 absl flag 一样通过 LIBTPU_INIT_ARGS 设置。

在路由站点阅读此图

flag dispatcher 的重新实现会把 --name[=value] 参数 token 化,并按第一个已识别前缀 token 路由:

c
function RouteFlag(name):                       // models the dispatch implied by the
    tok = SecondToken(name)                      // registration-site split (§1)
    if name starts "megascale_" or "tpu_"
       or name starts "tf_" or "barna_core_":
        return STANDALONE                        // FLAGS_<name>, read by runtime
    if name starts "xla_":
        switch tok:
          case "tpu","jf","sc","msa","gf","vf",  // codename + TPU namespaces
               "pf","ior","mosaic","llo":
              return TCE                          // OverrideTpuCompEnvByCmdLineFlags
          case "gpu","cpu":
              return INERT                        // proto field only, no flag — reject
          case "hlo","llvm":
              return SPLIT                         // some flags standalone/TCE, some proto-only
          default:                                 // plain xla_<concern>
              return DEBUG_OPTIONS                 // MakeDebugOptionsFlags field
    return STANDALONE                              // library flag (abseil/grpc/…)
```text

这是逻辑形状,而不是单个已追踪函数:实际绑定由 `absl::ParseCommandLine` 根据预建的 `FLAGS_<name>` registry 泛型完成,proto 路由发生在 parse 之后(`DebugOptions` 字段通过 proto 自己的 flag wiring,TCE 字段通过 `OverrideTpuCompEnvByCmdLineFlags`)。上面的图决定了哪个 `FLAGS_<name>` 存在,以及什么会消费它。(路由分类为 HIGH confidence;dispatcher 是从 registration-site split 重构的,而不是单个字节追踪到的 switch。)

---

## 相关组件

| Component | Relationship |
|---|---|
| `MakeDebugOptionsFlags`(`…EPNS_`) | 将 generic `xla_*` flags 注册到 `DebugOptions` 上 |
| `OverrideTpuCompEnvByCmdLineFlags @ 0x1d73e640` | 将 TCE-routed 家族(`xla_tpu_*`、codenames、`xla_sc_*`、…)桥接进 TCE |
| `SetFieldFromFlagString @ 0x1d73fcc0` | TCE bridge 使用的逐字段 writer |
| `DefaultDebugOptionsIgnoringFlags @ 0x1e66a860` | `xla_*` 家族的全默认 baseline |
| `AbslFlagHelpGenFor<name>` symbols | 权威的逐家族 registration enumeration |

## 交叉引用

- [overview.md](overview.md) — 三层 pipeline;此图所在的位置(每个家族落入哪个 proto)
- [xla-flag-atlas.md](xla-flag-atlas.md) — 扁平逐 flag 目录;本页按前缀索引的完整名称列表和 subsystem keyword taxonomy
- [flag-prefix-dispatch.md](flag-prefix-dispatch.md) — `TpuVersion` 感知的 prefix-strip/select 机制,以及 per-codename MSA overlay(`jf`/`vf`/`gf` resolution)
- [debugoptions-proto.md](debugoptions-proto.md) — `xla::DebugOptions`:290-field schema,以及 inert 的 `xla_gpu_*`/`xla_cpu_*` carryover fields(只有 2 个字段接了 standalone flag;早先的 "94/111" 拆分已在那里被取代)
- [tpu-compilation-environment.md](tpu-compilation-environment.md) — `xla_tpu_*` / codename / `xla_sc_*` / `xla_msa_*` 家族落入的 TCE master proto
- [registry-mediated-flags.md](registry-mediated-flags.md) — reflection-mediated flag→field bridge(`TpuCompEnvReflection`),通过一条泛型路径服务所有 TCE 家族