{
HardwareTopology result;
- // Default values for machine and numa stuff
- result.machine_.logicalProcessorCount = 0;
- result.machine_.numa.baseLatency = 0.0;
- result.machine_.numa.maxRelativeLatency = 0.0;
- result.supportLevel_ = SupportLevel::None;
+ result.supportLevel_ = SupportLevel::None;
#if GMX_HWLOC
parseHwLoc(&result.machine_, &result.supportLevel_);
return result;
}
+HardwareTopology::Machine::Machine()
+{
+ logicalProcessorCount = 0;
+ numa.baseLatency = 0.0;
+ numa.maxRelativeLatency = 0.0;
+}
+
HardwareTopology::HardwareTopology()
: supportLevel_(SupportLevel::None)
{
}
+HardwareTopology::HardwareTopology(int logicalProcessorCount)
+ : supportLevel_(SupportLevel::None)
+{
+ if (logicalProcessorCount > 0)
+ {
+ machine_.logicalProcessorCount = logicalProcessorCount;
+ supportLevel_ = SupportLevel::LogicalProcessorCount;
+ }
+}
+
int HardwareTopology::numberOfCores() const
{
if (supportLevel() >= SupportLevel::Basic)
*/
struct Machine
{
+ Machine();
+
int logicalProcessorCount; //!< Number of logical processors in system
std::vector<LogicalProcessor> logicalProcessors; //!< Map logical processors to socket/core
std::vector<Socket> sockets; //!< All the sockets in the system
*/
static HardwareTopology detect();
+ /*! \brief Creates a topology with given number of logical cores.
+ *
+ * The support level will be either None or LogicalProcessorCount.
+ *
+ * Intended for testing of code that uses the hardware topology.
+ */
+ explicit HardwareTopology(int logicalProcessorCount);
+
/*! \brief Check what topology information that is available and valid
*
* The amount of hardware topology information that can be detected depends