implemet wrap builder

This commit is contained in:
Youmu Liu
2025-09-15 09:06:23 +08:00
parent 4769986c37
commit 0a16f8317f
20 changed files with 33 additions and 96 deletions
@@ -107,9 +107,26 @@ namespace StgSharp.Mathematics
{
int count = Environment.ProcessorCount - 4;
count = count == 5 ? 4 : count;
int _3wrap = 0, _4wrap = 0;
_threads = new Thread[count];
if (count < 6) { } else if (count == 6) { } else { }
if (count < 6)
{
_wraps = [new MatrixParallelWrap(0, count, true)];
} else if (count == 6)
{
_wraps = [new MatrixParallelWrap(0, 3, true),
new MatrixParallelWrap(3, 3, false)];
} else
{
(int _3wrap, int _4wrap) = FastDecompose(count);
_wraps = new MatrixParallelWrap[_3wrap + _4wrap];
int id = 0, idx = 0;
for (; idx < _3wrap; idx++, id += 3) {
_wraps[idx] = new MatrixParallelWrap(idx, 3, id == 0);
}
for (; idx < _3wrap + _4wrap; idx++, id += 4) {
_wraps[idx] = new MatrixParallelWrap(id, 4, id == 0);
}
}
LeaderHandle = new MatrixParallelWrap.Handle(0, _wraps[0]);
}