What is Adaptyst?

Introduction

Adaptyst is an open-source and architecture-agnostic modular performance analysis tool, where modules can integrate existing work (such as profilers) and be made by external developers. The goal of the program is addressing users’ software, hardware, and system needs in a future-proof way by suggesting the most optimal compute solution for a given workflow and requirements while considering all sides of computation.

At the moment, Adaptyst concentrates on profiling and already supports all CPUs running Linux thanks to our linuxperf module which samples in detail both on-CPU and off-CPU activity of every spawned thread and process of a program, profiles low-level interactions with hardware, and more: see the linked documentation page. More modules from the Adaptyst team are already planned / work in progress.

External modules

Modules created by external developers can provide more features than the ones described in this documentation: check respective documentation pages of the modules (outside of the Adaptyst website) for more information.

Eventually, Adaptyst will be a single universal platform for comparing and customising software and hardware architectures across the entire spectrum: from embedded/edge computing to high-performance and distributed computing. See our roadmap for more information.

Adaptyst flow and components

Diagram
Adaptyst flow diagram.

The usage of Adaptyst starts with defining a workflow to be analysed, using one or more plugins that can be made either externally or by the Adaptyst team. This can capture a variety of scenarios from across computing, but the most common one is running a specific software code. The plugins are responsible for translating the use case(s) they represent into the Adaptyst intermediate representation in form of stateful dataflow multigraphs (SDFGs; they are part of the DaCe framework and explained here).

Current user workflow support

Adaptyst supports running single commands only at the moment. This is the simplest possible scenario and the way it should be used is explained in Running Adaptyst.

When an update expanding the user workflow support is released, a new documentation page will be added describing in detail the expressiveness of user workflows in Adaptyst and how to define them.

When the user workflow is compiled into an SDFG, it is processed by a set of system/hardware modules forming a system graph representing a computer system with nodes (like peripherals) grouped into entities (like servers): each module can be made either externally or by the Adaptyst team and it is responsible for performance analysis with respect to a specific system component (e.g. a CPU or its part, a GPU or its part, an FPGA, networking). In the future, as the R&D work on Adaptyst progresses, the modules will take part in determining the best compute solution for the SDFG while considering all sides of computation and user requirements. See System graphs for more details about system graphs in Adaptyst.

Plugin vs module

In the context of Adaptyst and throughout this documentation, a plugin refers to user workflows (the part of the flow diagram to the left of SDFGs) while a module refers to a system graph (the part of the flow diagram to the right of SDFGs).

After performance analysis is finished, the results can be inspected in a variety of ways, including by our dedicated tool Adaptyst Analyser producing an interactive website. The official API for advanced result analysis is planned.