wip(assembler): round L14 -- far-LOD cost counted; no exact-output lever above 3% (opt-in counters)
Plain W12 far work: LOD6 2.59, LOD8 2.05, LOD4 1.57, LOD5 1.41, LOD7 1.16 worker-s. Ground/cap refinement ~3.95 worker-s and LOD6 connector repair 1.40 worker-s (82% uncached formula calls) build visible geometry; no bit-identical reduction proved. Adds opt-in far-shell column counters (reviewed: no cost when off, interleaved 1.429 vs 1.419 s). All hashes, the crossing hash and route parity are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CSFYgsdW8ejZSyiMf4qRSX
This commit is contained in:
1 parent
976d012a86
commit
a176d0743a
4 files changed
+319
-1
No files matched your search
@@ -1086,6 +1086,23 @@ namespace StandaloneStreamBenchmark
|
||||
std::array<double,9> GroundRefineExclusiveMsByLOD{},CapRefineExclusiveMsByLOD{};
|
||||
std::array<double,9> MeshAssemblyMsByLOD{};
|
||||
std::array<double,9> SkirtMsByLOD{};
|
||||
struct FFarLODProfile
|
||||
{
|
||||
std::array<std::uint64_t,9> ColumnCalls{},ColumnHits{},ColumnMisses{};
|
||||
std::array<std::uint64_t,9> ColumnConflictMisses{},SharedColumnHits{},ColumnEvaluations{};
|
||||
std::array<double,9> McColumnMs{},GroundColumnMs{},CapColumnMs{};
|
||||
std::array<double,9> McGridMs{},McCellClassMs{},McGradientMs{};
|
||||
std::array<double,9> McInterpolationMs{},McDedupMs{},McOtherMs{};
|
||||
std::array<double,9> StratumShellMs{},ConnectorShellMs{};
|
||||
std::array<std::uint64_t,9> StratumFieldCalls{},ConnectorFieldCalls{},FarShellTriangles{};
|
||||
std::array<std::uint64_t,9> StratumColumnPointCalls{},StratumColumnHits{};
|
||||
std::array<std::uint64_t,9> StratumColumnMisses{},StratumSharedColumnHits{},StratumColumnEvaluations{};
|
||||
std::array<std::uint64_t,9> ConnectorColumnPointCalls{},ConnectorColumnHits{};
|
||||
std::array<std::uint64_t,9> ConnectorColumnMisses{},ConnectorSharedColumnHits{},ConnectorColumnEvaluations{};
|
||||
std::array<double,9> StratumColumnComputeMs{},ConnectorColumnComputeMs{};
|
||||
};
|
||||
std::unique_ptr<FFarLODProfile> FarLODProfile;
|
||||
if(bReportLodWorkProfile)FarLODProfile=std::make_unique<FFarLODProfile>();
|
||||
std::array<std::uint64_t,9> DensitySamplesByLOD{};
|
||||
std::array<std::uint64_t,9> SkirtTrianglesByLOD{};
|
||||
std::array<std::uint64_t,9> TileCountByLOD{};
|
||||
@@ -1158,8 +1175,44 @@ namespace StandaloneStreamBenchmark
|
||||
CapRefineExclusiveMsByLOD[LOD]+=Tile.CoreDiagnostics.capRefinementExclusiveMilliseconds;
|
||||
MeshAssemblyMsByLOD[LOD]+=Tile.CoreDiagnostics.meshAssemblyMilliseconds;
|
||||
SkirtMsByLOD[LOD]+=Tile.CoreDiagnostics.marchingCubesSkirtMilliseconds;
|
||||
if(bReportLodWorkProfile)DensitySamplesByLOD[LOD]+=Tile.DensitySamples;
|
||||
SkirtTrianglesByLOD[LOD]+=Tile.SkirtTriangleCount;
|
||||
if(bReportLodWorkProfile)
|
||||
{
|
||||
DensitySamplesByLOD[LOD]+=Tile.DensitySamples;
|
||||
const auto& D=Tile.CoreDiagnostics;
|
||||
FarLODProfile->ColumnCalls[LOD]+=D.fieldCalls;
|
||||
FarLODProfile->ColumnHits[LOD]+=D.columnCacheHits;
|
||||
FarLODProfile->ColumnMisses[LOD]+=D.columnCacheMisses;
|
||||
FarLODProfile->ColumnConflictMisses[LOD]+=D.columnCacheConflictMisses;
|
||||
FarLODProfile->SharedColumnHits[LOD]+=D.sharedColumnCacheHits;
|
||||
FarLODProfile->ColumnEvaluations[LOD]+=D.columnEvaluations;
|
||||
FarLODProfile->McColumnMs[LOD]+=D.marchingCubesColumnComputeMilliseconds;
|
||||
FarLODProfile->GroundColumnMs[LOD]+=D.groundRefinementColumnComputeMilliseconds;
|
||||
FarLODProfile->CapColumnMs[LOD]+=D.capRefinementColumnComputeMilliseconds;
|
||||
FarLODProfile->McGridMs[LOD]+=D.marchingCubesDensityGridMilliseconds;
|
||||
FarLODProfile->McCellClassMs[LOD]+=D.marchingCubesCellClassificationMilliseconds;
|
||||
FarLODProfile->McGradientMs[LOD]+=D.marchingCubesGradientNormalsMilliseconds;
|
||||
FarLODProfile->McInterpolationMs[LOD]+=D.marchingCubesEdgeInterpolationMilliseconds;
|
||||
FarLODProfile->McDedupMs[LOD]+=D.marchingCubesVertexDedupStreamMilliseconds;
|
||||
FarLODProfile->McOtherMs[LOD]+=D.marchingCubesOtherMilliseconds;
|
||||
FarLODProfile->StratumShellMs[LOD]+=D.farStratumShellMilliseconds;
|
||||
FarLODProfile->ConnectorShellMs[LOD]+=D.farConnectorShellMilliseconds;
|
||||
FarLODProfile->StratumFieldCalls[LOD]+=D.farStratumFieldCalls;
|
||||
FarLODProfile->ConnectorFieldCalls[LOD]+=D.farConnectorFieldCalls;
|
||||
FarLODProfile->FarShellTriangles[LOD]+=D.farShellTrianglesAdded;
|
||||
FarLODProfile->StratumColumnPointCalls[LOD]+=D.farStratumColumnPointCalls;
|
||||
FarLODProfile->StratumColumnHits[LOD]+=D.farStratumColumnCacheHits;
|
||||
FarLODProfile->StratumColumnMisses[LOD]+=D.farStratumColumnCacheMisses;
|
||||
FarLODProfile->StratumSharedColumnHits[LOD]+=D.farStratumSharedColumnCacheHits;
|
||||
FarLODProfile->StratumColumnEvaluations[LOD]+=D.farStratumColumnEvaluations;
|
||||
FarLODProfile->ConnectorColumnPointCalls[LOD]+=D.farConnectorColumnPointCalls;
|
||||
FarLODProfile->ConnectorColumnHits[LOD]+=D.farConnectorColumnCacheHits;
|
||||
FarLODProfile->ConnectorColumnMisses[LOD]+=D.farConnectorColumnCacheMisses;
|
||||
FarLODProfile->ConnectorSharedColumnHits[LOD]+=D.farConnectorSharedColumnCacheHits;
|
||||
FarLODProfile->ConnectorColumnEvaluations[LOD]+=D.farConnectorColumnEvaluations;
|
||||
FarLODProfile->StratumColumnComputeMs[LOD]+=D.farStratumColumnComputeMilliseconds;
|
||||
FarLODProfile->ConnectorColumnComputeMs[LOD]+=D.farConnectorColumnComputeMilliseconds;
|
||||
}
|
||||
if(bAuditUniformBlockProofs)
|
||||
{
|
||||
BlockProofBlocksChecked+=Tile.CoreDiagnostics.uniformBlockProofsChecked;
|
||||
@@ -1529,6 +1582,7 @@ namespace StandaloneStreamBenchmark
|
||||
MeshAssemblyMsByLOD[LOD]);
|
||||
if(bReportLodWorkProfile)
|
||||
{
|
||||
const auto& Detail=*FarLODProfile;
|
||||
const double SamplesPerTile=TileCountByLOD[LOD]
|
||||
?static_cast<double>(DensitySamplesByLOD[LOD])/TileCountByLOD[LOD]:0.0;
|
||||
std::printf("[WorldAssemblerLODSamples] lod=%zu samples=%llu samples_per_tile=%.1f\n",
|
||||
@@ -1540,6 +1594,43 @@ namespace StandaloneStreamBenchmark
|
||||
static_cast<unsigned long long>(PageRouteTilesByLOD[LOD]),
|
||||
PageRouteTilesByLOD[LOD]
|
||||
?PageRouteWorkerSecondsByLOD[LOD]*1000.0/PageRouteTilesByLOD[LOD]:0.0);
|
||||
const double TileDivisor=TileCountByLOD[LOD]
|
||||
?static_cast<double>(TileCountByLOD[LOD]):1.0;
|
||||
std::printf("[WorldAssemblerLODCostDetail] lod=%zu tiles=%llu density_samples=%llu column_point_calls=%llu column_local_hits=%llu column_local_misses=%llu column_conflict_misses=%llu column_shared_hits=%llu column_formula_evaluations=%llu column_compute_ms=%.3f mc_column_ms=%.3f mc_exclusive_ms=%.3f mc_grid_ms=%.3f mc_cell_class_ms=%.3f mc_gradient_ms=%.3f mc_interpolation_ms=%.3f mc_dedup_stream_ms=%.3f mc_other_ms=%.3f ground_column_ms=%.3f ground_exclusive_ms=%.3f cap_column_ms=%.3f cap_exclusive_ms=%.3f stratum_shell_ms=%.3f stratum_field_calls=%llu stratum_column_calls=%llu stratum_column_hits=%llu stratum_column_misses=%llu stratum_shared_hits=%llu stratum_column_evaluations=%llu stratum_column_compute_ms=%.3f connector_shell_ms=%.3f connector_field_calls=%llu connector_column_calls=%llu connector_column_hits=%llu connector_column_misses=%llu connector_shared_hits=%llu connector_column_evaluations=%llu connector_column_compute_ms=%.3f far_shell_triangles=%llu skirt_ms=%.3f mesh_assembly_ms=%.3f worker_ms_per_tile=%.3f column_formula_evals_per_tile=%.1f connector_calls_per_tile=%.1f\n",
|
||||
LOD,static_cast<unsigned long long>(TileCountByLOD[LOD]),
|
||||
static_cast<unsigned long long>(DensitySamplesByLOD[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ColumnCalls[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ColumnHits[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ColumnMisses[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ColumnConflictMisses[LOD]),
|
||||
static_cast<unsigned long long>(Detail.SharedColumnHits[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ColumnEvaluations[LOD]),
|
||||
ColumnEvalMsByLOD[LOD],Detail.McColumnMs[LOD],MarchingExclusiveMsByLOD[LOD],
|
||||
Detail.McGridMs[LOD],Detail.McCellClassMs[LOD],Detail.McGradientMs[LOD],
|
||||
Detail.McInterpolationMs[LOD],Detail.McDedupMs[LOD],Detail.McOtherMs[LOD],
|
||||
Detail.GroundColumnMs[LOD],GroundRefineExclusiveMsByLOD[LOD],
|
||||
Detail.CapColumnMs[LOD],CapRefineExclusiveMsByLOD[LOD],
|
||||
Detail.StratumShellMs[LOD],
|
||||
static_cast<unsigned long long>(Detail.StratumFieldCalls[LOD]),
|
||||
static_cast<unsigned long long>(Detail.StratumColumnPointCalls[LOD]),
|
||||
static_cast<unsigned long long>(Detail.StratumColumnHits[LOD]),
|
||||
static_cast<unsigned long long>(Detail.StratumColumnMisses[LOD]),
|
||||
static_cast<unsigned long long>(Detail.StratumSharedColumnHits[LOD]),
|
||||
static_cast<unsigned long long>(Detail.StratumColumnEvaluations[LOD]),
|
||||
Detail.StratumColumnComputeMs[LOD],
|
||||
Detail.ConnectorShellMs[LOD],
|
||||
static_cast<unsigned long long>(Detail.ConnectorFieldCalls[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ConnectorColumnPointCalls[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ConnectorColumnHits[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ConnectorColumnMisses[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ConnectorSharedColumnHits[LOD]),
|
||||
static_cast<unsigned long long>(Detail.ConnectorColumnEvaluations[LOD]),
|
||||
Detail.ConnectorColumnComputeMs[LOD],
|
||||
static_cast<unsigned long long>(Detail.FarShellTriangles[LOD]),
|
||||
SkirtMsByLOD[LOD],MeshAssemblyMsByLOD[LOD],
|
||||
WorkerSecondsByLOD[LOD]*1000.0/TileDivisor,
|
||||
static_cast<double>(Detail.ColumnEvaluations[LOD])/TileDivisor,
|
||||
static_cast<double>(Detail.ConnectorFieldCalls[LOD])/TileDivisor);
|
||||
}
|
||||
}
|
||||
const double NeighborhoodSeconds=std::chrono::duration<double>(NeighborhoodReady-ColdStart).count();
|
||||
|
||||
Reference in new issue
Block a user