PXL
Overview

Parallel Xceleration Library (PXL) is a key component of XCENA SDK designed to facilitate optimized communication between host system and XCENA computational memory devices.
By leveraging PXL, developers can unlock the full potential of in-memory computing technology through a robust and efficient API.

PXL exposes a unified public API under the pxl:: namespace, organized into the following functional areas:

  • Execution: Context, Stream, Job, Map, NDArray — manages execution sessions, async task scheduling, and host-device memory mapping.
  • Kernel: Module, Function, KernelTraits — loads compiled kernel binaries and binds callable functions.
  • Memory: allocateMemory, reallocateMemory, releaseMemory, pinMemory, prefetchMemory, etc. — manages device memory with optional flags.
  • Launch: Launcher, LaunchBuilder, LaunchResult — high-level kernel launch API with automatic device detection.
  • Configuration: enableLog, registerSignalHandler — logging and crash reporting.
  • Host cache: three calls that move data across the host/device boundary by hand. Full contracts, including which one a signal handler may call and on which platform, are in pxl/config.hpp.
    • flushHostCache — publish host writes to the device, and record the range as a transfer-size hint for a later Map::execute.
    • flushHostCacheUntracked — publish without the record.
    • invalidateHostCache — read back what the device wrote.

Generate API Docs

  1. Prerequisite
    Doxygen >= 1.9.1
    Graphviz >= 2.43.0
  2. Run DoxyGen
    cd docs
    doxygen Doxyfile

Language Support

Currently, PXL is provided as a C++ API. In the future, support for additional programming languages will be introduced to accommodate a broader range of development environments and preferences.

Migrating from PXL 2.x

PXL 3.0 flattened the public API into a single pxl:: namespace. The pxl/compat.hpp header forwards the old names to the new ones with [[deprecated]] warnings. Scheduled for removal in a future release.