Skip to main content

IOWarp Context Management Platform

Project description

CLIO Core

A Comprehensive Platform for Context Management in Scientific Computing

Overview · Installation · Components · Quickstart · Documentation · Contributing


Project Site License IoWarp GRC codecov

Overview

CLIO Core is a unified framework that integrates multiple high-performance components for context management, data transfer, and scientific computing. Built with a modular architecture, CLIO Core enables developers to create efficient data processing pipelines for HPC, storage systems, and near-data computing applications.

CLIO Core provides:

  • High-Performance Context Management: Efficient handling of computational contexts and data transformations
  • Heterogeneous-Aware I/O: Multi-tiered, dynamic buffering for accelerated data access
  • Modular Runtime System: Extensible architecture with dynamically loadable processing modules
  • Advanced Data Structures: Shared memory compatible containers with GPU support (CUDA, ROCm)
  • Distributed Computing: Seamless scaling from single node to cluster deployments

Architecture

CLIO Core follows a layered architecture integrating five core components:

┌──────────────────────────────────────────────────────────────┐
│                      Applications                            │
│          (Scientific Workflows, HPC, Storage Systems)        │
└──────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
┌───────────────┐   ┌──────────────────┐   ┌────────────────┐
│   Context     │   │    Context       │   │   Context      │
│  Exploration  │   │  Assimilation    │   │   Transfer     │
│    Engine     │   │     Engine       │   │    Engine      │
└───────────────┘   └──────────────────┘   └────────────────┘
        │                     │                     │
        └─────────────────────┼─────────────────────┘
                              │
                    ┌─────────────────┐
                    │  Chimaera       │
                    │  Runtime        │
                    │  (Module System)│
                    └─────────────────┘
                              │
                ┌─────────────────────────┐
                │  Context Transport      │
                │  Primitives             │
                │  (Shared Memory & IPC)  │
                └─────────────────────────┘

Installation

Pip (recommended)

The pip wheel is the easiest way to get CLIO Core. It ships a portable, self-contained build with all dependencies statically linked. No system installs are required beyond glibc and Python 3.10+.

pip install iowarp-core

The wheel includes the Clio runtime, the chimaera CLI, the CTE, CAE, and CEE engines, and the clio_cee Python bindings. A default configuration is seeded at ~/.clio/clio.yaml (legacy: ~/.chimaera/chimaera.yaml) on first import.

Newer extensions and advanced/accelerated features are not in the portable wheel — switch to a source build below if you need any of:

  • NVIDIA GPU (CUDA) or AMD GPU (ROCm) acceleration
  • MPI for distributed multi-node deployment
  • HDF5 / ADIOS2 adapters
  • FUSE adapter
  • Compression backends (LibPressio, Blosc, etc.)
  • Custom ChiMods built against the C++ headers
  • Sanitizer or debug builds

Source build (Conda)

git clone --recurse-submodules https://github.com/iowarp/clio-core.git
cd clio-core
bash install.sh release

release corresponds to a variant stored under installers/conda/variants/. Other variants (cuda, rocm, mpi, full, release-fuse, debug, ...) enable the corresponding features. Feel free to add a new variant for your specific machine there.

If you already cloned without submodules, initialize them with:

git submodule update --init --recursive

Other source-install methods (Docker, Spack) are documented in docs/getting-started/installation.

Components

CLIO Core consists of five integrated components, each with its own specialized functionality:

1. Context Transport Primitives

Location: context-transport-primitives/

High-performance shared memory library containing data structures and synchronization primitives compatible with shared memory, CUDA, and ROCm.

Key Features:

  • Shared memory compatible data structures (vector, list, unordered_map, queues)
  • GPU-aware allocators (CUDA, ROCm)
  • Thread synchronization primitives
  • Networking layer with ZMQ transport
  • Compression and encryption utilities

Read more →

2. Chimaera Runtime

Location: context-runtime/

High-performance modular runtime for scientific computing and storage systems with coroutine-based task execution.

Key Features:

  • Ultra-high performance task execution (< 10μs latency)
  • Modular Module system for dynamic extensibility
  • Coroutine-aware synchronization (CoMutex, CoRwLock)
  • Distributed architecture with shared memory IPC
  • Built-in storage backends (RAM, file-based, custom block devices)

Read more →

3. Context Transfer Engine

Location: context-transfer-engine/

Heterogeneous-aware, multi-tiered, dynamic I/O buffering system designed to accelerate I/O for HPC and data-intensive workloads.

Key Features:

  • Programmable buffering across memory/storage tiers
  • Multiple I/O pathway adapters
  • Integration with HPC runtimes and workflows
  • Improved throughput, latency, and predictability

