sys-sage is a software library with a (C++) API to query system topology information. Its main goal is to store, update, and provide all relevant information about the hardware topology of a system, its dynamic state and/or configuration, its capabilities, and other data related to the hardware from different data sources logically connected to each other.
sys-sage can be considered an extension to hwloc; it targets the aspects of system topology and HW-related information that are not covered by hwloc. Hwloc is limited to (among others)
- Providing static data (only given HW topology)
- Modern systems are not strictly hierarchical anymore
- Information regarding data movement capabilities is missing
- Difficult to incorporate complementary information
- Mainly CPU-centric
sys-sage is designed to be very versatile, so that it can be integrated to work in many different areas. Thanks to its variability, the users can use the fitting set of information for various use-cases. The areas of usage may include job / thread scheduling, co-scheduling multiple applications, autotuning tasks / applications, data management on heterogeneous memory systems (allocation decisions), power management, performance optimization, performance modelling tools and many others.
Goals within DEEP-SEA
The development of sys-sage was started in the DEEP-SEA project, and we plan on providing a universal API for various use-cases that handle hardware-relevant information. It is used by MemAxes and can be used by many other DEEP-SEA tools.