SystemTopology fails to handle Intel CPUs with performance and efficiency cores

Issue #2756 new
Roland Haas created an issue

SystemTopology fails on new Intel CPUs with an assert similar to:

cactus_sim: configs/sim/build/SystemTopology/system_topology.cc:471: void {anonymous}::set_bindings(hwloc_topology_t, const mpi_host_mapping_t&): Assertion `num_pus % num_cores == 0' failed.

where in the case of a 12th Gen Intel(R) Core(TM) i7-12700

https://en.wikipedia.org/wiki/List_of_Intel_Core_i7_processors#Golden_Cove_+_Gracemont_microarchitecture_(12th_generation)

with performance (16) and efficiency (4) logical cpus hwloc reports:

core_depth 5
num_cores 12
pu_depth 6
num_pus 20

and the assert `num_pus % num_cores == 0` fails (b/c only the 8 performance
cores have hyperthreads).

This has been reported on the mailing list in https://lists.einsteintoolkit.org/pipermail/users/2023-August/009036.html

Not sure if the asserted property is indeed required by SystemTopology or if this is only a sanity check that can be removed without affecting functionality. Certainly performance will be unbalanced between MPI ranks and OpenMP threads that run on P or E cores respectively (and also if a hyperthread pair was split among two MPI ranks).

This may mostly affect workstations and laptops as I would not expect server class CPUs (on HPC systems) to have efficiency cores (do they?).

Comments (0)

  1. Log in to comment