Model validation: the rigid-body engines on every card in turn, even where this card has room for all
The engines past this card's first now go one card after the other, from the next card and this one last, each within half of its own budget, as MR's do. Before, this card took every extra engine it had room for and the other cards only the rest, so a small cell on four cards ran all its fits on one. Where this card has no room for a second engine (a large cell on 15.6 GB cards) the plan is unchanged: 1/3/3/3. This card's scale fits take the room its engines leave. Engines are interchangeable and deterministic, so only where fits run changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PXc1zD1yxHqaR1DGdCTHL4
This commit is contained in:
1 parent
b004a846dd
commit
3fa17b9385
3 files changed
+36
-20
No files matched your search
@@ -197,6 +197,18 @@ TEST_CASE("ModelValidation_GPUPlanEnginesOnOtherCards", "[ModelValidation]") {
|
||||
// One card alone: the plan as it was.
|
||||
CHECK(alone.rigid_body_per_card == std::vector<size_t>{1});
|
||||
CHECK(alone.most_on_a_card == alone.bytes);
|
||||
|
||||
// Engines this card alone has room for still go on every card in turn: ten of 0.1 GB on four cards, from the
|
||||
// next card and this one last.
|
||||
need = LargeCellNeed(card);
|
||||
need.other_cards = {card, card, card};
|
||||
need.rigid_body = 100000000;
|
||||
const ModelValidationGPUPlan small = PlanModelValidationGPU(need);
|
||||
CHECK(small.rigid_body_per_card == std::vector<size_t>{3, 3, 2, 2});
|
||||
CHECK(small.rigid_body_engines == 10);
|
||||
CHECK(small.scale_fit_engines == 4);
|
||||
need.other_cards.clear();
|
||||
CHECK(PlanModelValidationGPU(need).rigid_body_per_card == std::vector<size_t>{10});
|
||||
}
|
||||
|
||||
TEST_CASE("ModelValidation_GPUPlanPartThatDoesNotFitGoesToTheCPU", "[ModelValidation]") {
|
||||
|
||||
Reference in new issue
Block a user