A Python3 library to parse a configuration file containing HPC nodes specifications.
The module provides primarily a class representing a family of computing nodes "NodeFamily".
It provides also conversion functions of storage units and a function to list all queues built on nodes.
The configuration file can contain two types of information:
- The
[general]block, which contains information on the pattern of the queue names and generic values applicable to all or most nodes. - Family node blocks with titles of the form
family.name, withnamethe name of the family.
Available fields are:
-
QueueFormat: The general format of the queue system, using modern Python format specification (ex:q{qtype:02d}{qname}). The system recognizes the following fields:qtype: The type of queueqname: The name of the queue.
-
QueueType: List of types of queue, separated by commas (ex:02, 07, 14, 28).
The parser supports the following information for a given family node:
Name- str - name of the nodes family.NodeCount- int - number of available nodes.QueueName- str - name of the family in the general queue format, passed toqname.QueueType- str - available types of queues, preceded by+or-to add types compared to the list provided in the "general" block, respectivelyQueueList- str - List of queues, overriding the general format.CPUCount- int - Number of sockets.CoreCount- int - Number of physical cores per socketCoreLogical- bool - If True/Yes, each physical core supports two hardware threads.RAM- str - Available quantity of RAM, with the unit included (ex: "256GB").Storage- str - Available physical storage for temporary files (ex: "1TB").CPUModel- str - Model of CPU, free format.CPUMaker- str - Maker of the CPU, free format (generally, "Intel", "AMD"...)CPUArch- str - CPU micro-architecture, in lowercase (ex: "sandybridge", "haswell", "zen2"). May be used by other tools to find the right installation.GPUCount- int - Number of available GPUs.GPUModel- str - Model of the GPUs, free format.GPUMaker- str - Make of the GPUs, free format (generally, "NVidia")GPUArch- str - GPU architecture. May be used by other tools to choose a suitable version of a program.CPUSoftLimit- int - Soft limit on the total number of usable cores. This should be used by programs to set the default maximum limit but can be exceeded.CPUHardLimit- int - Hard limit on the number of cores. Contrary toCPUHardLimit, this value should never be exceeded.MemSoftLimit- str - Soft limit on the total usable memory.MemHardLimit- str - Hard limit on the total usable memory.PathTemp- str - Path to store temporary files.UserGroups- str - User groups allowed to use the nodes.
# The strings between {} follow Python's format specification
[general]
QueueFormat = q{qtype:02d}{qname}
QueueType = 02, 07, 14, 28
[family.hpcnodestest]
Name = Test
NodeCount = 8
QueueName = test
QueueType = +02, -07
QueueList = q10test
CPUCount = 2
CoreCount = 6
CoreLogical = False
RAM = 6GB
Storage = 2000GB
CPUModel = Intel E5
CPUMaker = Intel
CPUArch = SandyBridge
GPUCount = 1
GPUModel = NVidia GeForce GTX
GPUMaker = NVidia
GPUArch = K20
CPUSoftLimit = 16
CPUHardLimit = 32
MemSoftLimit = 2GB
MemHardLimit = 4GB
PathTemp = /local/scratch/{username}
UserGroups = SGI
NOTE: The family hpcnodestest is recognized as a special case by the library system and ignored in the INI file.