Read more →

4. Context Assimilation Engine

Location: context-assimilation-engine/

High-performance data ingestion and processing engine for heterogeneous storage systems and scientific workflows.

Key Features:

  • OMNI format for YAML-based job orchestration
  • MPI-based parallel data processing
  • Binary format handlers (Parquet, CSV, custom formats)
  • Repository and storage backend abstraction
  • Integrity verification with hash validation

Read more →

5. Context Exploration Engine

Location: context-exploration-engine/

Interactive tools and interfaces for exploring scientific data contents and metadata.

Key Features:

  • Model Context Protocol (MCP) for HDF5 data
  • HDF Compass viewer (wxPython-4 based)
  • Interactive data exploration interfaces
  • Metadata browsing capabilities

Read more →

Quickstart

Starting the Runtime

Installation seeds a default configuration at ~/.clio/clio.yaml (legacy: ~/.chimaera/chimaera.yaml), so the runtime works out of the box:

# Foreground
clio_run runtime start

# Background
clio_run runtime start &

To override the configuration, point CLIO_X at your YAML file:

export CLIO_X=/path/to/my_config.yaml
clio_run runtime start

Context Exploration Engine Python Example

Here we show an example of how to use the context exploration engine to bundle and retrieve data.

import clio_cee as cee

# Create ContextInterface (handles runtime initialization internally)
ctx_interface = cee.ContextInterface()

# Assimilate a file into IOWarp storage
ctx = cee.AssimilationCtx(
    src="file::/path/to/data.bin",      # Source: local file
    dst="iowarp::my_dataset",            # Destination: IOWarp tag
    format="binary"                      # Format: binary, hdf5, etc.
)
result = ctx_interface.context_bundle([ctx])
print(f"Assimilation result: {result}")

# Query for blobs matching a pattern
blobs = ctx_interface.context_query(
    "my_dataset",    # Tag name
    ".*",            # Blob name regex (match all)
    0                # Flags
)
print(f"Found blobs: {blobs}")

# Retrieve blob data
packed_data = ctx_interface.context_retrieve(
    "my_dataset",    # Tag name
    ".*",            # Blob name regex
    0                # Flags
)
print(f"Retrieved {len(packed_data)} bytes")

# Cleanup when done
ctx_interface.context_destroy(["my_dataset"])

Context Transfer Engine C++ Example

Here is an example of the context transfer engine's C++ API.

#include <clio_cte/core/core_client.h>
#include <clio_runtime/clio_runtime.h>

int main() {
  // 1. Initialize Clio runtime
  bool success = chi::CHIMAERA_INIT(chi::ChimaeraMode::kClient, true);
  if (!success) return 1;

  // 2. Initialize CTE subsystem
  clio_cte::core::CLIO_CTE_CLIENT_INIT();

  // 3. Create CTE client
  clio_cte::core::Client cte_client;
  clio_cte::core::CreateParams params;
  cte_client.Create(chi::PoolQuery::Dynamic(),
                    clio_cte::core::kCtePoolName,
                    clio_cte::core::kCtePoolId, params);

  // 4. Register a storage target (100MB file-based)
  cte_client.RegisterTarget("/tmp/cte_storage",
                            chimaera::bdev::BdevType::kFile,
                            100 * 1024 * 1024);

  // 5. Create a tag (container for blobs)
  clio_cte::core::TagId tag_id = cte_client.GetOrCreateTag(
      "my_tag", clio_cte::core::TagId::GetNull());

  // 6. Store blob data
  std::vector<char> data(4096, 'A');
  ctp::ipc::FullPtr<char> shared_data = CHI_IPC->AllocateBuffer(data.size());
  memcpy(shared_data.ptr_, data.data(), data.size());

  cte_client.PutBlob(tag_id, "my_blob",
                     0,                    // offset
                     data.size(),          // size
                     shared_data.shm_,     // shared memory pointer
                     0.8f,                 // importance score
                     0);                   // flags
  CHI_IPC->FreeBuffer(shared_data);

  // 7. Retrieve blob data
  ctp::ipc::FullPtr<char> read_buf = CHI_IPC->AllocateBuffer(data.size());
  cte_client.GetBlob(tag_id, "my_blob",
                     0,                    // offset
                     data.size(),          // size
                     0,                    // flags
                     read_buf.shm_);
  // read_buf.ptr_ now contains the retrieved data
  CHI_IPC->FreeBuffer(read_buf);

  // 8. Cleanup
  cte_client.DelTag(tag_id);
  return 0;
}

Build and Link:

# Unified package includes everything - ClioCtp, Chimaera, and all ChiMods
find_package(iowarp-core REQUIRED)

