Skip to main content

candle_graph/
lib.rs

1//! TensorFlow Profiler-style execution graphs for [Candle](https://github.com/huggingface/candle) runs.
2//!
3//! Record one representative JSONL trace with [`instrument::TraceSession`], qualify its structural
4//! health and evidence capabilities with [`evidence::build_evidence`], and inspect it through the
5//! CLI or, with the `visualizer` feature, [`viewer::render_evidence_html`].
6//!
7//! There is **no static Rust analysis** — the graph comes only from what executed.
8//!
9//! Keep these evidence planes distinct:
10//!
11//! - span duration is host timing unless the producer declares stronger synchronization semantics;
12//! - [`timing`] device intervals retain their own device clock;
13//! - [`trace::memory`] logical storage lifetimes do not imply physical allocator usage; and
14//! - optional [`nsight`] evidence retains the Nsight clock and artifact provenance.
15//!
16//! Failed or structurally invalid captures remain diagnostic but do not produce a derived
17//! [`graph::ExecutionGraph`]. Finalized evidence can be published and deeply verified through
18//! [`artifact`], while eligible repeated timing comparisons require verified bundles through
19//! [`comparison`].
20
21pub mod activation;
22pub mod artifact;
23pub mod campaign;
24pub mod capability;
25pub mod cli;
26pub mod comparison;
27pub mod evidence;
28pub mod graph;
29pub mod instrument;
30pub mod nsight;
31pub mod phase;
32pub mod publication;
33pub mod timing;
34pub mod trace;
35#[cfg(feature = "visualizer")]
36pub mod viewer;
37
38pub use activation::{ActivationOperation, ActivationProfile, ByteNanoseconds};
39pub use artifact::{
40    publish_bundle, verify_bundle, BundleManifest, BundleVerificationReceipt,
41    SCHEMA as BUNDLE_SCHEMA,
42};
43pub use campaign::{
44    build_series, campaign_status, CampaignManifest, CampaignStatus, CaptureState, CaptureStatus,
45    PlannedCapture, SeriesReport, CAMPAIGN_SCHEMA, CAMPAIGN_STATUS_SCHEMA, SERIES_SCHEMA,
46};
47pub use capability::{
48    CaptureContract, CoverageLevel, ExpectedGradient, GradientContract, GradientFamilyContract,
49    GradientFamilyExpectation, MeasurementScope, GRADIENT_MANIFEST_SCHEMA,
50};
51pub use comparison::{
52    compare_unverified_traces, compare_verified_bundles, ComparisonInputVerification,
53    ComparisonInputs, ComparisonReason, ComparisonReasonCode, ComparisonVerdict,
54    ReplicatedComparison, TensorStatsComparison, TensorStatsComparisonRow, VerifiedBundleInput,
55    SCHEMA as COMPARISON_SCHEMA,
56};
57pub use evidence::{build_evidence, EvidencePacket, SCHEMA as EVIDENCE_SCHEMA};
58pub use graph::{build_from_trace, ExecutionGraph, SCHEMA as GRAPH_SCHEMA};
59#[cfg(feature = "candle")]
60pub use instrument::candle;
61pub use instrument::{
62    CaptureSelector, DeviceIntervalRecord, DeviceMemoryRecord, MemoryRecord, OpRecord, ProfileRun,
63    SpanGuard, SpanId, SpanKind, TensorRecord, TraceSession,
64};
65pub use nsight::{GpuEvidenceStatus, NsightEvidence};
66pub use phase::{ExecutionPhase, ExecutionStep};
67pub use publication::{
68    reconcile_published_bundle, CaptureBegin, CaptureRun, PublicationReceipt, PublicationStatus,
69    PUBLICATION_SCHEMA,
70};
71pub use trace::{parse_trace, write_jsonl, TraceDocument, TraceEvent, SCHEMA as TRACE_SCHEMA};
72pub use trace::{ComparisonIdentity, TimingMode};