From b6ac950073d15b1c3110d2355b9ebc19c7587793 Mon Sep 17 00:00:00 2001 From: Fr0zka Date: Wed, 7 Oct 2026 06:13:59 +0200 Subject: [PATCH] wip(standalone): GPU step 11 -- per-shader cold cost measured; far EmitCS split, still CPU wins Cold first-use per shader (queue ms): EvaluateFarField 1757, EmitNear 2429, FarConnectorRings 784, FarSkirts 507+975; the far EmitCS dropped 2327 -> 3.2 by splitting out the near midpoint fallback into EmitNearCS. Warm-up under 0xFF00 ~2.0 s (worker count and thread priority do not change it; 0xFFFF run: 1.71 s). Whole view median CPU 1.428 s vs hybrid 3.154 s. Audits unchanged. AMD DxCache was last written 2026-10-06 23:27 -- shaders may no longer be cached across launches (unverified). Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01MmSoF64BbRFmk9C3p1VsBJ --- .../gpu_field_port/BuildGpuFieldViewer.ps1 | 2 +- .../gpu_field_port/CompareStep10Captures.py | 59 ++++++++++++ .../gpu_field_port/CompareStep11Captures.py | 59 ++++++++++++ .../gpu_field_port/GpuFarViewer.h | 3 +- .../gpu_field_port/GpuFieldPort.cpp | 60 ++++++++++--- .../RunStep11AllCpuAffinity.ps1 | 69 ++++++++++++++ .../gpu_field_port/RunStep11CaptureMatrix.ps1 | 80 +++++++++++++++++ .../gpu_field_port/RunStep11CpuReference.ps1 | 63 +++++++++++++ .../RunStep11FinalInterleaved.ps1 | 77 ++++++++++++++++ .../gpu_field_port/RunStep11GpuSurvival.ps1 | 59 ++++++++++++ .../RunStep11ShaderFirstUse.ps1 | 70 +++++++++++++++ .../RunStep11WarmupControls.ps1 | 85 ++++++++++++++++++ .../gpu_field_port/STEP11_REPORT.md | 71 +++++++++++++++ .../gpu_field_port/precompiled/EmitCS.cso | Bin 481420 -> 11764 bytes .../gpu_field_port/precompiled/EmitNearCS.cso | Bin 0 -> 481420 bytes .../step10_capture_comparison.md | 16 ++++ .../step11_capture_comparison.md | 16 ++++ .../gpu_first_port/VoxelForgeGpuMesher.hlsl | 58 +++++++++++- Standalone/Source/StandaloneViewer.cpp | 85 ++++++++++++++++-- 19 files changed, 908 insertions(+), 24 deletions(-) create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep10Captures.py create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep11Captures.py create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11AllCpuAffinity.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CaptureMatrix.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CpuReference.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11FinalInterleaved.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11GpuSurvival.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11ShaderFirstUse.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11WarmupControls.ps1 create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/STEP11_REPORT.md create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/precompiled/EmitNearCS.cso create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/step10_capture_comparison.md create mode 100644 Standalone/Research/OwnerShapeWorld/gpu_field_port/step11_capture_comparison.md diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/BuildGpuFieldViewer.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/BuildGpuFieldViewer.ps1 index da5fe7f..999011d 100644 --- a/Standalone/Research/OwnerShapeWorld/gpu_field_port/BuildGpuFieldViewer.ps1 +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/BuildGpuFieldViewer.ps1 @@ -120,7 +120,7 @@ if ($Target -eq 'All') { Sort-Object -Property FullName -Descending | Select-Object -First 1 if ($FxC) { [IO.Directory]::CreateDirectory($PrecompiledShaderDir) | Out-Null - foreach ($Entry in @('EvaluateFarFieldCS','ClassifyCS','ClassifyFarCS','ScanGroupsCS','EmitCS','NoiseProbeCS','BuildFarConnectorRingsCS','EmitFarConnectorPanelsCS','ClassifyFarSkirtsCS','ScanFarSkirtsCS','EmitFarSkirtsCS')) { + foreach ($Entry in @('EvaluateFarFieldCS','ClassifyCS','ClassifyFarCS','ScanGroupsCS','EmitCS','EmitNearCS','NoiseProbeCS','BuildFarConnectorRingsCS','EmitFarConnectorPanelsCS','ClassifyFarSkirtsCS','ScanFarSkirtsCS','EmitFarSkirtsCS')) { $ShaderBinary = Join-Path $PrecompiledShaderDir ($Entry+'.cso') $CommandLine = '"{0}" /nologo /T cs_5_0 /E {1} /O3 /Gis /Ges /Fo "{2}" "{3}"' -f $FxC.FullName,$Entry,$ShaderBinary,$ShaderSource Invoke-FieldViewerBuildCommand $CommandLine "precompile HLSL entry $Entry" diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep10Captures.py b/Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep10Captures.py new file mode 100644 index 0000000..3732953 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep10Captures.py @@ -0,0 +1,59 @@ +from pathlib import Path + +import numpy as np +from PIL import Image + + +ROOT = Path(__file__).resolve().parent +VIEWS = ( + "chamber", + "tunnel", + "passage", + "far", + "passage_floor_closeup", + "tunnel_bend", + "remote_yaw0", + "remote_yaw90", + "remote_yaw180", + "remote_yaw270", +) + +rows = [] +for view in VIEWS: + cpu_path = ROOT / f"step10final_cpu_{view}.png" + gpu_path = ROOT / f"step10final_gpu_{view}.png" + cpu = np.asarray(Image.open(cpu_path).convert("RGB"), dtype=np.int16) + gpu = np.asarray(Image.open(gpu_path).convert("RGB"), dtype=np.int16) + if cpu.shape != gpu.shape: + raise RuntimeError(f"dimension mismatch for {view}: {cpu.shape} vs {gpu.shape}") + diff = np.abs(cpu - gpu) + pixel_max = diff.max(axis=2) + rows.append( + ( + view, + f"{cpu.shape[1]}x{cpu.shape[0]}", + float(diff.mean()), + float(np.sqrt(np.square(diff, dtype=np.float64).mean())), + float(np.count_nonzero(pixel_max) * 100.0 / pixel_max.size), + float(np.count_nonzero(pixel_max > 32) * 100.0 / pixel_max.size), + int(pixel_max.max()), + ) + ) + +lines = [ + "# Step 10 full-residency capture comparison", + "", + "All ten CPU/GPU pairs were captured after `[InitialClipmapReady]`. Images were compared as RGB arrays; no full-size capture was opened in an image viewer.", + "", + "| View | Size | RGB MAE | RGB RMSE | Changed pixels | Pixels max channel >32 | Max channel |", + "|---|---:|---:|---:|---:|---:|---:|", +] +for row in rows: + view, size, mae, rmse, changed, over32, maximum = row + lines.append( + f"| {view} | {size} | {mae:.4f} | {rmse:.4f} | {changed:.4f}% | {over32:.4f}% | {maximum} |" + ) + +report = ROOT / "step10_capture_comparison.md" +report.write_text("\n".join(lines) + "\n", encoding="utf-8") +print(report.read_text(encoding="utf-8"), end="") diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep11Captures.py b/Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep11Captures.py new file mode 100644 index 0000000..8d492e4 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/CompareStep11Captures.py @@ -0,0 +1,59 @@ +from pathlib import Path + +import numpy as np +from PIL import Image + + +ROOT = Path(__file__).resolve().parent +VIEWS = ( + "chamber", + "tunnel", + "passage", + "far", + "passage_floor_closeup", + "tunnel_bend", + "remote_yaw0", + "remote_yaw90", + "remote_yaw180", + "remote_yaw270", +) + +rows = [] +for view in VIEWS: + cpu_path = ROOT / f"step11_cpu_{view}.png" + gpu_path = ROOT / f"step11_gpu_{view}.png" + cpu = np.asarray(Image.open(cpu_path).convert("RGB"), dtype=np.int16) + gpu = np.asarray(Image.open(gpu_path).convert("RGB"), dtype=np.int16) + if cpu.shape != gpu.shape: + raise RuntimeError(f"dimension mismatch for {view}: {cpu.shape} vs {gpu.shape}") + diff = np.abs(cpu - gpu) + pixel_max = diff.max(axis=2) + rows.append( + ( + view, + f"{cpu.shape[1]}x{cpu.shape[0]}", + float(diff.mean()), + float(np.sqrt(np.square(diff, dtype=np.float64).mean())), + float(np.count_nonzero(pixel_max) * 100.0 / pixel_max.size), + float(np.count_nonzero(pixel_max > 32) * 100.0 / pixel_max.size), + int(pixel_max.max()), + ) + ) + +lines = [ + "# Step 11 full-residency capture comparison", + "", + "All ten CPU/GPU pairs were captured after `[InitialClipmapReady]`. The files were compared numerically as RGB arrays and were not opened in an image viewer.", + "", + "| View | Size | RGB MAE | RGB RMSE | Changed pixels | Pixels max channel >32 | Max channel |", + "|---|---:|---:|---:|---:|---:|---:|", +] +for row in rows: + view, size, mae, rmse, changed, over32, maximum = row + lines.append( + f"| {view} | {size} | {mae:.4f} | {rmse:.4f} | {changed:.4f}% | {over32:.4f}% | {maximum} |" + ) + +report = ROOT / "step11_capture_comparison.md" +report.write_text("\n".join(lines) + "\n", encoding="utf-8") +print(report.read_text(encoding="utf-8"), end="") diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFarViewer.h b/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFarViewer.h index 7adc4b5..9210b8d 100644 --- a/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFarViewer.h +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFarViewer.h @@ -25,7 +25,8 @@ namespace VoxelForgeGpuFarViewer bool InitializeFarPipeline(ID3D11Device* device,ID3D11DeviceContext* context, const std::filesystem::path& shaderPath,std::string& error); bool QueueFarShaderWarmup(ID3D11Device* device,ID3D11DeviceContext* context, - const std::filesystem::path& shaderPath,bool dispatchShaders,std::string& error); + const std::filesystem::path& shaderPath,bool dispatchShaders, + const std::string& entryFilter,std::string& error); bool CompleteFarShaderWarmup(ID3D11Device* device,ID3D11DeviceContext* context, const std::filesystem::path& shaderPath,std::string& error); bool ReserveFarOutputPool(ID3D11Device* device,ID3D11DeviceContext* context, diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFieldPort.cpp b/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFieldPort.cpp index 2eabf67..b17693b 100644 --- a/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFieldPort.cpp +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/GpuFieldPort.cpp @@ -551,7 +551,7 @@ namespace ComPtr device; ComPtr context; ComPtr immediateContext,deferredContext; - ComPtr fieldEval, classify, fieldClassify, scan, emit, noiseProbe; + ComPtr fieldEval, classify, fieldClassify, scan, emit, emitNear, noiseProbe; ComPtr connectorRings,connectorPanels; ComPtr classifyFarSkirts,scanFarSkirts,emitFarSkirts; ComPtr memoryAdapter; @@ -599,6 +599,7 @@ namespace Create("ClassifyFarCS",fieldClassify); Create("ScanGroupsCS",scan); Create("EmitCS",emit); + Create("EmitNearCS",emitNear); Create("NoiseProbeCS",noiseProbe); Create("BuildFarConnectorRingsCS",connectorRings); Create("EmitFarConnectorPanelsCS",connectorPanels); @@ -609,13 +610,21 @@ namespace std::chrono::duration(std::chrono::steady_clock::now()-PipelineStart).count()); } - void QueueTinyShaderWarmup(bool dispatchShaders) + void QueueTinyShaderWarmup(bool dispatchShaders,const std::string& entryFilter) { const auto WarmupStart=Clock::now(); + static constexpr std::array entries={ + "EvaluateFarFieldCS","ClassifyCS","ClassifyFarCS","ScanGroupsCS","EmitCS", + "EmitNearCS","BuildFarConnectorRingsCS","EmitFarConnectorPanelsCS", + "ClassifyFarSkirtsCS","ScanFarSkirtsCS","EmitFarSkirtsCS","NoiseProbeCS"}; + if(!entryFilter.empty()&&std::find(entries.begin(),entries.end(),entryFilter)==entries.end()) + throw std::runtime_error("unknown shader warmup entry: "+entryFilter); constexpr std::uint32_t sampleCount=27,cellCount=1,groupCount=1; TileConstants tile{}; tile.cells=1;tile.sampleDim=3;tile.cellCount=cellCount;tile.groupCount=groupCount; - tile.stepVoxels=1;tile.voxelSizeCm=25.0f;tile.outputVertexCapacity=3; + tile.stepVoxels=entryFilter=="EmitNearCS"?1:2; + tile.nearFieldMode=entryFilter=="EmitNearCS"?1u:0u; + tile.voxelSizeCm=25.0f;tile.outputVertexCapacity=3; FarFieldConstants field{}; field.strataLo=-100.0f;field.strataHi=100.0f;field.strataBlend=12.0f; field.sampleCount=sampleCount;field.spatialBinMask=0;field.spatialBinSize=64; @@ -645,16 +654,19 @@ namespace auto detailLayers=Structured(nullptr,1,D3D11_BIND_SHADER_RESOURCE); std::array packedProxy{};packedProxy.fill(InvalidIndex); auto proxies=Structured(packedProxy.data(),packedProxy.size(),D3D11_BIND_SHADER_RESOURCE); - auto density=Structured(nullptr,sampleCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); - auto nearNormal=Structured(nullptr,sampleCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); + std::array zeroDensity{}; + auto density=Structured(zeroDensity.data(),sampleCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); + auto nearNormal=Structured(zeroDensity.data(),sampleCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); auto evalCounters=Structured(nullptr,sampleCount,D3D11_BIND_UNORDERED_ACCESS); auto signs=Structured(&zeroWord,1,D3D11_BIND_SHADER_RESOURCE); std::array triTable{};triTable.fill(-1); auto triangles=Structured(triTable.data(),triTable.size(),D3D11_BIND_SHADER_RESOURCE); - auto cases=Structured(nullptr,cellCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); - auto localOffsets=Structured(nullptr,cellCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); - auto groupCounts=Structured(nullptr,groupCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); - auto groupOffsets=Structured(nullptr,groupCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); + std::array zeroCell{}; + std::array zeroGroup{}; + auto cases=Structured(zeroCell.data(),cellCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); + auto localOffsets=Structured(zeroCell.data(),cellCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); + auto groupCounts=Structured(zeroGroup.data(),groupCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); + auto groupOffsets=Structured(zeroGroup.data(),groupCount,D3D11_BIND_SHADER_RESOURCE|D3D11_BIND_UNORDERED_ACCESS); auto midpointIds=Structured(&invalidWord,1,D3D11_BIND_SHADER_RESOURCE); MidpointRecord emptyMidpoint{}; auto midpointRecords=Structured(&emptyMidpoint,1,D3D11_BIND_SHADER_RESOURCE); @@ -699,6 +711,16 @@ namespace auto indices=RawMeshBuffer(3u*sizeof(std::uint32_t),D3D11_BIND_UNORDERED_ACCESS); auto panelVertices=RawMeshBuffer(64u*sizeof(GpuVertex),D3D11_BIND_UNORDERED_ACCESS); auto panelIndices=RawMeshBuffer(64u*sizeof(std::uint32_t),D3D11_BIND_UNORDERED_ACCESS); + std::array zeroArgs{}; + std::array zeroVertices{}; + std::array zeroPanelVertices{}; + std::array zeroIndices{}; + std::array zeroPanelIndices{}; + context->UpdateSubresource(args.Get(),0,nullptr,zeroArgs.data(),0,0); + context->UpdateSubresource(vertices.Get(),0,nullptr,zeroVertices.data(),0,0); + context->UpdateSubresource(indices.Get(),0,nullptr,zeroIndices.data(),0,0); + context->UpdateSubresource(panelVertices.Get(),0,nullptr,zeroPanelVertices.data(),0,0); + context->UpdateSubresource(panelIndices.Get(),0,nullptr,zeroPanelIndices.data(),0,0); auto argsUav=RawUav(args.Get(),11); auto vertexUav=RawUav(vertices.Get(),static_cast(3u*sizeof(GpuVertex)/4u)); auto vertexSrv=RawSrv(vertices.Get(),static_cast(3u*sizeof(GpuVertex)/4u)); @@ -721,6 +743,7 @@ namespace ID3D11Buffer* constants[3]={tileCb.Get(),fieldCb.Get(),connectorCb.Get()}; context->CSSetConstantBuffers(0,3,constants); + std::uint32_t dispatchCount=0; auto ClearBindings=[&](UINT srvCount=20) { ID3D11ShaderResourceView* nullSrvs[20]{}; @@ -730,8 +753,12 @@ namespace }; auto Dispatch=[&](ID3D11ComputeShader* shader,const char* entry) { + if(!entryFilter.empty()&&entryFilter!=entry)return; + if(entryFilter.empty()&&(std::string_view(entry)=="ClassifyCS" + ||std::string_view(entry)=="EmitNearCS"||std::string_view(entry)=="NoiseProbeCS"))return; const auto start=Clock::now(); context->CSSetShader(shader,nullptr,0);context->Dispatch(1,1,1); + ++dispatchCount; std::printf("[GpuShaderWarmup] entry=%s dispatch_call_ms=%.3f groups=1\n",entry, std::chrono::duration(Clock::now()-start).count()); }; @@ -774,6 +801,7 @@ namespace ID3D11UnorderedAccessView* emitUavs[8]{};emitUavs[5]=vertexUav.Get();emitUavs[6]=indexUav.Get(); context->CSSetUnorderedAccessViews(0,8,emitUavs,nullptr); Dispatch(emit.Get(),"EmitCS");ClearBindings(); + Dispatch(emitNear.Get(),"EmitNearCS");ClearBindings(); ID3D11ShaderResourceView* ringSrvs[5]={connectorPanelSrv.Get(),nullptr,shapeSrv.Get(),binSrv.Get(),shapeIdSrv.Get()}; context->CSSetShaderResources(8,5,ringSrvs); @@ -819,8 +847,11 @@ namespace D3D11_QUERY_DESC eventDesc{D3D11_QUERY_EVENT,0}; Check(device->CreateQuery(&eventDesc,&shaderWarmupCompletion),"CreateQuery(shader warmup completion)"); context->End(shaderWarmupCompletion.Get());context->Flush(); - std::printf("[GpuShaderWarmup] dispatched=11 tiny_samples=%u tiny_cells=%u queue_ms=%.3f completion=pending\n", - sampleCount,cellCount,std::chrono::duration(Clock::now()-WarmupStart).count()); + if(dispatchShaders&&dispatchCount==0) + throw std::runtime_error("shader warmup selected no dispatches"); + std::printf("[GpuShaderWarmup] dispatched=%u selected=%s tiny_samples=%u tiny_cells=%u queue_ms=%.3f completion=pending\n", + dispatchCount,entryFilter.empty()?"production":entryFilter.c_str(),sampleCount,cellCount, + std::chrono::duration(Clock::now()-WarmupStart).count()); } bool CompleteTinyShaderWarmup() @@ -1628,7 +1659,7 @@ namespace context->CSSetUnorderedAccessViews(0, 8, nullUavs, nullptr); beginKernel(3); - context->CSSetShader(emit.Get(), nullptr, 0); + context->CSSetShader((farField&&tile.step>1?emit.Get():emitNear.Get()), nullptr, 0); ID3D11ShaderResourceView* emitSrvs[19]{}; emitSrvs[1] = triSrv.Get(); emitSrvs[2] = densitySrv.Get(); emitSrvs[3] = caseSrv.Get(); emitSrvs[4] = localOffsetSrv.Get(); emitSrvs[5] = groupOffsetSrv.Get(); @@ -3092,11 +3123,12 @@ namespace VoxelForgeGpuFarViewer } bool QueueFarShaderWarmup(ID3D11Device* device,ID3D11DeviceContext* context, - const std::filesystem::path& shaderPath,bool dispatchShaders,std::string& error) + const std::filesystem::path& shaderPath,bool dispatchShaders, + const std::string& entryFilter,std::string& error) { try { - GetFarViewerRunner(device,context,shaderPath).QueueTinyShaderWarmup(dispatchShaders); + GetFarViewerRunner(device,context,shaderPath).QueueTinyShaderWarmup(dispatchShaders,entryFilter); return true; } catch(const std::exception& e){error=e.what();return false;} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11AllCpuAffinity.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11AllCpuAffinity.ps1 new file mode 100644 index 0000000..6de4424 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11AllCpuAffinity.ps1 @@ -0,0 +1,69 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} + +$Name='step11_allcpu_affinity_gpu' +$Arguments=@('--clip-radius=3','--workers=8','--quit-after-clipmap','--gpu-far', + '--gpu-far-no-present-hold','--affinity-all-cpu') +$StdoutPath=Join-Path $PSScriptRoot ($Name+'.stdout.log') +$StderrPath=Join-Path $PSScriptRoot ($Name+'.stderr.log') +$EightGB=8L*1024L*1024L*1024L +Write-Output "STEP11_ALLCPU_RUN name=$Name priority=BelowNormal affinity=0xFFFF workers=8 command=`"$ExecutablePath`" $($Arguments -join ' ')" +for($Attempt=0;$Attempt-lt2;$Attempt++) +{ + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $HostRunClock=[Diagnostics.Stopwatch]::StartNew() + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal' + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($Child.PrivateMemorySize64-ge$EightGB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 50 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh();$HostRunClock.Stop();$HostRunMs=$HostRunClock.Elapsed.TotalMilliseconds + $ViewerExitCode=$Child.ExitCode + if($ViewerExitCode-eq-1073741502-and$Attempt-eq0) + {continue} + if($ViewerExitCode-eq-1073741502){throw '0xC0000142 repeated after its single retry; stopping.'} + if($OverMemoryLimit){throw "Viewer stopped at the 8 GiB private-memory ceiling: $Name"} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + if(-not$LogText.Contains('[InitialClipmapReady]')) + {throw "Full clipmap was not ready in $Name; exit=$ViewerExitCode"} + $Ready=[regex]::Match($LogText,'(?m)^\[InitialClipmapReady\] ([0-9.]+) s') + $Presented=[regex]::Match($LogText,'(?m)^\[WholeViewPresented\] at_ms=([0-9.]+) present_ms=([0-9.]+).*hr=0x([0-9A-Fa-f]{8})') + $Warmup=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] dispatched=[0-9]+ .*queue_ms=([0-9.]+)') + $Wait=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] completion_wait_ms=([0-9.]+)') + if(-not$Presented.Success){throw "Whole-view present marker missing in $Name"} + $WarmupMs=if($Warmup.Success){[double]$Warmup.Groups[1].Value+$(if($Wait.Success){[double]$Wait.Groups[1].Value}else{0.0})}else{0.0} + $Memory=[regex]::Match($LogText,'(?m)^\[GpuFarMemory\] dxgi_local_sampled_peak_mb=([0-9.]+)') + $CombinedGB=$PeakPrivate/1GB + if($Memory.Success){$CombinedGB=($PeakPrivate+[double]$Memory.Groups[1].Value*1MB)/1GB} + if($CombinedGB-ge8.0){throw "Viewer exceeded conservative private + DXGI-local 8 GiB ceiling: $Name ($CombinedGB GiB)"} + $Controls=[regex]::Match($LogText,'(?m)^\[ProcessControls\].*') + Write-Output "STEP11_ALLCPU_RESULT name=$Name warmup_ms=$([math]::Round($WarmupMs,3)) ready_ms=$([math]::Round([double]$Ready.Groups[1].Value*1000,3)) viewer_whole_view_present_return_ms=$($Presented.Groups[1].Value) present_ms=$($Presented.Groups[2].Value) present_hr=0x$($Presented.Groups[3].Value.ToUpperInvariant()) host_process_exit_ms=$([math]::Round($HostRunMs,3)) peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) conservative_private_plus_dxgi_gb=$([math]::Round($CombinedGB,2)) controls=`"$($Controls.Value)`" exit=$ViewerExitCode" + if($ViewerExitCode-ne0){throw "Viewer returned $ViewerExitCode`: $Name"} + break +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CaptureMatrix.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CaptureMatrix.ps1 new file mode 100644 index 0000000..32b490b --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CaptureMatrix.ps1 @@ -0,0 +1,80 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} +$Views=@( + @{Name='chamber';Camera='-11.75,-123.25,-19.85,0,0'}, + @{Name='tunnel';Camera='-11.75,-123.25,-19.85,90,0'}, + @{Name='passage';Camera='-39.19,6.27,-28.51,63,0'}, + @{Name='far';Camera='-11.61244,-118.2212,-19.8452,0,0'}, + @{Name='passage_floor_closeup';Camera='-39.19,6.27,-25.51,63,-25'}, + @{Name='tunnel_bend';Camera='-198.97,-99.57,-45.58,33.59,23.17'}, + @{Name='remote_yaw0';Camera='500,0,0,0,0'}, + @{Name='remote_yaw90';Camera='500,0,0,90,0'}, + @{Name='remote_yaw180';Camera='500,0,0,180,0'}, + @{Name='remote_yaw270';Camera='500,0,0,270,0'} +) +$EightGB=8L*1024L*1024L*1024L +foreach($View in $Views) +{ + foreach($Mode in @('cpu','gpu')) + { + $Stem="step11_${Mode}_$($View.Name)" + $CaptureName="$Stem.png" + $Arguments=@('--clip-radius=3','--workers=8','--quit-after-clipmap','--capture-after-clipmap', + "--camera=$($View.Camera)","--$Mode-far", + "--capture=Research/OwnerShapeWorld/gpu_field_port/$CaptureName") + $StdoutPath=Join-Path $PSScriptRoot ($Stem+'.stdout.log') + $StderrPath=Join-Path $PSScriptRoot ($Stem+'.stderr.log') + $CapturePath=Join-Path $PSScriptRoot $CaptureName + Write-Output "STEP11_CAPTURE mode=$Mode view=$($View.Name) affinity=0xFF00 command=`"$ExecutablePath`" $($Arguments -join ' ')" + for($Attempt=0;$Attempt-lt2;$Attempt++) + { + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal';$Child.ProcessorAffinity=[IntPtr]0xFF00 + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($PeakPrivate-ge$EightGB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 100 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh() + if($Child.ExitCode-eq-1073741502-and$Attempt-eq0){continue} + if($Child.ExitCode-eq-1073741502){throw '0xC0000142 repeated after its single permitted retry.'} + if($OverMemoryLimit){throw "Capture viewer stopped at the 8 GiB private-memory ceiling: $Stem"} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + if(-not$LogText.Contains('[InitialClipmapReady]')-or-not(Test-Path -LiteralPath $CapturePath -PathType Leaf)) + {throw "Full-residency capture missing: $Stem; exit=$($Child.ExitCode)"} + $Memory=[regex]::Match($LogText,'(?m)^\[GpuFarMemory\] dxgi_local_sampled_peak_mb=([0-9.]+)') + $CombinedGB=$PeakPrivate/1GB + if($Memory.Success){$CombinedGB=($PeakPrivate+[double]$Memory.Groups[1].Value*1MB)/1GB} + if($CombinedGB-ge8.0){throw "Capture exceeded conservative private + DXGI-local 8 GiB ceiling: $Stem ($CombinedGB GiB)"} + $Ready=[regex]::Match($LogText,'(?m)^\[InitialClipmapReady\] ([0-9.]+) s') + Write-Output "STEP11_CAPTURE_DONE mode=$Mode view=$($View.Name) ready_s=$($Ready.Groups[1].Value) peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) conservative_private_plus_dxgi_gb=$([math]::Round($CombinedGB,2)) path=$CapturePath exit=$($Child.ExitCode)" + if($Child.ExitCode-ne0){throw "Capture viewer returned $($Child.ExitCode): $Stem"} + break + } + } +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CpuReference.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CpuReference.ps1 new file mode 100644 index 0000000..656ef1a --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11CpuReference.ps1 @@ -0,0 +1,63 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} +$Reference=$null +foreach($Workers in @(1,8)) +{ + $Name="step11_cpu_reference_w$Workers" + $StdoutPath=Join-Path $PSScriptRoot ($Name+'.stdout.log') + $StderrPath=Join-Path $PSScriptRoot ($Name+'.stderr.log') + $Arguments=@('--stream-benchmark','--shape-world','--force-generate','--stream-hash', + '--clip-radius=3',"--workers=$Workers") + Write-Output "STEP11_CPU_REFERENCE workers=$Workers affinity=0xFF00 priority=BelowNormal command=`"$ExecutablePath`" $($Arguments -join ' ')" + for($Attempt=0;$Attempt-lt2;$Attempt++) + { + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal';$Child.ProcessorAffinity=[IntPtr]0xFF00 + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($PeakPrivate-ge8GB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 100 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh() + if($Child.ExitCode-eq-1073741502-and$Attempt-eq0){continue} + if($Child.ExitCode-eq-1073741502){throw '0xC0000142 repeated after its single retry; stopping.'} + if($OverMemoryLimit){throw "CPU reference stopped at the 8 GiB private-memory ceiling: W$Workers"} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + $Stream=[regex]::Match($LogText,'(?m)^\[StreamFullClipmap\].*generated=2226/2226.*density_hash=(0x[0-9a-fA-F]+) mesh_hash=(0x[0-9a-fA-F]+) payload_hash=(0x[0-9a-fA-F]+) topology_hash=(0x[0-9a-fA-F]+)') + $Walkability=[regex]::Match($LogText,'(?m)^\[Walkability\] PASS 5642/5642') + if(-not$Stream.Success-or-not$Walkability.Success) + {throw "CPU reference failed full-generation/hash/walkability checks for W$Workers; exit=$($Child.ExitCode)"} + $Hashes=@($Stream.Groups[1].Value.ToLowerInvariant(),$Stream.Groups[2].Value.ToLowerInvariant(), + $Stream.Groups[3].Value.ToLowerInvariant(),$Stream.Groups[4].Value.ToLowerInvariant()) + if($null-eq$Reference){$Reference=$Hashes} + elseif(($Reference-join'|')-ne($Hashes-join'|')){throw 'CPU hashes differ between W1 and W8.'} + Write-Output "STEP11_CPU_REFERENCE_RESULT workers=$Workers hashes=$($Hashes -join ',') walkability=5642/5642 peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) exit=$($Child.ExitCode)" + if($Child.ExitCode-ne0){throw "CPU reference returned $($Child.ExitCode): W$Workers"} + break + } +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11FinalInterleaved.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11FinalInterleaved.ps1 new file mode 100644 index 0000000..277943c --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11FinalInterleaved.ps1 @@ -0,0 +1,77 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} + +$Runs=@( + @{Mode='cpu';Name='step11_race_cpu_A'}, + @{Mode='gpu';Name='step11_race_gpu_A'}, + @{Mode='gpu';Name='step11_race_gpu_B'}, + @{Mode='cpu';Name='step11_race_cpu_B'} +) +$EightGB=8L*1024L*1024L*1024L +foreach($Run in $Runs) +{ + $Arguments=@('--clip-radius=3','--workers=8','--quit-after-clipmap',"--$($Run.Mode)-far") + if($Run.Mode-eq'gpu'){$Arguments+='--gpu-far-no-present-hold'} + $StdoutPath=Join-Path $PSScriptRoot ($Run.Name+'.stdout.log') + $StderrPath=Join-Path $PSScriptRoot ($Run.Name+'.stderr.log') + Write-Output "STEP11_RACE_RUN mode=$($Run.Mode) name=$($Run.Name) priority=BelowNormal affinity=0xFF00 workers=8 command=`"$ExecutablePath`" $($Arguments -join ' ')" + for($Attempt=0;$Attempt-lt2;$Attempt++) + { + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $HostRunClock=[Diagnostics.Stopwatch]::StartNew() + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal';$Child.ProcessorAffinity=[IntPtr]0xFF00 + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($Child.PrivateMemorySize64-ge$EightGB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 50 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh();$HostRunClock.Stop();$HostRunMs=$HostRunClock.Elapsed.TotalMilliseconds + $ViewerExitCode=$Child.ExitCode + if($ViewerExitCode-eq-1073741502-and$Attempt-eq0){continue} + if($ViewerExitCode-eq-1073741502){throw '0xC0000142 repeated after its single retry; stopping.'} + if($OverMemoryLimit){throw "Viewer stopped at the 8 GiB private-memory ceiling: $($Run.Name)"} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + if(-not$LogText.Contains('[InitialClipmapReady]')) + {throw "Full clipmap was not ready in $($Run.Name); exit=$ViewerExitCode"} + $Ready=[regex]::Match($LogText,'(?m)^\[InitialClipmapReady\] ([0-9.]+) s') + $Presented=[regex]::Match($LogText,'(?m)^\[WholeViewPresented\] at_ms=([0-9.]+) present_ms=([0-9.]+).*hr=0x([0-9A-Fa-f]{8})') + if(-not$Presented.Success){throw "Whole-view present marker missing in $($Run.Name)"} + $Warmup=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] dispatched=[0-9]+ .*queue_ms=([0-9.]+)') + $Wait=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] completion_wait_ms=([0-9.]+)') + $WarmupMs=if($Warmup.Success){[double]$Warmup.Groups[1].Value+$(if($Wait.Success){[double]$Wait.Groups[1].Value}else{0.0})}else{0.0} + $Memory=[regex]::Match($LogText,'(?m)^\[GpuFarMemory\] dxgi_local_sampled_peak_mb=([0-9.]+)') + $CombinedGB=$PeakPrivate/1GB + if($Memory.Success){$CombinedGB=($PeakPrivate+[double]$Memory.Groups[1].Value*1MB)/1GB} + if($CombinedGB-ge8.0){throw "Viewer exceeded conservative private + DXGI-local 8 GiB ceiling: $($Run.Name) ($CombinedGB GiB)"} + Write-Output "STEP11_RACE_RESULT mode=$($Run.Mode) name=$($Run.Name) warmup_ms=$([math]::Round($WarmupMs,3)) ready_ms=$([math]::Round([double]$Ready.Groups[1].Value*1000,3)) viewer_whole_view_present_return_ms=$($Presented.Groups[1].Value) present_ms=$($Presented.Groups[2].Value) present_hr=0x$($Presented.Groups[3].Value.ToUpperInvariant()) host_process_exit_ms=$([math]::Round($HostRunMs,3)) peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) conservative_private_plus_dxgi_gb=$([math]::Round($CombinedGB,2)) exit=$ViewerExitCode" + $Controls=[regex]::Match($LogText,'(?m)^\[ProcessControls\].*') + if($Controls.Success){Write-Output $Controls.Value} + if($ViewerExitCode-ne0){throw "Viewer returned $ViewerExitCode`: $($Run.Name)"} + break + } +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11GpuSurvival.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11GpuSurvival.ps1 new file mode 100644 index 0000000..e1d50d9 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11GpuSurvival.ps1 @@ -0,0 +1,59 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} +$Arguments=@('--clip-radius=3','--workers=8','--quit-after-clipmap','--gpu-far-audit','--gpu-far-prewarm') +$Name='step11_gpu_survival' +$StdoutPath=Join-Path $PSScriptRoot ($Name+'.stdout.log') +$StderrPath=Join-Path $PSScriptRoot ($Name+'.stderr.log') +$EightGB=8L*1024L*1024L*1024L +Write-Output "STEP11_SURVIVAL_RUN command=`"$ExecutablePath`" $($Arguments -join ' ')" +for($Attempt=0;$Attempt-lt2;$Attempt++) +{ + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal';$Child.ProcessorAffinity=[IntPtr]0xFF00 + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($Child.PrivateMemorySize64-ge$EightGB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 100 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh() + if($Child.ExitCode-eq-1073741502-and$Attempt-eq0){continue} + if($Child.ExitCode-eq-1073741502){throw '0xC0000142 repeated after its single retry; stopping.'} + if($OverMemoryLimit){throw 'GPU survival audit stopped at the private-memory ceiling.'} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + if(-not$LogText.Contains('[InitialClipmapReady]')){throw "GPU survival audit did not reach full residency; exit=$($Child.ExitCode)"} + $Audit=[regex]::Match($LogText,'(?m)^\[GpuFarSurvivalAudit\].*status=(PASS|FAIL)') + $Memory=[regex]::Match($LogText,'(?m)^\[GpuFarMemory\] dxgi_local_sampled_peak_mb=([0-9.]+)') + if(-not$Audit.Success){throw 'GPU survival audit result marker missing.'} + $DxgiMB=if($Memory.Success){[double]$Memory.Groups[1].Value}else{0.0} + $CombinedGB=($PeakPrivate+$DxgiMB*1MB)/1GB + if($CombinedGB-ge8.0){throw "GPU survival exceeded conservative private + DXGI-local 8 GiB ceiling: $CombinedGB GiB"} + Write-Output "STEP11_SURVIVAL_RESULT audit=$($Audit.Groups[1].Value) peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) dxgi_local_peak_mb=$DxgiMB conservative_private_plus_dxgi_gb=$([math]::Round($CombinedGB,2)) exit=$($Child.ExitCode) stdout=$StdoutPath stderr=$StderrPath" + if($Audit.Groups[1].Value-ne'PASS'){throw 'GPU survival audit failed.'} + if($Child.ExitCode-ne0){throw "Viewer returned $($Child.ExitCode)"} + break +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11ShaderFirstUse.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11ShaderFirstUse.ps1 new file mode 100644 index 0000000..f78af7c --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11ShaderFirstUse.ps1 @@ -0,0 +1,70 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} + +$Entries=@('EvaluateFarFieldCS','ClassifyCS','ClassifyFarCS','ScanGroupsCS','EmitCS','EmitNearCS', + 'BuildFarConnectorRingsCS','EmitFarConnectorPanelsCS','ClassifyFarSkirtsCS', + 'ScanFarSkirtsCS','EmitFarSkirtsCS','NoiseProbeCS') +$EightGB=8L*1024L*1024L*1024L +foreach($Entry in $Entries) +{ + $Name='step11_shader_'+$Entry + $StdoutPath=Join-Path $PSScriptRoot ($Name+'.stdout.log') + $StderrPath=Join-Path $PSScriptRoot ($Name+'.stderr.log') + $Arguments=@('--workers=8','--gpu-far-warmup-only',"--gpu-far-warmup-entry=$Entry") + Write-Output "STEP11_SHADER_RUN entry=$Entry freshness=fresh_process affinity=0xFF00 command=`"$ExecutablePath`" $($Arguments -join ' ')" + for($Attempt=0;$Attempt-lt2;$Attempt++) + { + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $HostRunClock=[Diagnostics.Stopwatch]::StartNew() + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal';$Child.ProcessorAffinity=[IntPtr]0xFF00 + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($Child.PrivateMemorySize64-ge$EightGB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 50 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh();$HostRunClock.Stop();$HostRunMs=$HostRunClock.Elapsed.TotalMilliseconds + $ViewerExitCode=$Child.ExitCode + if($ViewerExitCode-eq-1073741502-and$Attempt-eq0){continue} + if($ViewerExitCode-eq-1073741502){throw '0xC0000142 repeated after its single retry; stopping.'} + if($OverMemoryLimit){throw "Warmup process stopped at the 8 GiB private-memory ceiling: $Entry"} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + $Selected=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] dispatched=1 selected='+[regex]::Escape($Entry)+'.*queue_ms=([0-9.]+)') + $Dispatch=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] entry='+[regex]::Escape($Entry)+' dispatch_call_ms=([0-9.]+)') + $Wait=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] completion_wait_ms=([0-9.]+)') + $Create=[regex]::Match($LogText,'(?m)^\[GpuPipelineProfile\] stage=shader_object_create entry='+[regex]::Escape($Entry)+' duration_ms=([0-9.]+)') + if(-not$Selected.Success-or-not$Dispatch.Success-or-not$Wait.Success-or-not$Create.Success) + {throw "Isolated warmup markers missing for $Entry; exit=$ViewerExitCode"} + $Memory=[regex]::Match($LogText,'(?m)^\[GpuFarMemory\] dxgi_local_sampled_peak_mb=([0-9.]+)') + $CombinedGB=$PeakPrivate/1GB + if($Memory.Success){$CombinedGB=($PeakPrivate+[double]$Memory.Groups[1].Value*1MB)/1GB} + if($CombinedGB-ge8.0){throw "Warmup exceeded conservative private + DXGI-local 8 GiB ceiling: $Entry ($CombinedGB GiB)"} + Write-Output "STEP11_SHADER_RESULT entry=$Entry object_create_ms=$($Create.Groups[1].Value) dispatch_call_ms=$($Dispatch.Groups[1].Value) isolated_queue_ms=$($Selected.Groups[1].Value) completion_wait_ms=$($Wait.Groups[1].Value) host_process_exit_ms=$([math]::Round($HostRunMs,3)) peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) conservative_private_plus_dxgi_gb=$([math]::Round($CombinedGB,2)) exit=$ViewerExitCode" + if($ViewerExitCode-ne0){throw "Warmup process returned $ViewerExitCode for $Entry"} + break + } +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11WarmupControls.ps1 b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11WarmupControls.ps1 new file mode 100644 index 0000000..7bc773c --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/RunStep11WarmupControls.ps1 @@ -0,0 +1,85 @@ +[CmdletBinding()] +param([string]$ExecutableName='VoxelForgeGpuFieldStep11Warmup.exe') + +$ErrorActionPreference='Stop' +$HostProcess=Get-Process -Id $PID +$HostProcess.PriorityClass='BelowNormal' +$HostProcess.ProcessorAffinity=[IntPtr]0xFF00 +$StandaloneRoot=[IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..\..')) +$ExecutablePath=Join-Path $StandaloneRoot ('bin\'+$ExecutableName) +if([IO.Path]::GetFileName($ExecutableName)-ne$ExecutableName-or[IO.Path]::GetExtension($ExecutableName)-ne'.exe') +{throw 'ExecutableName must be an executable filename.'} +if(-not(Test-Path -LiteralPath $ExecutablePath -PathType Leaf)){throw "Viewer not found: $ExecutablePath"} + +$Runs=@( + @{Name='step11_warmup_workers8';Workers=8;Mode='overlap'}, + @{Name='step11_warmup_workers4';Workers=4;Mode='overlap'}, + @{Name='step11_warmup_workers7';Workers=7;Mode='overlap'}, + @{Name='step11_warmup_workers6';Workers=6;Mode='overlap'}, + @{Name='step11_warmup_thread_normal';Workers=8;Mode='normal_priority'}, + @{Name='step11_warmup_before_workers';Workers=8;Mode='before_workers'} +) +$EightGB=8L*1024L*1024L*1024L +foreach($Run in $Runs) +{ + $Arguments=@('--clip-radius=3',"--workers=$($Run.Workers)",'--quit-after-clipmap','--gpu-far-no-present-hold') + if($Run.Mode-eq'overlap'){$Arguments+='--gpu-far-prewarm'} + elseif($Run.Mode-eq'normal_priority'){$Arguments+=@('--gpu-far-prewarm','--gpu-far-warmup-normal-priority')} + else{$Arguments+='--gpu-far-warmup-before-workers'} + $StdoutPath=Join-Path $PSScriptRoot ($Run.Name+'.stdout.log') + $StderrPath=Join-Path $PSScriptRoot ($Run.Name+'.stderr.log') + Write-Output "STEP11_RUN name=$($Run.Name) mode=$($Run.Mode) workers=$($Run.Workers) affinity=0xFF00 command=`"$ExecutablePath`" $($Arguments -join ' ')" + for($Attempt=0;$Attempt-lt2;$Attempt++) + { + if($Attempt-gt0) + {Write-Output '0xC0000142 encountered; waiting 60 seconds before the single permitted retry.';Start-Sleep -Seconds 60} + Remove-Item -LiteralPath $StdoutPath,$StderrPath -Force -ErrorAction SilentlyContinue + $HostRunClock=[Diagnostics.Stopwatch]::StartNew() + $Child=Start-Process -FilePath $ExecutablePath -ArgumentList $Arguments -WorkingDirectory $StandaloneRoot ` + -WindowStyle Hidden -PassThru -RedirectStandardOutput $StdoutPath -RedirectStandardError $StderrPath + $PeakPrivate=0L;$OverMemoryLimit=$false + try + { + while(-not$Child.HasExited) + { + $Child.Refresh();if($Child.HasExited){break} + $Child.PriorityClass='BelowNormal';$Child.ProcessorAffinity=[IntPtr]0xFF00 + $PeakPrivate=[Math]::Max($PeakPrivate,$Child.PrivateMemorySize64) + if($Child.PrivateMemorySize64-ge$EightGB) + {$OverMemoryLimit=$true;$Child.Kill();$Child.WaitForExit();break} + Start-Sleep -Milliseconds 50 + } + } + finally + { + if(-not$Child.HasExited){$Child.Kill();$Child.WaitForExit()} + } + $Child.WaitForExit();$Child.Refresh();$HostRunClock.Stop();$HostRunMs=$HostRunClock.Elapsed.TotalMilliseconds + $ViewerExitCode=$Child.ExitCode + if($ViewerExitCode-eq-1073741502-and$Attempt-eq0){continue} + if($ViewerExitCode-eq-1073741502){throw '0xC0000142 repeated after its single retry; stopping.'} + if($OverMemoryLimit){throw "Viewer stopped at the 8 GiB private-memory ceiling: $($Run.Name)"} + $LogText=Get-Content -LiteralPath $StdoutPath -Raw + if(-not$LogText.Contains('[InitialClipmapReady]')) + {throw "Full clipmap was not ready in $($Run.Name); exit=$ViewerExitCode"} + $Ready=[regex]::Match($LogText,'(?m)^\[InitialClipmapReady\] ([0-9.]+) s') + $Presented=[regex]::Match($LogText,'(?m)^\[WholeViewPresented\] at_ms=([0-9.]+) present_ms=([0-9.]+).*hr=0x([0-9A-Fa-f]{8})') + $Queue=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] dispatched=[0-9]+ .*queue_ms=([0-9.]+)') + $Wait=[regex]::Match($LogText,'(?m)^\[GpuShaderWarmup\] completion_wait_ms=([0-9.]+)') + if(-not$Presented.Success){throw "Whole-view present marker missing in $($Run.Name)"} + $WarmupMs=if($Queue.Success){[double]$Queue.Groups[1].Value+$(if($Wait.Success){[double]$Wait.Groups[1].Value}else{0.0})}else{0.0} + $Memory=[regex]::Match($LogText,'(?m)^\[GpuFarMemory\] dxgi_local_sampled_peak_mb=([0-9.]+)') + $CombinedGB=$PeakPrivate/1GB + if($Memory.Success){$CombinedGB=($PeakPrivate+[double]$Memory.Groups[1].Value*1MB)/1GB} + if($CombinedGB-ge8.0){throw "Viewer exceeded conservative private + DXGI-local 8 GiB ceiling: $($Run.Name) ($CombinedGB GiB)"} + Write-Output "STEP11_RESULT name=$($Run.Name) mode=$($Run.Mode) workers=$($Run.Workers) warmup_ms=$([math]::Round($WarmupMs,3)) ready_ms=$([math]::Round([double]$Ready.Groups[1].Value*1000,3)) whole_view_present_return_ms=$($Presented.Groups[1].Value) present_ms=$($Presented.Groups[2].Value) present_hr=0x$($Presented.Groups[3].Value.ToUpperInvariant()) host_process_exit_ms=$([math]::Round($HostRunMs,3)) peak_private_gb=$([math]::Round($PeakPrivate/1GB,2)) conservative_private_plus_dxgi_gb=$([math]::Round($CombinedGB,2)) exit=$ViewerExitCode" + if($Run.Mode-eq'normal_priority') + {Select-String -Path $StdoutPath -Pattern '^\[GpuShaderWarmupThread\]|^\[GpuShaderWarmup\] queue_thread=' | ForEach-Object {Write-Output $_.Line}} + if($Run.Mode-eq'before_workers') + {Select-String -Path $StdoutPath -Pattern '^\[GpuShaderWarmup\] queue_thread=|^\[GpuShaderWarmupBeforeWorkers\]' | ForEach-Object {Write-Output $_.Line}} + $Timeline=[regex]::Match($LogText,'(?m)^\[GpuFarTimeline\].*') + if($Timeline.Success){Write-Output $Timeline.Value} + if($ViewerExitCode-ne0){throw "Viewer returned $ViewerExitCode`: $($Run.Name)"} + break + } +} diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/STEP11_REPORT.md b/Standalone/Research/OwnerShapeWorld/gpu_field_port/STEP11_REPORT.md new file mode 100644 index 0000000..bd9bce1 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/STEP11_REPORT.md @@ -0,0 +1,71 @@ +# GPU field port, step 11: warm-up controls and far emitter split + +Date: 2026-10-07. The Step 11 viewer and agreement runner were built from `Standalone\` sources with `/MP8`, BelowNormal process priority, and affinity `0xFF00`. All viewer runs were serial, hidden, and closed at exit. No `0xC0000142` retry was needed. The only affinity exception was the single 8-worker viewer run at `0xFFFF`. No capture was opened in an image viewer. + +## Warm-up controls + +`warm-up ms` is the logged queue time plus its completion wait. Each run reports whole-view readiness from `[InitialClipmapReady]` and the subsequent `[WholeViewPresented] at_ms` clock. The pre-split controls used the original 11-entry warm-up; after the split, startup dispatches the nine kernels used by the viewer's far path. + +| Control | Warm-up before / after split | Ready / whole-view present before | Ready / whole-view present after | +|---|---:|---:|---:| +| 8 workers, `0xFF00` | 2,609 / 2,038 ms | 3,501 / 3,502.360 ms | 3,059 / 3,059.825 ms | +| 7 workers, `0xFF00` | 2,725 / 1,986 ms | 3,433 / 3,434.035 ms | 3,152 / 3,152.550 ms | +| 6 workers, `0xFF00` | 2,614 / 2,127 ms | 3,283 / 3,283.377 ms | 3,143 / 3,144.162 ms | +| 4 workers, `0xFF00` | 2,579 / 2,068 ms | 3,190 / 3,190.884 ms | 3,199 / 3,200.342 ms | +| 8 workers, warm-up thread at normal base priority | 2,669 / 2,076 ms | 3,498 / 3,498.548 ms | 3,089 / 3,090.267 ms | +| 8 workers, warm-up completes before generation workers | 2,367 / 1,758 ms | 3,623 / 3,623.833 ms | 3,306 / 3,306.937 ms | + +Worker-count effects were not monotonic: the fastest post-split readiness was the 8-worker run, and changing the warm-up thread to normal base priority produced no meaningful improvement. Completing warm-up before generation workers shortened the queue by about 280 ms versus the overlapping 8-worker control, but made the full view about 247 ms slower because that time could no longer overlap generation. + +Each worker/priority control is one fresh launch per variant, so small readiness differences can be run variation. The two post-split GPU race launches independently measured 2,001 and 2,033 ms of warm-up. + +The one allowed all-CPU-affinity run used BelowNormal priority, 8 workers, and verified process mask `0xFFFF`: warm-up **1,710 ms**, ready **2,766 ms**, whole-view present return **2,767.140 ms**, host process exit **2,936.462 ms**. This is about 0.29 s faster warm-up and 0.39 s faster readiness than the post-split `0xFF00` 8-worker control, but it remains well behind CPU. + +## Isolated shader first use + +Each entry ran alone in a fresh viewer process at BelowNormal / `0xFF00`; no earlier dispatch of that entry occurred in that process. `queue ms` covers tiny-resource setup, dispatch submission, and `Flush`, so it measures the first-use path rather than a driver-internal compiler timer. The direct `Dispatch` call was only 0.003–0.007 ms and completion waits were at most 16 ms. Driver compilation is consistent with the long queue times, but was not directly observed. + +| Entry | Original queue ms | After split queue ms | +|---|---:|---:| +| `EvaluateFarFieldCS` | 1,839 | 1,757 | +| `ClassifyCS` | 3.2 | 3.1 | +| `ClassifyFarCS` | 3.0 | 3.0 | +| `ScanGroupsCS` | 3.2 | 3.1 | +| `EmitCS` (original mixed path → far specialization) | 2,327 | 3.2 | +| `EmitNearCS` (retained original step-one path) | — | 2,429 | +| `BuildFarConnectorRingsCS` | 820 | 784 | +| `EmitFarConnectorPanelsCS` | 3.3 | 3.4 | +| `ClassifyFarSkirtsCS` | 478 | 507 | +| `ScanFarSkirtsCS` | 2.8 | 3.1 | +| `EmitFarSkirtsCS` | 1,031 | 975 | +| `NoiseProbeCS` | 3.3 | 3.4 | + +The original `EmitCS` root helper included an analytic midpoint fallback that calls `NearFieldDensityAt`, which expands into the shared primitive-distance and owner-detail field routines. That fallback is only reachable for `StepVoxels == 1`; far tiles use larger steps. I split the step-one code into `EmitNearCS` and made `EmitCS` retain CPU-authored midpoint records while omitting that unreachable branch for the far path. FXC no longer reports X4714 for far `EmitCS`; the warning remains on `EmitNearCS`. The viewer dispatches the specialized entry for far tiles with `tile.step > 1`, preserving the original path for step-one callers. This reduced the far emitter's isolated queue from **2.327 s to 3.2 ms**. Other first-use costs remain, especially field evaluation, connector rings, and skirt emission. + +Startup warm-up now dispatches the nine kernels used by the viewer's far path. It omits the CPU-path classifier, the step-one emitter, and the noise diagnostic. Under `0xFF00`, its queue fell from roughly **2.6–2.7 s to 2.0–2.13 s** in the worker sweep. + +## Fresh-launch whole-view race + +Order was CPU A, GPU A, GPU B, CPU B. Every launch used 8 workers, BelowNormal, and `0xFF00`. + +| Run | Ready | `[WholeViewPresented]` | Host process exit | Warm-up | +|---|---:|---:|---:|---:| +| CPU A | 1,503 ms | 1,503.159 ms | 1,718.840 ms | — | +| GPU A | 3,183 ms | 3,183.824 ms | 3,367.918 ms | 2,001 ms | +| GPU B | 3,124 ms | 3,124.843 ms | 3,291.548 ms | 2,033 ms | +| CPU B | 1,352 ms | 1,352.567 ms | 1,488.795 ms | — | + +Median viewer-clock time was **1.428 s CPU vs 3.154 s hybrid**, a **1.726 s / 2.21×** CPU lead. Median host-clock time was **1.604 s CPU vs 3.330 s hybrid**, a **1.726 s / 2.08×** CPU lead. The hybrid is still slower. Its measured floor includes about 2.0 s of shader warm-up; far input preparation was 104 ms, GPU busy time about 199 ms, and the GPU queue envelope 610–859 ms. These stages overlap, so they should not be added as independent durations. + +The all-CPU-affinity result is separate from the race: **2.767 s** whole-view present return versus the normal-rule CPU median of **1.428 s**. All automated `Present` calls returned `DXGI_STATUS_OCCLUDED` (`0x087A0001`), so these clocks measure readiness and API return, not physical scanout. + +## Correctness and memory + +- Whole-far agreement: 1,114 eligible tiles, 152 near-transition tiles skipped; **zero GPU and WARP topology differences**, zero protected-exception differences across 127,401 cells, zero thin-feature differences across 353 cells, and bit-identical repeated GPU outputs. +- GPU-mesh survival audit: **PASS** at full clipmap residency; peak 3.46 GiB private plus 2,402.1 MiB DXGI local, **5.81 GiB combined**. +- CPU reference at workers 1 and 8: identical density `0xdb2991c73215af4c`, mesh `0x8236c5edd7fc8e4f`, payload `0x4c48fa75a543d58e`, and topology `0xbea22e76b34a4dfc`; walkability **5,642/5,642** in both runs. +- Ten CPU/GPU capture pairs reached `[InitialClipmapReady]`. Maximum combined capture memory was **6.11 GiB**. Numeric RGB comparison is in [step11_capture_comparison.md](step11_capture_comparison.md); the results remain within the Step 10 ranges. + +Primary artifacts: `RunStep11WarmupControls.ps1`, `RunStep11ShaderFirstUse.ps1`, `RunStep11FinalInterleaved.ps1`, `RunStep11AllCpuAffinity.ps1`, `RunStep11GpuSurvival.ps1`, `RunStep11CpuReference.ps1`, `RunStep11CaptureMatrix.ps1`, `step11_whole_far_agreement.stdout.log`, `step11_gpu_survival.stdout.log`, and the `step11_*` run logs. + +The previously reported direct-GPU LOD3/4 coverage loss and movement-crossing output-slot overflow remain unresolved; this step made no changes to those lower-priority paths. No commit, push, or stash was made. diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/precompiled/EmitCS.cso b/Standalone/Research/OwnerShapeWorld/gpu_field_port/precompiled/EmitCS.cso index 6f47b3d01308c3ba34e2b427ae629a87369a8d84..b6acf1f3cd80016756c1609a071550cfeb4374dd 100644 GIT binary patch literal 11764 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 KS2N^yGXDXLvLiA8 literal 481420 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

9_T*Kr-}JZ-OJAFb!$ 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 diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/precompiled/EmitNearCS.cso b/Standalone/Research/OwnerShapeWorld/gpu_field_port/precompiled/EmitNearCS.cso new file mode 100644 index 0000000000000000000000000000000000000000..6f47b3d01308c3ba34e2b427ae629a87369a8d84 GIT binary patch literal 481420 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