target_link_libraries(my_app
  clio_cte::core_client    # CTE client (for the example above)
  chimaera::admin_client  # Admin Module (always available)
  chimaera::bdev_client   # Block device Module (always available)
)

What find_package(iowarp-core) provides:

Core Components:

  • All ctp::* modular targets (cxx, configure, serialize, interceptor, lightbeam, thread_all, mpi, compress, encrypt)
  • chimaera::cxx (core runtime library)
  • Module build utilities

Core ChiMods (Always Available):

  • chimaera::admin_client, chimaera::admin_runtime
  • chimaera::bdev_client, chimaera::bdev_runtime

Optional ChiMods (if enabled at build time):

  • clio_cte::core_client, clio_cte::core_runtime (Context Transfer Engine)
  • clio_cae::core_client, clio_cae::core_runtime (Context Assimilation Engine)

Testing

CLIO Core includes comprehensive test suites for each component:

# Run all unit tests
cd build
ctest -VV

# Run specific component tests
ctest -R context_transport  # Transport primitives tests
ctest -R chimaera           # Runtime tests
ctest -R cte                # Context transfer engine tests
ctest -R omni               # Context assimilation engine tests

Benchmarking

CLIO Core includes performance benchmarks for measuring runtime and I/O throughput.

Runtime Throughput Benchmark (clio_run_thrpt_benchmark)

Measures task throughput and latency for the Clio runtime.

clio_run_thrpt_benchmark [options]

Parameters:

Parameter Default Description
--test-case <case> bdev_io Test case to run
--threads <N> 4 Number of client worker threads
--duration <seconds> 10.0 Duration to run benchmark
--max-file-size <size> 1g Maximum file size (supports k, m, g suffixes)
--io-size <size> 4k I/O size per operation
--lane-policy <P> (from config) Lane policy: map_by_pid_tid, round_robin, random
--output-dir <dir> /tmp/clio_benchmark Output directory for files
--verbose, -v false Enable verbose output

Test Cases:

  • bdev_io - Full I/O throughput (Allocate → Write → Free)
  • bdev_allocation - Allocation-only throughput
  • bdev_task_alloc - Task allocation/deletion overhead
  • latency - Round-trip task latency

Examples:

# Full I/O benchmark with 8 threads for 30 seconds
clio_run_thrpt_benchmark --test-case bdev_io --threads 8 --duration 30

# Latency benchmark with verbose output
clio_run_thrpt_benchmark --test-case latency --threads 4 --verbose

# Large I/O with 1MB blocks
clio_run_thrpt_benchmark --test-case bdev_io --io-size 1m --threads 16

CTE Benchmark (clio_cte_bench)

Measures Context Transfer Engine Put/Get performance.

clio_cte_bench [options]

Parameters:

Parameter Default Description
--op <Put|Get|PutGet> Put Operation to benchmark (alias: --test-case)
--threads <N> 1 Number of worker threads
--depth <N> 1 Async requests in flight per thread
--io-size <size> 1m Bytes per op (supports k, m, g suffixes)
--io-count <N> 1000 Ops per thread (ignored when --time-limit is set)
--max-total-blobs <N> 0 (unbounded) Total distinct keys across all threads (split evenly)
--time-limit <seconds> 0 (off) Run for N seconds instead of --io-count ops
--help, -h Show usage and exit

A legacy positional form is also accepted:

clio_cte_bench <test_case> <threads> <depth> <io_size> <io_count>

Examples:

# Put benchmark: 4 threads, 8 async depth, 1MB I/O, 200 ops/thread
clio_cte_bench --op Put --threads 4 --depth 8 --io-size 1m --io-count 200

# Get benchmark with a 30-second time limit and 4KB I/O
clio_cte_bench --op Get --threads 2 --depth 4 --io-size 4k --time-limit 30

# Combined Put/Get over a bounded keyspace of 1024 total blobs
clio_cte_bench --op PutGet --threads 8 --depth 16 --io-size 16m \
               --io-count 50 --max-total-blobs 1024

Output Metrics:

  • Total execution time (ms)
  • Per-thread bandwidth: min, max, avg (MB/s)
  • Aggregate bandwidth across all threads

Documentation

Comprehensive documentation is available for each component:

Use Cases

Scientific Computing:

  • High-performance data processing pipelines
  • Near-data computing for large datasets
  • Custom storage engine development
  • Computational workflows with context management

Storage Systems:

  • Distributed file system backends
  • Object storage implementations
  • Multi-tiered cache and storage solutions
  • High-throughput I/O buffering

