Preflight checks configuration file reference for Cluster Validation Suite (CVS)#
2026-10-27
5 min read time
The preflight checks validate cluster health and configuration consistency before
running performance tests, RCCL training, or inference workloads. Checks include
GPU node health, optional MI4XX scale-up fabric admission, IFoE L2 and
TransferBench gates, RDMA inventory and connectivity, and Node Smoke
Tier 1, Tier 2, and Tier 3 Primus checks. The Node Smoke tiers run
by default. Set connectivity_mode to "skip" (and tier2_perf to
false for Tier 2) to disable one.
Configuration file location: cvs/input/config_file/preflight/preflight_config.json
For the full parameter reference, examples, and troubleshooting, see README_preflight_config.md in the repository.
Run preflight checks#
Use the following commands to run the full preflight suite or individual Node Smoke tiers.
cvs run preflight_checks \
--cluster_file cluster.json \
--config_file cvs/input/config_file/preflight/preflight_config.json
Run individual Node Smoke tiers:
cvs run preflight_checks test_node_smoke_tier1 \
--cluster_file cluster.json \
--config_file preflight_config.json
cvs run preflight_checks test_node_smoke_tier3 \
--cluster_file cluster.json \
--config_file preflight_config.json
Configuration structure#
preflight/
├── node_check/ # GPU visibility, ROCm, optional MI4XX fabric
├── connectivity_check/
│ ├── rdma/ # GID, interfaces, ibv_rc_pingpong connectivity
│ └── ifoe/ # L2 ping and TransferBench smoketest
├── node_smoke_tier1/ # Node Smoke Tier 1/2 (Primus node_smoke)
├── node_smoke_tier3/ # Node Smoke Tier 3 (Primus preflight --host --gpu --network)
├── reporting/ # HTML report and artifact paths
└── debug/ # ScriptLet and troubleshooting options
Legacy keys node_smoke and tier3_info are normalized to
node_smoke_tier1 and node_smoke_tier3 at load time.
Node Smoke tiers#
Node Smoke checks run by default. Set a tier’s connectivity_mode to
"skip" to disable it, or set node_smoke_tier1.tier2_perf to false
to disable Tier 2 only. Preflight reports each tier separately in the
console summary and HTML report. The console count is the number of checks
Primus reported, not a fixed catalog size.
Tier |
Config |
Primus command |
Count (8 GPU) |
|---|---|---|---|
Tier 1 |
|
|
one row per GPU plus 7 collectors |
Tier 2 |
|
|
GEMM and HBM per GPU, plus local RCCL |
Tier 3 |
|
|
host, GPU, and network groups |
Tier 1 and Tier 2 counts are per node (the summary does not multiply by node count). Tier 3 is cluster-wide. A row is passed only when Primus reported that check. A node-level pass does not mark unreported checks as passed.
Example console output:
✅ Node Smoke Tier 1: PASS - 2/2 nodes passed Node Smoke Tier 1; 15 tests run per node
✅ Node Smoke Tier 2: PASS - 2/2 nodes passed Node Smoke Tier 2; 17 tests run per node
✅ Node Smoke Tier 3: PASS - 2/2 nodes passed Node Smoke Tier 3; 3 tests run cluster-wide
Sample configuration#
Note
In this configuration file, {user-id} is resolved to the current username
at runtime.
Minimal Node Smoke Tier 1 + Tier 3
{
"preflight": {
"node_smoke_tier1": {
"connectivity_mode": "run",
"auto_setup": true,
"primus_dir": "/home/{user-id}/INSTALL/Primus",
"venv_activate": "/home/{user-id}/envs/preflight/.venv/bin/activate",
"gpus_per_node": 8
},
"node_smoke_tier3": {
"connectivity_mode": "run",
"ssh_timeout": 600
},
"reporting": {
"artifacts_root_dir": "/home/{user-id}/preflight"
}
}
}
Key parameters#
Node check (node_check)#
enabled— GPU visibility, AMDGPU/KFD, kernel health, ROCm validationgpus_per_node— Expected GPU count on every nodeexpected_rocm_version— ROCm version string (must matchamd-smi version)
RDMA connectivity (connectivity_check.rdma)#
connectivity_mode—"basic","full_mesh", or"skip"interfaces— Expected RDMA device names on all nodesgid_index— GID index validated on those interfacesgid_type— Expected sysfs GID type (default"RoCE v2");"any"disables type checking, and InfiniBand link layers are exemptmtu_check— Enable RDMA active MTU validation, plus jumbo-frame netdev MTU validation on RoCE ports (defaulttrue)min_netdev_mtu/min_active_mtu— Minimum netdev MTU on RoCE ports (default4200; InfiniBand ports are exempt) and active MTU on all ports (default4096);0disables either thresholdibv_test_timeout/ibv_test_port_range—ibv_rc_pingpongtest tuning
Node Smoke Tier 1 (node_smoke_tier1)#
connectivity_mode—"run"or"skip"(default"run")auto_setup— Clone Primus and create venv before runningprimus_dir/venv_activate— Required whenconnectivity_modeis"run"tier2_perf— Node Smoke Tier 2 perf sanity checks (defaulttrue)gemm_tflops_min/hbm_gbs_min/rccl_gbs_min— Tier 2 thresholds
Node Smoke Tier 3 (node_smoke_tier3)#
connectivity_mode—"run"(default) or"skip"(independent of Tier 1)primus_dir/venv_activate— Optional; empty inherits from Tier 1dist_timeout_sec—torch.distributedinit timeoutreport_file_name— Base name for Primus markdown report (defaultnode_smoke_tier3)