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:
Fr0zkaandClaude Opus 5.5 committed 2026-10-20 02:33:48 +02:00
1 parent 976d012a86
commit a176d0743a
4 files changed
+319 -1

No files matched your search

+56
View File
@@ -2084,6 +2084,16 @@ namespace VoxelForgeCore
{
const auto BeforeStratum=FStandaloneShapeWorld::GetThreadClassificationStats();
const int32 BeforeStratumTriangles=mesh.Triangles.Num()/3;
std::array<std::uint64_t,6> BeforeStratumColumnCacheStats;
double BeforeStratumColumnComputeMilliseconds;
if(options.profileMesherStages)
{
const auto& Columns=VoxelForgeCore::Heightfield2D::threadColumnCacheStats();
BeforeStratumColumnCacheStats={Columns.pointCalls,Columns.columnHits,
Columns.columnMisses,Columns.columnConflictMisses,
Columns.sharedColumnHits,Columns.columnEvaluations};
BeforeStratumColumnComputeMilliseconds=Columns.columnComputeMilliseconds;
}
const auto StratumStart=std::chrono::steady_clock::now();
AppendFarStratumShells(world,farShape,nativeKey,step,mesh);
const auto AfterStratum=FStandaloneShapeWorld::GetThreadClassificationStats();
@@ -2091,11 +2101,39 @@ namespace VoxelForgeCore
std::chrono::steady_clock::now()-StratumStart).count();
out.diagnostics.farStratumFieldCalls=
AfterStratum.NativeFloatFieldCalls-BeforeStratum.NativeFloatFieldCalls;
if(options.profileMesherStages)
{
const auto& Columns=VoxelForgeCore::Heightfield2D::threadColumnCacheStats();
out.diagnostics.farStratumColumnPointCalls=
Columns.pointCalls-BeforeStratumColumnCacheStats[0];
out.diagnostics.farStratumColumnCacheHits=
Columns.columnHits-BeforeStratumColumnCacheStats[1];
out.diagnostics.farStratumColumnCacheMisses=
Columns.columnMisses-BeforeStratumColumnCacheStats[2];
out.diagnostics.farStratumColumnConflictMisses=
Columns.columnConflictMisses-BeforeStratumColumnCacheStats[3];
out.diagnostics.farStratumSharedColumnCacheHits=
Columns.sharedColumnHits-BeforeStratumColumnCacheStats[4];
out.diagnostics.farStratumColumnEvaluations=
Columns.columnEvaluations-BeforeStratumColumnCacheStats[5];
out.diagnostics.farStratumColumnComputeMilliseconds=
Columns.columnComputeMilliseconds-BeforeStratumColumnComputeMilliseconds;
}
out.diagnostics.farShellTrianglesAdded=static_cast<std::uint64_t>(
std::max(0,mesh.Triangles.Num()/3-BeforeStratumTriangles));
const auto BeforeConnector=AfterStratum;
const int32 BeforeConnectorTriangles=mesh.Triangles.Num()/3;
std::array<std::uint64_t,6> BeforeConnectorColumnCacheStats;
double BeforeConnectorColumnComputeMilliseconds;
if(options.profileMesherStages)
{
const auto& Columns=VoxelForgeCore::Heightfield2D::threadColumnCacheStats();
BeforeConnectorColumnCacheStats={Columns.pointCalls,Columns.columnHits,
Columns.columnMisses,Columns.columnConflictMisses,
Columns.sharedColumnHits,Columns.columnEvaluations};
BeforeConnectorColumnComputeMilliseconds=Columns.columnComputeMilliseconds;
}
const auto ConnectorStart=std::chrono::steady_clock::now();
AppendFarConnectorShells(farShape,nativeKey,step,world.CoarseTileCells,mesh);
const auto AfterConnector=FStandaloneShapeWorld::GetThreadClassificationStats();
@@ -2103,6 +2141,24 @@ namespace VoxelForgeCore
std::chrono::steady_clock::now()-ConnectorStart).count();
out.diagnostics.farConnectorFieldCalls=
AfterConnector.NativeFloatFieldCalls-BeforeConnector.NativeFloatFieldCalls;
if(options.profileMesherStages)
{
const auto& Columns=VoxelForgeCore::Heightfield2D::threadColumnCacheStats();
out.diagnostics.farConnectorColumnPointCalls=
Columns.pointCalls-BeforeConnectorColumnCacheStats[0];
out.diagnostics.farConnectorColumnCacheHits=
Columns.columnHits-BeforeConnectorColumnCacheStats[1];
out.diagnostics.farConnectorColumnCacheMisses=
Columns.columnMisses-BeforeConnectorColumnCacheStats[2];
out.diagnostics.farConnectorColumnConflictMisses=
Columns.columnConflictMisses-BeforeConnectorColumnCacheStats[3];
out.diagnostics.farConnectorSharedColumnCacheHits=
Columns.sharedColumnHits-BeforeConnectorColumnCacheStats[4];
out.diagnostics.farConnectorColumnEvaluations=
Columns.columnEvaluations-BeforeConnectorColumnCacheStats[5];
out.diagnostics.farConnectorColumnComputeMilliseconds=
Columns.columnComputeMilliseconds-BeforeConnectorColumnComputeMilliseconds;
}
out.diagnostics.farShellTrianglesAdded+=static_cast<std::uint64_t>(
std::max(0,mesh.Triangles.Num()/3-BeforeConnectorTriangles));
}