private static ExplainedInteractionHappinessGrade ValidateOpenfoam(Telemetry telemetry) { if (telemetry?.BenchmarkTelemetry?.OpenfoamTelemetry?.Results == null) { return ExplainedInteractionHappinessGrade.Unacceptable("No telemetry available"); } var thresholds = new Dictionary<int, decimal> { {128, new decimal(8.151072)}, {256, new decimal(8.151072)}, {512, new decimal(8.151072)}, {1024, new decimal(8.151072)} }; var nodesBelowThreshold = telemetry.BenchmarkTelemetry.OpenfoamTelemetry.Results .Where(r => thresholds.ContainsKey(r.Workers) && r.AvgElapsedTimeInSec >= thresholds[r.Workers]) .ToList(); if (nodesBelowThreshold.Any()) { return ExplainedInteractionHappinessGrade.Unacceptable( $"OpenFoam results for the cores {string.Join(", ", nodesBelowThreshold.Select(n => n.Workers))} were below allowed thresholds" ); } return ExplainedInteractionHappinessGrade.Perfect(); }
private static ExplainedInteractionHappinessGrade ValidateLinpack(Telemetry telemetry) { const int threshold = 630; if (telemetry?.SingleHplTelemetry?.Results == null) { return ExplainedInteractionHappinessGrade.Unacceptable("No telemetry available"); } var nodesBelowThreshold = telemetry.SingleHplTelemetry.Results.Where(r => r.Gflops < threshold).ToList(); if (nodesBelowThreshold.Any()) { return ExplainedInteractionHappinessGrade.Unacceptable( $"GFlops value from nodes {string.Join(", ", nodesBelowThreshold)} was below the threshold: {threshold}" ); } return ExplainedInteractionHappinessGrade.Perfect(); }
private static ExplainedInteractionHappinessGrade ValidatePingPong(Telemetry telemetry) { return ExplainedInteractionHappinessGrade.Perfect(); }