9_T*Kr-}JZ-OJAFb!$ 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 literal 0 HcmV?d00001 diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/step10_capture_comparison.md b/Standalone/Research/OwnerShapeWorld/gpu_field_port/step10_capture_comparison.md new file mode 100644 index 0000000..c368e97 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/step10_capture_comparison.md @@ -0,0 +1,16 @@ +# Step 10 full-residency capture comparison + +All ten CPU/GPU pairs were captured after `[InitialClipmapReady]`. Images were compared as RGB arrays; no full-size capture was opened in an image viewer. + +| View | Size | RGB MAE | RGB RMSE | Changed pixels | Pixels max channel >32 | Max channel | +|---|---:|---:|---:|---:|---:|---:| +| chamber | 1280x800 | 0.6076 | 1.8655 | 42.6368% | 0.0183% | 124 | +| tunnel | 1280x800 | 0.6383 | 3.3799 | 31.7335% | 0.2772% | 130 | +| passage | 1280x800 | 1.6092 | 3.6878 | 50.4982% | 0.1733% | 52 | +| far | 1280x800 | 0.7909 | 2.1558 | 44.8325% | 0.0198% | 128 | +| passage_floor_closeup | 1280x800 | 0.9314 | 2.4800 | 43.0219% | 0.0500% | 100 | +| tunnel_bend | 1280x800 | 0.8129 | 2.1599 | 40.9629% | 0.0708% | 55 | +| remote_yaw0 | 1280x800 | 0.2002 | 2.6637 | 4.2874% | 0.2415% | 125 | +| remote_yaw90 | 1280x800 | 0.4083 | 4.3552 | 2.2432% | 0.6948% | 94 | +| remote_yaw180 | 1280x800 | 0.0484 | 1.3206 | 2.9787% | 0.0341% | 102 | +| remote_yaw270 | 1280x800 | 0.2355 | 3.1104 | 5.5592% | 0.4098% | 107 | diff --git a/Standalone/Research/OwnerShapeWorld/gpu_field_port/step11_capture_comparison.md b/Standalone/Research/OwnerShapeWorld/gpu_field_port/step11_capture_comparison.md new file mode 100644 index 0000000..6061171 --- /dev/null +++ b/Standalone/Research/OwnerShapeWorld/gpu_field_port/step11_capture_comparison.md @@ -0,0 +1,16 @@ +# Step 11 full-residency capture comparison + +All ten CPU/GPU pairs were captured after `[InitialClipmapReady]`. The files were compared numerically as RGB arrays and were not opened in an image viewer. + +| View | Size | RGB MAE | RGB RMSE | Changed pixels | Pixels max channel >32 | Max channel | +|---|---:|---:|---:|---:|---:|---:| +| chamber | 1280x800 | 0.6076 | 1.8655 | 42.6368% | 0.0183% | 124 | +| tunnel | 1280x800 | 0.6383 | 3.3799 | 31.7335% | 0.2772% | 130 | +| passage | 1280x800 | 1.6092 | 3.6878 | 50.4982% | 0.1733% | 52 | +| far | 1280x800 | 0.7909 | 2.1558 | 44.8325% | 0.0198% | 128 | +| passage_floor_closeup | 1280x800 | 0.9314 | 2.4800 | 43.0219% | 0.0500% | 100 | +| tunnel_bend | 1280x800 | 0.8129 | 2.1599 | 40.9629% | 0.0708% | 55 | +| remote_yaw0 | 1280x800 | 0.1994 | 2.6632 | 4.2472% | 0.2415% | 125 | +| remote_yaw90 | 1280x800 | 0.4087 | 4.3554 | 2.2590% | 0.6948% | 94 | +| remote_yaw180 | 1280x800 | 0.0484 | 1.3206 | 2.9787% | 0.0341% | 102 | +| remote_yaw270 | 1280x800 | 0.2355 | 3.1104 | 5.5593% | 0.4098% | 107 | diff --git a/Standalone/Research/OwnerShapeWorld/gpu_first_port/VoxelForgeGpuMesher.hlsl b/Standalone/Research/OwnerShapeWorld/gpu_first_port/VoxelForgeGpuMesher.hlsl index 9185fa9..89062de 100644 --- a/Standalone/Research/OwnerShapeWorld/gpu_first_port/VoxelForgeGpuMesher.hlsl +++ b/Standalone/Research/OwnerShapeWorld/gpu_first_port/VoxelForgeGpuMesher.hlsl @@ -150,6 +150,27 @@ float EdgeRootParameter(int3 cell,uint edge,StructuredBuffer density, return VF_FieldRefineRoot(da,db,mid,hasMid); } +float FarEdgeRootParameter(int3 cell,uint edge,StructuredBuffer density, + StructuredBuffer midpointIds,StructuredBuffer midpointRecords) +{ + const int2 corners=EdgeCorners[edge]; + const int3 pa=cell+CornerOffset[corners.x]; + const int3 pb=cell+CornerOffset[corners.y]; + const float da=LatticeValue(density,pa),db=LatticeValue(density,pb); + const uint midId=midpointIds[CellIndex(uint3(cell))]; + float mid=0.0f;uint hasMid=0; + if(midId!=0xffffffffu) + { + const MidpointRecord record=midpointRecords[midId]; + hasMid=(record.metadata.x>>edge)&1; + mid=record.values[edge>>2][edge&3]; + } + // Far tiles always have StepVoxels > 1. The exact midpoint field fallback in + // EdgeRootParameter is restricted to StepVoxels == 1, so omit that LOD0-only + // branch from the far entry point while retaining every CPU-authored midpoint. + return VF_FieldRefineRoot(da,db,mid,hasMid); +} + float3 EdgePosition(int3 cell,uint edge,float t) { const int2 corners = EdgeCorners[edge]; @@ -1086,7 +1107,7 @@ RWByteAddressBuffer VertexBytes : register(u5); RWByteAddressBuffer IndexBytes : register(u6); [numthreads(256,1,1)] -void EmitCS(uint3 dispatchId : SV_DispatchThreadID) +void EmitNearCS(uint3 dispatchId : SV_DispatchThreadID) { const uint index = dispatchId.x; if (index >= CellCount) return; @@ -1120,6 +1141,41 @@ void EmitCS(uint3 dispatchId : SV_DispatchThreadID) } } +[numthreads(256,1,1)] +void EmitCS(uint3 dispatchId : SV_DispatchThreadID) +{ + const uint index = dispatchId.x; + if (index >= CellCount) return; + const uint caseIndex = Cases[index]; + const uint localBase = LocalOffsets[index] + PrefixGroups[index / 256]; + if(localBase>=OutputVertexCapacity)return; + const uint base = OutputBaseVertex + localBase; + const uint3 cell = uint3(index % CellsPerAxis, + (index / CellsPerAxis) % CellsPerAxis, + index / (CellsPerAxis * CellsPerAxis)); + [loop] + for (uint slot = 0; slot < 15; ++slot) + { + uint tableSlot = slot; + if (slot % 3 == 1) tableSlot = slot + 1; + else if (slot % 3 == 2) tableSlot = slot - 1; + const int edgeValue = Triangles[caseIndex * 16 + tableSlot]; + if (edgeValue < 0) break; + if(localBase+slot>=OutputVertexCapacity)break; + const uint edge = uint(edgeValue); + const float rootT=FarEdgeRootParameter(int3(cell),edge,Density,MidpointCellIds,MidpointData); + GpuVertex v; + v.position = EdgePosition(int3(cell),edge,rootT); + v.normal = EdgeNormal(int3(cell),edge,rootT,Density); + v.uv = v.position.xy / VoxelSizeCm; + const uint byteAddress = (base + slot) * 32; + VertexBytes.Store3(byteAddress, asuint(v.position)); + VertexBytes.Store3(byteAddress + 12, asuint(v.normal)); + VertexBytes.Store2(byteAddress + 24, asuint(v.uv)); + IndexBytes.Store((base + slot) * 4, base + slot); + } +} + [numthreads(64,1,1)] void ClassifyFarSkirtsCS(uint3 dispatchId : SV_DispatchThreadID) { diff --git a/Standalone/Source/StandaloneViewer.cpp b/Standalone/Source/StandaloneViewer.cpp index 0831855..49c2bb4 100644 --- a/Standalone/Source/StandaloneViewer.cpp +++ b/Standalone/Source/StandaloneViewer.cpp @@ -1490,6 +1490,9 @@ namespace bool bGpuFarAuditEnabled=false; bool bGpuFarShaderPrewarm=false,bDisableGpuWarmupPresentHold=false; bool bGpuFarWarmupResourcesOnly=false; + bool bGpuFarWarmupNormalPriority=false,bGpuFarWarmupBeforeWorkers=false; + bool bGpuFarWarmupOnly=false; + std::string GpuWarmupEntryFilter; std::thread GpuShaderWarmupThread; bool bGpuShaderWarmupQueueSucceeded=false; std::string GpuShaderWarmupQueueError; @@ -1882,11 +1885,22 @@ float3 Lit=Rock*(Ambient+0.88*Diffuse)+float3(0.50,0.69,0.82)*Head*0.75; bGpuShaderWarmupQueueSucceeded=false;GpuShaderWarmupQueueError.clear(); GpuShaderWarmupThread=std::thread([this]() { + bool bNormalBasePriority=false; + if(bGpuFarWarmupNormalPriority) + { + // The process stays BelowNormal; HIGHEST relative priority raises this + // worker thread to a normal base priority on Windows. + bNormalBasePriority=SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST)!=0; + std::printf("[GpuShaderWarmupThread] priority=%s process=BelowNormal thread_relative=Highest\n", + bNormalBasePriority?"Normal":"set_failed"); + std::fflush(stdout); + } bGpuShaderWarmupQueueSucceeded=VoxelForgeGpuFarViewer::QueueFarShaderWarmup( - Device,Context,GpuFarShaderPath,!bGpuFarWarmupResourcesOnly, + Device,Context,GpuFarShaderPath,!bGpuFarWarmupResourcesOnly,GpuWarmupEntryFilter, GpuShaderWarmupQueueError); }); - std::printf("[GpuShaderWarmup] queue_thread=started overlap=CPU_shape_compile\n"); + std::printf("[GpuShaderWarmup] queue_thread=started overlap=%s\n", + bGpuFarWarmupBeforeWorkers?"none_before_generation_workers":"CPU_shape_compile"); std::fflush(stdout); } @@ -5520,7 +5534,14 @@ float3 Lit=Rock*(Ambient+0.88*Diffuse)+float3(0.50,0.69,0.82)*Head*0.75; int main(int Argc,char** Argv) { SetPriorityClass(GetCurrentProcess(),BELOW_NORMAL_PRIORITY_CLASS); - SetProcessAffinityMask(GetCurrentProcess(),static_cast(0xFF00)); + const bool bAllCpuAffinity=std::find_if(Argv+1,Argv+Argc,[](const char* Arg) + {return std::string_view(Arg)=="--affinity-all-cpu";})!=Argv+Argc; + const DWORD_PTR RequestedAffinity=static_cast(bAllCpuAffinity?0xFFFF:0xFF00); + const BOOL bAffinitySet=SetProcessAffinityMask(GetCurrentProcess(),RequestedAffinity); + DWORD_PTR ProcessAffinity=0,SystemAffinity=0; + GetProcessAffinityMask(GetCurrentProcess(),&ProcessAffinity,&SystemAffinity); + std::printf("[ProcessControls] priority_class=BelowNormal affinity_mask=0x%llX set=%s\n", + static_cast(ProcessAffinity),bAffinitySet?"true":"false"); const auto ColdProcessStart=std::chrono::steady_clock::now(); FApp App;App.DataPath=DefaultDataPath().string();App.ColdProcessStart=ColdProcessStart; wchar_t ExecutablePath[MAX_PATH]{}; @@ -5584,6 +5605,18 @@ int main(int Argc,char** Argv) App.bGpuFarEnabled=true,App.bGpuFarShaderPrewarm=true,App.bGpuFarWarmupResourcesOnly=true, App.bShapeWorld=true,App.bForceGenerate=true,App.bPresentCpuFrameBeforeGpu=true, App.bHoldCpuFrameDuringGpuWarmup=true; + else if(Arg=="--gpu-far-warmup-normal-priority") + App.bGpuFarWarmupNormalPriority=true; + else if(Arg=="--gpu-far-warmup-before-workers") + App.bGpuFarEnabled=true,App.bGpuFarShaderPrewarm=true,App.bGpuFarWarmupBeforeWorkers=true, + App.bShapeWorld=true,App.bForceGenerate=true,App.bPresentCpuFrameBeforeGpu=true, + App.bHoldCpuFrameDuringGpuWarmup=true; + else if(Arg=="--gpu-far-warmup-only") + App.bGpuFarEnabled=true,App.bGpuFarShaderPrewarm=true,App.bGpuFarWarmupOnly=true, + App.bShapeWorld=true,App.bForceGenerate=true; + else if(Arg.starts_with("--gpu-far-warmup-entry=")) + App.GpuWarmupEntryFilter=std::string(Arg.substr(std::string_view("--gpu-far-warmup-entry=").size())); + else if(Arg=="--affinity-all-cpu"){} else if(Arg=="--gpu-far-no-present-hold") App.bDisableGpuWarmupPresentHold=true; else if(Arg=="--gpu-far-no-prewarm") @@ -5836,12 +5869,50 @@ int main(int Argc,char** Argv) std::printf("[ColdTimeline] stage=viewer_device_init end_ms=%.3f duration_ms=%.3f\n", std::chrono::duration(std::chrono::steady_clock::now()-ColdProcessStart).count(), std::chrono::duration(std::chrono::steady_clock::now()-DeviceInitStart).count()); - ShowWindow(App.Window,SW_SHOW);UpdateWindow(App.Window); - std::printf("Controls: hold right mouse to look; WASD move; Space/Ctrl (E/Q) up/down; Shift faster; wheel changes speed; F wireframe; G toggles legacy/detailed round walls; H toggles CPU/GPU far tiles; 1-9 toggle LOD; 0 toggle all levels; N/P change seed; T swaps base/round tunnels; V swaps owner density/shape intervals; Esc quit.\n"); - std::printf("Owner data: %s; starting at first-strate open-space sample (%.2f, %.2f, %.2f) m.\n", - App.DataPath.c_str(),App.Position.X,App.Position.Y,App.Position.Z); + if(!App.bGpuFarWarmupOnly) + { + ShowWindow(App.Window,SW_SHOW);UpdateWindow(App.Window); + std::printf("Controls: hold right mouse to look; WASD move; Space/Ctrl (E/Q) up/down; Shift faster; wheel changes speed; F wireframe; G toggles legacy/detailed round walls; H toggles CPU/GPU far tiles; 1-9 toggle LOD; 0 toggle all levels; N/P change seed; T swaps base/round tunnels; V swaps owner density/shape intervals; Esc quit.\n"); + std::printf("Owner data: %s; starting at first-strate open-space sample (%.2f, %.2f, %.2f) m.\n", + App.DataPath.c_str(),App.Position.X,App.Position.Y,App.Position.Z); + } std::fflush(stdout); + if(App.bGpuFarWarmupOnly) + { + const auto WarmupOnlyStart=std::chrono::steady_clock::now(); + std::string WarmupError; + if(!VoxelForgeGpuFarViewer::QueueFarShaderWarmup(App.Device,App.Context,App.GpuFarShaderPath, + true,App.GpuWarmupEntryFilter,WarmupError)) + {std::fprintf(stderr,"[GpuShaderWarmupError] queue: %s\n",WarmupError.c_str());return 5;} + if(!VoxelForgeGpuFarViewer::CompleteFarShaderWarmup(App.Device,App.Context, + App.GpuFarShaderPath,WarmupError)) + {std::fprintf(stderr,"[GpuShaderWarmupError] completion: %s\n",WarmupError.c_str());return 5;} + uint64 WarmupDxgiUsage=0,WarmupDxgiBudget=0; + if(VoxelForgeGpuFarViewer::QueryFarGpuMemory(App.Device,App.Context,App.GpuFarShaderPath, + WarmupDxgiUsage,WarmupDxgiBudget,WarmupError)) + std::printf("[GpuFarMemory] dxgi_local_sampled_peak_mb=%.3f budget_mb=%.3f\n", + static_cast(WarmupDxgiUsage)/1048576.0, + static_cast(WarmupDxgiBudget)/1048576.0); + else + std::printf("[GpuFarMemory] dxgi_local_sampled_peak_mb=unavailable reason=%s\n", + WarmupError.c_str()); + std::printf("[GpuShaderWarmupOnlyComplete] entry=%s total_ms=%.3f\n", + App.GpuWarmupEntryFilter.empty()?"all":App.GpuWarmupEntryFilter.c_str(), + std::chrono::duration(std::chrono::steady_clock::now()-WarmupOnlyStart).count()); + return 0; + } App.StartGpuShaderWarmupAsync(); + if(App.bGpuFarWarmupBeforeWorkers) + { + if(App.GpuShaderWarmupThread.joinable())App.GpuShaderWarmupThread.join(); + if(!App.bGpuShaderWarmupQueueSucceeded) + {std::fprintf(stderr,"[GpuShaderWarmupError] queue: %s\n",App.GpuShaderWarmupQueueError.c_str());return 5;} + std::string WarmupError; + if(!VoxelForgeGpuFarViewer::CompleteFarShaderWarmup(App.Device,App.Context, + App.GpuFarShaderPath,WarmupError)) + {std::fprintf(stderr,"[GpuShaderWarmupError] completion: %s\n",WarmupError.c_str());return 5;} + std::printf("[GpuShaderWarmupBeforeWorkers] completed_before_generation_workers=true\n"); + } App.StartGeneration(); MSG Message{}; while(Message.message!=WM_QUIT)