better compile times for throughput scheduling
Validate Operations / validate-operations (push) Has been cancelled

fix failing no-plan throughput ablation runs
update results
This commit is contained in:
NiccoloN
2026-10-28 16:34:48 +01:00
parent 3c7679594b
commit 5f2db946f0
28 changed files with 909 additions and 197 deletions
+5 -1
View File
@@ -113,7 +113,7 @@ struct PimPipelineSelectionPass final : PassWrapper<PimPipelineSelectionPass, Op
PreparedSpatialSchedules &prepared, std::vector<WholeScheduleCost> &costs,
llvm::json::Object &report) {
llvm::json::Array summaries;
double realization = 0, extraction = 0, expansion = 0, queue = 0, evaluation = 0;
double realization = 0, extraction = 0, expansion = 0, queue = 0, evaluation = 0, dependency = 0;
auto evaluate = [&](const MergeScheduleResult &schedule) {
size_t index = summaries.size();
llvm::json::Object summary{{"index", static_cast<int64_t>(index)}};
@@ -131,6 +131,7 @@ struct PimPipelineSelectionPass final : PassWrapper<PimPipelineSelectionPass, Op
extraction += cost.timing.extractionSeconds;
expansion += cost.timing.expansionSeconds;
queue += cost.timing.evaluationSeconds;
dependency += cost.timing.dependencySeconds;
auto convergence = cost.convergenceProved(), support = cost.loweringSupported();
summary["cost_available"] = cost.available();
summary["convergence_proved"] = convergence
@@ -183,6 +184,7 @@ struct PimPipelineSelectionPass final : PassWrapper<PimPipelineSelectionPass, Op
report["event_extraction_seconds"] = extraction;
report["event_expansion_seconds"] = expansion;
report["queue_seconds"] = queue;
report["dependency_analysis_seconds"] = dependency;
report["candidates"] = std::move(summaries);
if (failed(search)) {
report["status"] = "incomplete-costs";
@@ -204,6 +206,8 @@ struct PimPipelineSelectionPass final : PassWrapper<PimPipelineSelectionPass, Op
report["single_candidate_analysis_skipped"] = single;
report["search_rounds"] = static_cast<int64_t>(search->rounds);
report["packing_attempts"] = static_cast<int64_t>(search->packingAttempts);
report["neighborhood_seconds"] = search->neighborhoodSeconds;
report["constructive_packing_seconds"] = search->packingSeconds;
report["considered_assignments"] = static_cast<int64_t>(search->consideredAssignments);
report["search_termination"] = search->termination;
report["queue_evaluation_budget"] = static_cast<int64_t>(kPipelineQueueEvaluationBudget);