High-performance Noncontiguous Data Management

View project on GitHub


Yaksa is a high-performance datatype engine for expressing, managing and manipulating data present in noncontiguous memory regions. It provides portable abstractions for structured noncontiguous data layouts that are much more comprehensive compared with traditional I/O vectors.

Yaksa imitates parts of the MPI Datatype system, but adds additional functionality that would allow it to be used independent of MPI. It provides routines for packing/unpacking, creating I/O vectors (array of contiguous segments) and flattening/unflattening datatypes into process-portable formats.

Yaksa’s backend includes support for CPUs as well as different GPUs.

Yaksa is open-source and is distributed under the BSD-3 license. It is a community-developed software that anyone can contribute to based on its Contributor License Agreement.

Supported Platforms

Yaksa has been tested on the following CPU architectures:

  • x86_64
  • ppc64

For GPU architectures, the following are supported:

  • Intel GPU via Level Zero

Yaksa supports all C99 and POSIX 2001 compliant systems. Specific compilers that are supported are:

  • GNU (>= 4.1)
  • LLVM clang (>= 3.0)
  • Intel (>= 10.1)
  • PGI (>= 9.0)
  • XL (>= 10.0)
  • Sun Studio (>= 12)
  • Fujitsu Softune

Please note that building for CUDA requires a compiler that is compatible with the CUDA installation. More details can be found at https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

yaksa is maintained by the pmodels group at the Argonne National Laboratory.

The contents of this website are © 2020 under the terms of the yaksa license.