How nvlabs/nvbitfi works
NVBitFI is a GPU fault-injection campaign framework for evaluating application resilience. Its main workflow profiles a workload, selects dynamic instruction sites and fault models, executes individual instrumented runs, classifies outcomes, and summarizes campaign results. The graph also preserves the separate PF injector and instruction-group/model definitions. The README documents several capabilities whose implementation was not sampled; those subsystems are represented at their supported directory paths, with uncertain wiring omitted.
Main entry points: run_one_injection.py Single injection run · parse_results.py Result parser · common_functions.py Profile and environment helpers · run_profiler.py Profiler runner
Components 22
Campaign orchestration
- Profiler runner
scripts/run_profiler.py - Instruction profile
scripts/common_functions.py - Site list generator
scripts/generate_injection_list.py - Injection site lists
scripts/generate_injection_list.py - Campaign dispatcher
scripts/run_injections.py - Single injection run
scripts/run_one_injection.py - Profile and environment helpers
scripts/common_functions.py
GPU instrumentation
- Instruction profiler
profiler/profiler.cu - Instruction injector
injector/injector.cu - Groups and fault models
common/arch.h - Injection parameters
injector/injector.h - PF injector variant
pf_injector/pf_injector.cu - PF injection state
pf_injector/pf_injector.h
Results analysis
- Run outputs and logs
scripts/run_one_injection.py - Outcome classification
scripts/run_one_injection.py - Result parser
scripts/parse_results.py - Campaign summaries
scripts/parse_results.py
Workload and configuration
- GPU workload
test-apps/simple_add/simple_add.cu - Workload run/check
test-apps/simple_add/run.sh - Campaign parameters
scripts/params.py
Other components
- Campaign operator
- NVBit
Connections 34
- Campaign operator → Profiler runner: starts profiling
- Profiler runner → Profile and environment helpers: sets environment
- Profiler runner → Workload run/check: runs workload
- Workload run/check → GPU workload: launches
- Profiler runner → Instruction profiler: preloads
- Instruction profiler → NVBit: instruments kernels
- Instruction profiler → Instruction profile: writes counts
- Campaign operator → Site list generator: generates sites
- Site list generator → Campaign parameters: reads settings
- Site list generator → Profile and environment helpers: reads profile
- Profile and environment helpers → Instruction profile: reads counts
- Site list generator → Injection site lists: writes selections
- Campaign operator → Campaign dispatcher: launches campaign
- Campaign dispatcher → Campaign parameters: reads settings
- Campaign dispatcher → Injection site lists: reads selections
- Campaign dispatcher → Single injection run: dispatches jobs
- Single injection run → Campaign parameters: reads configuration
- Single injection run → Injection parameters: writes parameters
- Single injection run → Profile and environment helpers: sets environment
- Single injection run → Workload run/check: runs workload
- Workload run/check → Instruction injector: preloads
- Instruction injector → NVBit: instruments kernels
- Instruction injector → Groups and fault models: uses definitions
- Instruction injector → Injection parameters: uses run state
- Single injection run → Run outputs and logs: records outputs
- Single injection run → Outcome classification: classifies run
- Outcome classification → Run outputs and logs: checks outputs
- Campaign operator → Result parser: parses campaign
- Result parser → Campaign parameters: reads settings
- Result parser → Run outputs and logs: reads results
- Result parser → Profile and environment helpers: reads profile counts
- Result parser → Campaign summaries: writes TSV summaries
- PF injector variant → NVBit: instruments kernels
- PF injector variant → PF injection state: uses run state