Deterministic CPU multithreading: supernodal Cholesky, parallel elements, LBM blocks (#50)

* parallel: deterministic thread pool helpers for the solvers (fixed partitions, ordered results)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* solver: supernodal left-looking Cholesky, multithreaded with a fixed operation order

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* solver: parallel element matrices, stresses, Lanczos block solves and products (sums in the sequential order)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* explicit: element updates in parallel, nodal forces added in element order (bit-identical to the sequential loop)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* lbm: collision and streaming by fixed cell blocks in parallel, wall forces in link order (bit-identical)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* engine: threads setting for the solve commands (session default from MODELCRAFT_THREADS or the cores); bit-identity test on 1, 2 and 7 threads

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* docs: rayon threads in ADR 0001, the parallel crate, supernodal Cholesky

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

---------

Co-authored-by: jyviko <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
authored and GitHub committed 2026-10-13 22:26:44 -04:00
1 parent 5afd1addb9
commit 4ce5513210
25 files changed
+1710 -342

No files matched your search

Generated
+11
View File
@@ -1901,6 +1901,7 @@ dependencies = [
"modelcraft-lbm",
"modelcraft-mesh",
"modelcraft-model",
"modelcraft-parallel",
"modelcraft-render",
"modelcraft-solver",
"serde",
@@ -1915,6 +1916,7 @@ version = "0.1.0"
dependencies = [
"modelcraft-fem",
"modelcraft-model",
"modelcraft-parallel",
"serde",
"thiserror 2.0.21",
]
@@ -1962,6 +1964,7 @@ version = "0.1.0"
dependencies = [
"modelcraft-mesh",
"modelcraft-model",
"modelcraft-parallel",
"thiserror 2.0.21",
]
@@ -1997,6 +2000,13 @@ dependencies = [
"thiserror 2.0.21",
]
[[package]]
name = "modelcraft-parallel"
version = "0.1.0"
dependencies = [
"rayon",
]
[[package]]
name = "modelcraft-render"
version = "0.1.0"
@@ -2013,6 +2023,7 @@ version = "0.1.0"
dependencies = [
"modelcraft-fem",
"modelcraft-model",
"modelcraft-parallel",
"serde",
"thiserror 2.0.21",
]