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
@@ -170,6 +170,20 @@ namespace VoxelForgeCore
|
||||
double farHorizonMilliseconds = 0.0;
|
||||
std::uint64_t farStratumFieldCalls = 0;
|
||||
std::uint64_t farConnectorFieldCalls = 0;
|
||||
std::uint64_t farStratumColumnPointCalls = 0;
|
||||
std::uint64_t farStratumColumnCacheHits = 0;
|
||||
std::uint64_t farStratumColumnCacheMisses = 0;
|
||||
std::uint64_t farStratumColumnConflictMisses = 0;
|
||||
std::uint64_t farStratumSharedColumnCacheHits = 0;
|
||||
std::uint64_t farStratumColumnEvaluations = 0;
|
||||
std::uint64_t farConnectorColumnPointCalls = 0;
|
||||
std::uint64_t farConnectorColumnCacheHits = 0;
|
||||
std::uint64_t farConnectorColumnCacheMisses = 0;
|
||||
std::uint64_t farConnectorColumnConflictMisses = 0;
|
||||
std::uint64_t farConnectorSharedColumnCacheHits = 0;
|
||||
std::uint64_t farConnectorColumnEvaluations = 0;
|
||||
double farStratumColumnComputeMilliseconds = 0.0;
|
||||
double farConnectorColumnComputeMilliseconds = 0.0;
|
||||
std::uint64_t farShellTrianglesAdded = 0;
|
||||
std::uint64_t horizonGroundTriangles = 0;
|
||||
std::uint64_t horizonGroundTrianglesRemoved = 0;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user