Documentation
¶
Index ¶
- func CategoryMNNVL(cert *nvcrev1alpha1.Certification, i int) string
- func CertFailedNodes(ctx context.Context, c client.Client, cert *nvcrev1alpha1.Certification) []string
- func FailedNodesFromRef(ctx context.Context, c client.Client, namespace string, ...) []nvcrev1alpha1.FailedNode
- func PopulateCategoryFromWorkflow(ctx context.Context, c client.Client, cat *CategoryReport, ...)
- func Print(w io.Writer, r *CertReport)
- func PrintMulti(w io.Writer, reports []*CertReport)
- func WriteJSON(path string, reports []*CertReport) error
- type BandwidthRow
- type CategoryReport
- type CertReport
- type CliqueReport
- type DiagnoseReport
- type DiagnoseTestRow
- type DomainReport
- type FailedGroupReport
- type GroupBandwidthRow
- type IterationReport
- type NodeResultReport
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CategoryMNNVL ¶
func CategoryMNNVL(cert *nvcrev1alpha1.Certification, i int) string
CategoryMNNVL returns the MNNVL label for the category at index i of the Certification's status: "Enabled", "Disabled", or "" when unknown. Per-category spec options take precedence over the global spec value.
func CertFailedNodes ¶
func CertFailedNodes(ctx context.Context, c client.Client, cert *nvcrev1alpha1.Certification) []string
CertFailedNodes returns the deduped union of failed node names across all categories, resolved from each category's nodeResultsRef ConfigMap.
func FailedNodesFromRef ¶
func FailedNodesFromRef( ctx context.Context, c client.Client, namespace string, ref *corev1.TypedLocalObjectReference, ) []nvcrev1alpha1.FailedNode
FailedNodesFromRef resolves a nodeResultsRef to its failed-nodes list by fetching the referenced ConfigMap and decoding the failed-nodes entry.
func PopulateCategoryFromWorkflow ¶
func PopulateCategoryFromWorkflow( ctx context.Context, c client.Client, cat *CategoryReport, wf *nvcrev1alpha1.Workflow, )
PopulateCategoryFromWorkflow fills in category metrics from a Workflow and its children.
func Print ¶
func Print(w io.Writer, r *CertReport)
Print writes the formatted report to the given writer.
func PrintMulti ¶
func PrintMulti(w io.Writer, reports []*CertReport)
PrintMulti writes one or more certification reports. A single cert uses the original layout; multiple certs get section separators.
func WriteJSON ¶
func WriteJSON(path string, reports []*CertReport) error
WriteJSON serializes the report as JSON and writes it to the given path. Called when CRE_RESULTS_FILE is set, allowing programmatic consumers (e.g. k8s-platform-validator) to read structured results without log parsing.
Types ¶
type BandwidthRow ¶
type BandwidthRow struct {
Size string `json:"size"` // human-readable size
AlgBW string `json:"algBW"`
BusBW string `json:"busBW"`
Samples int `json:"samples"`
}
BandwidthRow holds bandwidth results for a single message size.
type CategoryReport ¶
type CategoryReport struct {
Domain string `json:"domain"`
Variant string `json:"variant"`
Status string `json:"status"`
FailureReason string `json:"failureReason,omitempty"` // populated from Workflow Failed condition message
Runtime string `json:"runtime,omitempty"` // total runtime across all iterations
TestScale string `json:"testScale,omitempty"`
NodesPerJob int `json:"nodesPerJob,omitempty"`
Jobs int `json:"jobs,omitempty"`
MNNVL string `json:"mnnvl,omitempty"` // "Enabled", "Disabled", or "" (unknown)
// FailedGroups lists groups that failed with their reason.
FailedGroups []FailedGroupReport `json:"failedGroups,omitempty"`
// Cliques lists topology domains with node counts and validation status.
Cliques []CliqueReport `json:"cliques,omitempty"`
// Training metrics grouped by topology domain.
Domains []DomainReport `json:"domains,omitempty"`
// Communication bandwidth results (single-group: one row per size).
Bandwidth []BandwidthRow `json:"bandwidth,omitempty"`
// Per-group bandwidth results (multi-group: one row per group).
GroupBandwidth []GroupBandwidthRow `json:"groupBandwidth,omitempty"`
// Diagnose results from adaptive fault isolation.
Diagnose *DiagnoseReport `json:"diagnose,omitempty"`
// Iterations shows per-iteration timing and outcome.
Iterations []IterationReport `json:"iterations,omitempty"`
}
CategoryReport holds metrics for a single certification category.
type CertReport ¶
type CertReport struct {
Title string `json:"title,omitempty"` // defaults to "Certification Report"
Name string `json:"name"`
Platform string `json:"platform"`
GPU string `json:"gpu"`
TotalNodes int `json:"totalNodes"`
// ExcludedNodes lists nodes that matched the target but were left
// untested, with ExclusionReason saying why. A run reports PASSED even
// when it excludes nodes, so these keep that from being invisible.
ExcludedNodes []string `json:"excludedNodes,omitempty"`
ExclusionReason string `json:"exclusionReason,omitempty"`
Categories []CategoryReport `json:"categories"`
FailedNodes []string `json:"failedNodes"`
Result string `json:"result"` // "PASSED", "INCOMPLETE", "FAILED", or "RUNNING"
NodeResults []NodeResultReport `json:"nodeResults,omitempty"`
}
CertReport holds all data needed to render the certification report.
func Build ¶
func Build(ctx context.Context, c client.Client, cert *nvcrev1alpha1.Certification) *CertReport
Build fetches Workflow and measurement data for a Certification (completed or running).
type CliqueReport ¶
type CliqueReport struct {
Name string `json:"name"`
Total int `json:"total"` // total nodes in this clique
Validated int `json:"validated"` // nodes that passed
Passed bool `json:"passed"`
}
CliqueReport holds per-clique validation status.
type DiagnoseReport ¶
type DiagnoseReport struct {
Stage string `json:"stage"`
Rounds int `json:"rounds"`
HealthyCount int `json:"healthyCount"`
SuspectCount int `json:"suspectCount"`
ConfirmedFaulty []string `json:"confirmedFaulty,omitempty"`
InfrastructureFaults []nvcrev1alpha1.InfrastructureFault `json:"infrastructureFaults,omitempty"`
ScreeningResults map[string]nvcrev1alpha1.DomainScreeningResult `json:"-"` // not serialized, used for rendering
MaxBW string `json:"maxBW,omitempty"`
MaxBWDomain string `json:"maxBWDomain,omitempty"`
MaxBWNodeList []string `json:"maxBWNodes,omitempty"`
MinBW string `json:"minBW,omitempty"`
MinBWDomain string `json:"minBWDomain,omitempty"`
MinBWNodeList []string `json:"minBWNodes,omitempty"`
Tests []DiagnoseTestRow `json:"tests,omitempty"`
}
DiagnoseReport holds results from the adaptive fault isolation algorithm.
type DiagnoseTestRow ¶
type DiagnoseTestRow struct {
Stage string `json:"stage"` // screening, bisection, confirmation
Name string `json:"name"` // job name
Nodes []string `json:"nodes"` // nodes in the group
Domain string `json:"domain,omitempty"` // clique/domain for screening tests
BusBW string `json:"busBW"` // peak bus bandwidth
Passed bool `json:"passed"` // job succeeded
}
DiagnoseTestRow holds one test result from the diagnose algorithm.
type DomainReport ¶
type DomainReport struct {
Name string `json:"name"` // e.g., "clique-0" or "" for no-topology case
NodeCount int `json:"nodeCount"`
Goodput string `json:"goodput"` // runtime goodput ratio
TFLOPs string `json:"tflops"` // avg TFLOPs per GPU
StepTime string `json:"stepTime"` // avg step time
}
DomainReport holds averaged training metrics for a topology domain.
type FailedGroupReport ¶
type FailedGroupReport struct {
Name string `json:"name"`
NodeCount int `json:"nodeCount"`
Nodes []string `json:"nodes,omitempty"`
Reason string `json:"reason"` // e.g., "BackoffLimitExceeded (72 pods failed)"
}
FailedGroupReport holds details about a failed orchestration group.
type GroupBandwidthRow ¶
type GroupBandwidthRow struct {
GroupName string `json:"groupName"` // e.g., "group-0" or "clique-0 (18 nodes)"
Nodes []string `json:"nodes"` // node names in the group
BusBW string `json:"busBW"` // peak BusBW at largest message size
BelowMin bool `json:"belowMin"` // true if below minBusBandwidthGBps threshold
Failed bool `json:"failed"` // true if the group's Job failed
}
GroupBandwidthRow holds bandwidth for a single group in multi-group Workflows.
type IterationReport ¶
type IterationReport struct {
Number int `json:"number"`
Status string `json:"status"` // Succeeded, Failed, Running
Duration string `json:"duration"` // e.g., "5m 30s"
}
IterationReport holds per-iteration timing and outcome.