HPC and Data-Intensive Workloads:

  • Accelerated I/O for scientific applications
  • Data ingestion and transformation pipelines
  • Heterogeneous computing with GPU support
  • Real-time streaming analytics

Performance Characteristics

CLIO Core is designed for high-performance computing scenarios:

  • Task Latency: < 10 microseconds for local task execution (Chimaera Runtime)
  • Memory Bandwidth: Up to 50 GB/s with RAM-based storage backends
  • Scalability: Single node to multi-node cluster deployments
  • Concurrency: Thousands of concurrent coroutine-based tasks
  • I/O Performance: Native async I/O with multi-tiered buffering

Contributing

We welcome contributions to the CLIO Core project!

Development Workflow

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Follow the coding standards in AGENTS.md
  4. Test your changes: ctest --test-dir build
  5. Submit a pull request

Coding Standards

  • Follow Google C++ Style Guide
  • Use semantic naming for IDs and priorities
  • Always create docstrings for new functions (Doxygen compatible)
  • Add comprehensive unit tests for new functionality
  • Never use mock/stub code unless explicitly required - implement real, working code

See AGENTS.md for complete coding standards and workflow guidelines.

License

CLIO Core is licensed under the BSD 3-Clause License. See LICENSE file for complete license text.

Copyright (c) 2024, Gnosis Research Center, Illinois Institute of Technology


Acknowledgements

CLIO Core is developed at the GRC lab at Illinois Institute of Technology as part of the IOWarp project. This work is supported by the National Science Foundation (NSF) and aims to advance next-generation scientific computing infrastructure.

For more information:


Built with ❤️ by the GRC Lab at Illinois Institute of Technology

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_aarch64.whl (15.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_aarch64.whl (15.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_aarch64.whl (15.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_aarch64.whl (15.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

File details

Details for the file iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 049d8480533ee41cb79f56767b2b0d6875f2e63a30f1763633088231ccdb0723
MD5 2aa79b8b10d227e0a3c3d15a0e4a9af9
BLAKE2b-256 2145fc6a62fdfd84bd9d3d277f06a99fb2ba71800945b4c5fa3a6adbc72458e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 f5bbe5b9333ddfda62ea36f11cf2338379c2049a529c3966265226b8a6c8b981
MD5 ba4adf83be1af4ee4a297316ebc44e91
BLAKE2b-256 b1755b5b26f6a818935c0f55e8e8763ea49ce56468edc7ab595768d91ad93544

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp313-cp313-manylinux_2_34_aarch64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 67fadb7cf3b8be5904c410ecac0d65d0d3b5b0f21cca2acd7cd0d3fbe3988d21
MD5 e026532a37fa2adfba3cb8b675f6a2cc
BLAKE2b-256 45c25ba291553ac35eff6f72fdc4152dde88ff3d0b3a43d7fcec71fe848468ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 0da3f1d0249cab358dadb5a38a18a1ddfa92b04b17d4e606ee7ebde9b3e2ecbc
MD5 1761595a2c3fac15b82082a8860ce1df
BLAKE2b-256 6b3d33782f495b74163fe9581102289e596fd134db95184d5dcf252d6e2f4140

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp312-cp312-manylinux_2_34_aarch64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 415aa9a9c8727397d642328794d14b28d4cd53d00e5e490ce0c3580fa07b3b52
MD5 045b37fd45d85b4bb2a08c1deee785f0
BLAKE2b-256 0d424c20ee9a1a826f65d78db75b6241917baea2e921630c6303d06b18c5699e

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a0b8017321135937d20278f16da9da6f95bd1969e031c1d357cfa675b7c15718
MD5 cca0ecddba57b35d5438b2bb22185bfe
BLAKE2b-256 416f8847110cf74dbd551a0ae0f2385d67a2cabef30567de3b0391ef4752ef32

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp311-cp311-manylinux_2_34_aarch64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3dd16cac1a26ae8ffe8933c3f5502a24dc18e47ae2b53bddda3931d5a0a3301a
MD5 d4b8461a35ccddf19c431f9907a567ea
BLAKE2b-256 ebe7c79b594efdf0b06d72ccc689e2b65f941dae301903a6b127c29ff5466ea9

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 e247ff5fc1f0a0736a7965272eddcafe11601ad4d78110780d56612a0f379bea
MD5 eeffb2f9ef7b982af81e597712683f08
BLAKE2b-256 5ed898832a68501216eb3effe7280455257c4b514e5d32887127ca0fcfa75fa8

See more details on using hashes here.

Provenance

The following attestation bundles were made for iowarp_core-1.5.8-cp310-cp310-manylinux_2_34_aarch64.whl:

Publisher: build-pip.yml on iowarp/clio-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page