Skip to content

XFELPP

High performance software for parallel analysis of XFEL data

The XFELPP umbrella encompases a number of packages and frameworks for reading, interacting with, and analyzing data produced at X-ray Free Electron Laser (XFEL) light sources.

There are three main projects underpinning XFELPP:

  1. ncarray: A multi-dimensional array library with support for “pointer-axes” (i.e. suboffsets). An expression engine and custom-built JIT compiler is used for fast evaluation on the host, with GPU-supported evaluation via CUDA’s NVRTC.

  2. sbio: “Stream Broker IO” - A generic IO framework for interfacing with data formats that have some logical concept of streaming, e.g. as “events” that stream in time from a data acquisition system. Its fully agnostic to the format itself, with backend formats hot-swappable.

  3. xalgospp: An assortment of high-performance algorithms and utilities for analyzing XFEL data, and in particular array data.

High Performance

Built in modern C++23 and CUDA C++20 always with an eye to performance.

Python Friendly

Simple APIs and familiar Python bindings to make getting started easy.

Wheel Variant Indices

Libraries are packaged as wheels (shared libraries included). Self-hosted indices for pulling builds for different versions of CUDA, or CPU only.

Cross-platform

  1. 64-bit x86 and AArch64 architectures supported.
  2. GPU-accelerated builds for CUDA 12 and 13.
  3. x86-manylinux CPU-only, and with GPU-support, wheels provided for Python 3.8+.
  4. x86-musllinux CPU-only wheels provided for Python 3.8+.