wip(assembler): round L2 -- the cross-platform hash check can fail; FP contraction changes the world
Clang -ffp-contract=on/fast and GCC's default (fast) all change the density hash on the L1 view; contraction off reproduces L1 (= Windows S13) at W1/W12. Seed sweep: 48 FloatingIslands seeds and 14 effective SurfaceWorld seeds (34 of 48 fell on a seed-independent cube) match across Clang/GCC and W1/W12. Standalone gains --seed/--recipe/--render-distance-chunks (viewer + headless) and a Windows replay script. Linux standalone workers get 32 MiB pthread stacks (TLS is 17.3 MiB/thread), so no external stack limit is needed. No Core or world-output change; MSVC compile unverified. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1276fd11e3
commit
303b7b9f24
17 files changed
+1401
-13
No files matched your search
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "VoxelForgeCore/VoxelForgeCore.h"
|
||||
#include "StandaloneWorkerThread.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
@@ -23,7 +24,7 @@ public:
|
||||
const std::size_t grain=std::max<std::size_t>(1,batchSize);
|
||||
std::atomic<std::size_t> next{0};
|
||||
std::vector<double> active(workers,0.0);
|
||||
std::vector<std::thread> threads;
|
||||
std::vector<FStandaloneWorkerThread> threads;
|
||||
threads.reserve(workers);
|
||||
for(std::size_t worker=0;worker<workers;++worker)
|
||||
threads.emplace_back([&,worker]
|
||||
@@ -39,7 +40,7 @@ public:
|
||||
active[worker]=std::chrono::duration<double>(
|
||||
std::chrono::steady_clock::now()-started).count();
|
||||
});
|
||||
for(std::thread& thread:threads)thread.join();
|
||||
for(FStandaloneWorkerThread& thread:threads)thread.join();
|
||||
double total=0.0;
|
||||
for(std::size_t worker=0;worker<workers;++worker)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user