hwloc test makes invalid assumptions
The login node of JUWELS has 2 20-core Xeon sockets, for 80 hardware threads. However two hardware threads unavailable for user processes (confirmed with sysadmin; some container magic is being used). hwloc correctly reports 78 total logical processors and that only one such is available on the cores of the reserved threads.
However our test HardwareTopologyTest.ProcessorSelfConsistency fails. It relies on the assumption that it is appropriate for
HardwareTopology::Machine::logicalProcessors to be a
std::vector<LogicalProcessors>. This may be true, but it cannot assume that the total number of logical processors is the product of
socketsInMachine * coresPerSocket * hwThreadsPerCore.
Fix self-consistency tests of hwloc data structures
These relied on assumptions of regularity that have been shown to be
violated in practice. The new tests check that there is a bijective
mapping of logical processors to valid hardware thread descriptors.