Кампания на пять равных долей: контейнер сразу считает свою часть

gen_scenarios.py раскладывает 115 прогонов по пяти долям (LPT, поправка
на размер сетки по замерам dzn) — по ≈24 ч каждая; поле shard в
scenarios.json. run_campaign.sh/.ps1 получили --shard. Новая точка входа
образа entrypoint.sh: при KBC2D_SHARD сама выбирает путь к карте (dzn
или NVIDIA), проверяет vulkaninfo и parity.py и запускает долю. Для
чужих ПК под Windows/WSL2 — docker-compose.shards.yml и shard.bat.
Образ notbigghost/kbc2d:1.3.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 20:15:40 +03:00
co-authored by Claude Opus 5.5
parent 3e81ed130c
commit 1d495e3e89
12 changed files with 582 additions and 130 deletions
@@ -7,6 +7,7 @@
# .\run_campaign.ps1 -Smoke
# .\run_campaign.ps1 -Resume -Group A,B
# .\run_campaign.ps1 -Only cyl_re150 -BudgetHours 6
# .\run_campaign.ps1 -Resume -Shard 3
[CmdletBinding()]
param(
@@ -16,6 +17,7 @@ param(
[switch]$Smoke,
[string[]]$Group,
[string]$Only,
[int]$Shard = 0,
[double]$BudgetHours = 0,
[string]$Bin = "..\target\release\kbc2d.exe",
[string]$Scenarios = "scenarios.json",
@@ -45,6 +47,7 @@ if ($Calibrate) {
$runs = (Get-Content $Scenarios -Raw -Encoding UTF8 | ConvertFrom-Json).runs
if ($Group) { $g = $Group | ForEach-Object { $_.ToUpper() }; $runs = $runs | Where-Object { $g -contains $_.group.ToUpper() } }
if ($Shard) { $runs = $runs | Where-Object { $_.shard -eq $Shard } }
if ($Only) { $runs = $runs | Where-Object { $_.id -like "*$Only*" } }
if ($Smoke) { $runs = $runs | Sort-Object cost | Select-Object -First 3 }
if (-not $runs) { "под выборку не попал ни один прогон"; return }
@@ -67,6 +70,11 @@ if ($DryRun) {
New-Item -ItemType Directory -Force $Out | Out-Null
$summary = Join-Path $Out 'summary.csv'
$log = Join-Path $Out 'campaign.log'
# у каждой доли своя сводка и свой журнал, как в run_campaign.sh
if ($Shard) {
$summary = Join-Path $Out "summary_shard$Shard.csv"
$log = Join-Path $Out "campaign_shard$Shard.log"
}
if (-not (Test-Path $summary)) { 'id,group,backend,status,seconds,steps,cost,title' | Out-File $summary -Encoding utf8 }
$started = Get-Date