Pallas is a scalable trace format for HPC applications.
Project description
Pallas
Documentation
A detailed documentation is available here.
Building
Building is done with CMake and any compiler (GCC, Clang, Intel OneAPI). ZSTD is required.
git clone https://gitlab.inria.fr/pallas/pallas.git
mkdir -p pallas/build && cd pallas/build
cmake ..
cmake --install . --config Release
Optional libraries
If you want to use SZ and ZFP, you should install them,
then feed their install directory to CMake, using {SZ/ZFP}_ROOT_DIR
Python Library
Pallas comes with a Python library to read your traces.
You need to enable building it with -DENABLE_PYTHON=ON
Its requirements are the following:
- Python >=3.11
- Numpy
- pybind11
You can then read it like this:
import pallas_trace as pallas
trace = pallas.open_trace("<my_trace_file>.pallas")
help( trace ) # Get some help reading you trace :)
A full documentation of the Pallas Python API is available here.
Usage
In your application
To use Pallas to log your application, you need to understand the hierarchical structure:
- There's one GlobalArchive that stores global information.
- Each Archive corresponds to a process / a self-contained information group. They're identified by LocationGroup
- Each Thread refers to a group of events that are to be logged. They're identified by Location
There is a bit more nuance, but it's what you need for now. The following code should give you an idea of what to do to start logging your app in C++. There is also a C API that functions the same way. Their documentation is available here.
#include <pallas/pallas.h>
#include <pallas/pallas_write.h>
namespace pallas;
int main() {
GlobalArchive globalArchive("<trace directory>", "<main trace file name>");
globalArchive.addString(...); // Register a String
// Add a process
globalArchive.addLocationGroup(<processID>); // Register a LocationGroup
Archive archive(globalArchive, <processID>);
// An Archive is the interface used to store local definitions
// It's analogous to a process
// Add a Thread
archive.addLocation(<threadID>); // Register a Location
ThreadWriter threadWriter(archive, <threadID>);
// A ThreadWriter is the interface used to log events
// It's analogous to a Thread
// Start logging
pallas_record_generic(&threadWriter, <custom Attribute>, <timestamp>, <name>);
// Write the trace to file
threadWriter.close();
globalArchive.close();
}
Using EZTrace
After compiling Pallas and its OTF2 API, install EZTrace.
Make sure to build it from source, and to use the Pallas OTF2 library, not the normal OTF2 library.
You can check which otf2-config to see if you have the correct one. If not, check your PATH and LD_LIBRARY_PATH variables.
Make sure to enable the relevant ezTrace modules.
Then trace any program by running mpirun -np N eztrace -t <your modules> <your programm>.
The trace file will be generated in the <your programm>_trace folder.
You can then read it using pallas_print <your programm>_trace/eztrace_log.pallas
Visualizing Pallas traces
Blup is a web-based trace visualizer able to display Pallas traces. It uses Pallas Python API.
About
Pallas implements a subset of the OTF2 API. It also implements the Murmur3 hashing function.
Configuration
You can visualise your current (static) configuration with pallas_config.
You can give your own dynamic configuration with the PALLAS_CONFIG_PATH environment variable.
Here are the configuration options with specific values:
compressionAlgorithm: Specifies which compression algorithm is used for storing the timestamps. Its values are:NoneZSTDSZZFPHistogramZSTD_Histogram
encodingAlgorithm: Specifies which encoding algorithm is used for storing the timestamps. If the specified compression algorithm is lossy, this is defaulted to None. Its values are:NoneMaskingLeadingZeroes
loopFindingAlgorithm: Specifies what loop-finding algorithm is used. Its values are:NoneBasicBasicTruncatedFilter
Here are the configuration options with number values:
zstdCompressionLevel: Specifies the compression level used by ZSTD. Integer.maxLoopLength: Specifies the maximum loop length, if using a truncated loop finding algorithm. Integer.
Contributing
Contribution to Pallas are welcome. Just send us a pull request.
License
Pallas is distributed under the terms of both the BSD 3-Clause license.
See LICENSE for details
Citing Pallas
Feel free to use the following publications to reference Pallas:
@inproceedings{guelque:hal-04970114,
TITLE = {{Pallas: a generic trace format for large HPC trace analysis}},
AUTHOR = {Guelque, Catherine and Honor{\'e}, Valentin and Swartvagher, Philippe and Thomas, Ga{\"e}l and Trahay, Fran{\c c}ois},
URL = {https://inria.hal.science/hal-04970114},
BOOKTITLE = {{IPDPS 2025: 39th IEEE International Parallel \& Distributed Processing Symposium}},
ADDRESS = {Milan, Italy},
YEAR = {2025},
MONTH = Jun,
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pallas_trace-0.17.0.tar.gz.
File metadata
- Download URL: pallas_trace-0.17.0.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47bf538136555c56c921b4a26ebe0f11799ef9566c317c450ec88e2c594997c0
|
|
| MD5 |
345d3040937f7691f97372de7b5b8cce
|
|
| BLAKE2b-256 |
0d91a633f06d88bb6de73ebeab18738dcea8e986076e803239e986b597c98c6b
|
File details
Details for the file pallas_trace-0.17.0-cp314-cp314-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: pallas_trace-0.17.0-cp314-cp314-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 754.3 kB
- Tags: CPython 3.14, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b85765ffe9b8505b3dccc11a97a3cead5ccbda1b912db758306255eb43fcbf2d
|
|
| MD5 |
31f3569cfb96661120dc324b2fec870e
|
|
| BLAKE2b-256 |
d2a183e211abed2dd54f86ba0a46e3790aa9e7f34948f5f7bc12a6f078c5ba27
|
File details
Details for the file pallas_trace-0.17.0-cp313-cp313-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: pallas_trace-0.17.0-cp313-cp313-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 753.7 kB
- Tags: CPython 3.13, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
954b3b644358525d114cabf63e55d27b5a316a5a566918a4fab540b8837eb3ba
|
|
| MD5 |
be7edb9dd2a569555fbe19d1ea74e747
|
|
| BLAKE2b-256 |
3da6452fe48e679848d90822ed2ba328d8e4cbdc6864b64cc6f3f5b0c846afe6
|