wip(standalone): GPU step 6 -- near field on GPU, exact; cold start still slower than CPU
Near LOD0/1 (detail band, relief, root refinement, normals) now evaluated and meshed on the GPU. 960 near tiles: zero sign/topology differences vs CPU and WARP, vertex max 0.0049 mm (was 15 cm); far survival audit passes; CPU hashes 44/44 unchanged. Far connector-panel outlier (64.56 cm, LOD8) remains a tessellation difference, and remote captures show missing far geometry on GPU. Cold readiness (viewer clock, my interleaved runs): CPU 2.51/2.49/2.40 s, GPU 5.05/2.68/2.80 s. The ~2.1 s Present stall hit only the first GPU launch. Viewer spends ~1.13 s before shape compile starts (startup checks), which is the gap between the 0.95 s benchmark and ~2.4 s on-screen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ
This commit is contained in:
1 parent
0e730cdbba
commit
b0a14262b1
50 files changed
+1681
-236
No files matched your search
@@ -0,0 +1,51 @@
|
||||
[CmdletBinding()]
|
||||
param()
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
$HostProcess = Get-Process -Id $PID
|
||||
$HostProcess.PriorityClass = 'BelowNormal'
|
||||
$HostProcess.ProcessorAffinity = [IntPtr]0xFF00
|
||||
$Standalone = [IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..'))
|
||||
$Executable = Join-Path $Standalone 'bin\VoxelForgeGpuFieldStep6NearProbe.exe'
|
||||
$Stdout = Join-Path $PSScriptRoot 'step6_cpu_hash_fresh_w8.stdout.log'
|
||||
$Stderr = Join-Path $PSScriptRoot 'step6_cpu_hash_fresh_w8.stderr.log'
|
||||
$Arguments = @('--stream-benchmark','--shape-world','--force-generate','--stream-hash','--workers=8','--clip-radius=3')
|
||||
if (-not (Test-Path -LiteralPath $Executable -PathType Leaf)) { throw "Executable not found: $Executable" }
|
||||
|
||||
for ($Attempt = 0; $Attempt -lt 2; ++$Attempt) {
|
||||
if ($Attempt -eq 1) {
|
||||
Write-Output '0xC0000142 encountered; waiting 60 seconds before the permitted retry.'
|
||||
Start-Sleep -Seconds 60
|
||||
}
|
||||
$Child = Start-Process -FilePath $Executable -ArgumentList $Arguments -WorkingDirectory $Standalone `
|
||||
-WindowStyle Hidden -PassThru -RedirectStandardOutput $Stdout -RedirectStandardError $Stderr
|
||||
$PeakWorkingSet = 0L
|
||||
$PeakPrivate = 0L
|
||||
$OverLimit = $false
|
||||
while (-not $Child.HasExited) {
|
||||
$Child.Refresh()
|
||||
if ($Child.HasExited) { break }
|
||||
$Child.PriorityClass = 'BelowNormal'
|
||||
$Child.ProcessorAffinity = [IntPtr]0xFF00
|
||||
$PeakWorkingSet = [Math]::Max($PeakWorkingSet,$Child.WorkingSet64)
|
||||
$PeakPrivate = [Math]::Max($PeakPrivate,$Child.PrivateMemorySize64)
|
||||
if ($Child.PrivateMemorySize64 -ge 8GB) {
|
||||
$OverLimit = $true
|
||||
$Child.Kill()
|
||||
$Child.WaitForExit()
|
||||
break
|
||||
}
|
||||
Start-Sleep -Milliseconds 100
|
||||
}
|
||||
$Child.WaitForExit()
|
||||
$Child.Refresh()
|
||||
if ($Child.ExitCode -eq -1073741502 -and $Attempt -eq 0) { continue }
|
||||
if ($Child.ExitCode -eq -1073741502) { throw '0xC0000142 repeated after the one retry; stopping.' }
|
||||
if ($OverLimit) { throw 'CPU hash run stopped at the 8 GB process memory limit.' }
|
||||
$Log = Get-Content -LiteralPath $Stdout -Raw
|
||||
if ($Child.ExitCode -ne 0 -or -not $Log.Contains('[StreamFullClipmap]')) {
|
||||
throw "Hash run failed; exit=$($Child.ExitCode) stdout=$Stdout stderr=$Stderr"
|
||||
}
|
||||
Write-Output "RUN_EXIT pid=$($Child.Id) priority=BelowNormal affinity=0xFF00 peak_working_set_gb=$([Math]::Round($PeakWorkingSet/1GB,2)) peak_private_gb=$([Math]::Round($PeakPrivate/1GB,2)) exit_code=$($Child.ExitCode) stdout=$Stdout stderr=$Stderr"
|
||||
exit 0
|
||||
}
|
||||
Reference in new issue
Block a user