Introduce "logical matrix" sysinfo().matrix to have full control over order in, e.g., cpuids_per_* functions etc. This is necessary to realize different orderings such as "cores first (i.e. before SMT-threads)" systematically.
Also, paves the way for #39.
This should be non-breaking. The only thing (I know about) that technically "broke" (actually, just changed) is the ordering of the cpuids in the cpuids_per* functions on some systems (non-standard lscpu output, like Fugaku). But since we didn't document any guarantees on the order, this is non-breaking.
[x] Fix i912900H, i.e. drop the "SMT equal for all cores" assumption (otherwise this PR is breaking!)
[x] likwid-pin
[x] explicit
[x] domain-based
[x] domain:explicit
[x] domain:scatter[:numthreads]
[ ] optional: domain:balanced[:numthreads] and domain:cbalanced[:numthreads]
[x] boundschecking
[x] expressions
[x] Support concatenation via @, e.g., S0:0-1@S1:0-1.
Introduce "logical matrix"
sysinfo().matrix
to have full control over order in, e.g.,cpuids_per_*
functions etc. This is necessary to realize different orderings such as "cores first (i.e. before SMT-threads)" systematically.Also, paves the way for #39.
This should be non-breaking. The only thing (I know about) that technically "broke" (actually, just changed) is the ordering of the cpuids in the
cpuids_per*
functions on some systems (non-standard lscpu output, like Fugaku). But since we didn't document any guarantees on the order, this is non-breaking.domain:explicit
domain:scatter[:numthreads]
domain:balanced[:numthreads]
anddomain:cbalanced[:numthreads]
@
, e.g.,S0:0-1@S1:0-1
.onebased
optionCloses #37