even better more structured throughput scheduling
Validate Operations / validate-operations (push) Has been cancelled

plot adjustments
validation adjustments
This commit is contained in:
NiccoloN
2026-10-27 17:46:46 +01:00
parent 49d6fb42cf
commit a77edafcbf
46 changed files with 3265 additions and 1043 deletions
+13 -4
View File
@@ -53,8 +53,8 @@ static void testEmptyGraphPreparation() {
SchedulingTarget target;
target.processorCount = target.residentWeightCapacity = 1;
target.interProcessorLatencyNs = {0};
for (bool collectCandidates : {false, true}) {
auto prepared = prepareSpatialSchedules(*module, target, 1, collectCandidates);
{
auto prepared = prepareSpatialSchedules(*module, target, 1);
TEST_CHECK(succeeded(prepared) && prepared->candidates.size() == 1);
TEST_CHECK(prepared->candidates.front().dominanceOrderCompute.empty());
}
@@ -109,9 +109,9 @@ static void testSelectedLoweringFailure() {
bufferization::func_ext::registerBufferizableOpInterfaceExternalModels(registry);
context.appendDialectRegistry(registry);
context.loadAllAvailableDialects();
for (bool collectCandidates : {false, true}) {
{
OwningOpRef<ModuleOp> checkpoint = cast<ModuleOp>((*module)->clone());
auto prepared = prepareSpatialSchedules(*checkpoint, target, 2, collectCandidates);
auto prepared = prepareSpatialSchedules(*checkpoint, target, 2);
TEST_CHECK(succeeded(prepared) && !prepared->candidates.empty());
}
PassManager manager(&context);
@@ -233,6 +233,14 @@ static void testResourceRetries() {
}, reason);
TEST_CHECK(!selected && attempts == 1);
TEST_CHECK(reason.find("recovery is not justified") != std::string::npos);
// The original schedule succeeds alone. Adding unknown evidence must produce
// an explicit incomplete comparison, never silently drop the alternative.
attempts = 0;
std::vector<WholeScheduleCost> single{original};
selected = lowerSelectedPimCandidate(single, [&](size_t index) {
++attempts; TEST_CHECK(index == 0); return PimCandidateResult::Success;
}, reason);
TEST_CHECK(selected == 0 && attempts == 1);
for (unsigned unknown = 0; unknown < 4; ++unknown) {
auto invalid = faster;
if (unknown == 0) invalid.primary.reset();
@@ -246,6 +254,7 @@ static void testResourceRetries() {
return PimCandidateResult::Success;
}, reason);
TEST_CHECK(!selected && attempts == 0);
TEST_CHECK(reason.find("cannot compare the complete candidate set") != std::string::npos);
}
coresCount = previousCores; crossbarSize = previousSize; crossbarCountInCore = previousCrossbars;
}