Deployment Guide
Deploy IOWarp on HPC Clusters
Spack Deployment
Spack is the recommended package manager for HPC environments. It provides optimized builds, dependency management, and multi-node deployment capabilities.
Single-Node Installation
# Install IOWarp
spack install iowarp
# Load IOWarp environment
spack load iowarp
# Verify installation
clio status Multi-Node Deployment
# Install on all nodes
parallel-ssh -i -h hostfile -x "-o SendEnv=PATH" \
"spack install iowarp && spack load iowarp"
# Start runtime on all nodes
parallel-ssh -i -h hostfile -x "-o SendEnv=PATH" \
"clio deploy"
# Verify all nodes are running
parallel-ssh -i -h hostfile \
"clio status" Spack Variants
Customize your IOWarp installation with Spack variants:
# With CUDA support
spack install iowarp +cuda cuda_arch=70
# With MPI support
spack install iowarp +mpi
# With specific compiler
spack install iowarp %gcc@12
# With debug symbols
spack install iowarp +debug
# Combined variants
spack install iowarp +cuda +mpi %gcc@12 YAML Configuration Reference
Complete reference for wrp_conf.yaml with all available parameters and options.
Full Configuration Example
compose:
- mod_name: wrp_cte_core
pool_name: wrp_cte
pool_query: local
pool_id: 512.0
storage:
# Critical tier: RAM (fastest)
- path: "ram::cte_ram_tier1"
bdev_type: "ram"
capacity_limit: "16GB"
score: 0.0
# Working tier: NVMe SSD
- path: "nvme::cte_nvme_tier1"
bdev_type: "nvme"
capacity_limit: "1TB"
score: 5.0
device: "/dev/nvme0n1"
# Reference tier: Parallel File System
- path: "lustre::cte_lustre_tier1"
bdev_type: "file"
capacity_limit: "100TB"
score: 50.0
mount_point: "/lustre/iowarp"
# Archive tier: Async I/O
- path: "tape::cte_tape_tier1"
bdev_type: "async"
capacity_limit: "1PB"
score: 100.0
backend: "ltfs"
# Network configuration
network:
zmq_port: 5555
zmq_bind_address: "0.0.0.0"
enable_tls: false
tls_cert: "/etc/iowarp/cert.pem"
tls_key: "/etc/iowarp/key.pem"
# Performance tuning
performance:
num_workers: 8
queue_depth: 64
buffer_size: "1MB"
prefetch_enabled: true
prefetch_size: "100MB"
# Logging
logging:
level: "info"
file: "/var/log/iowarp/runtime.log"
rotation_size: "100MB"
max_files: 10 compose Section
- mod_name: Runtime module name
- pool_name: Memory pool identifier
- pool_query:
localorremote - pool_id: Unique pool ID (float)
storage Section
- path: Tier identifier
- bdev_type:
ram,nvme,file,async - capacity_limit: Max capacity
- score: Placement priority
Storage Tiers
RAM
Fastest tier, smallest capacity
bdev_type: "ram" NVMe
High-speed SSD storage
bdev_type: "nvme"
device: "/dev/nvme0n1" File-Based
Parallel file systems (Lustre, GPFS)
bdev_type: "file"
mount_point: "/lustre/iowarp" Async I/O
Tape, cloud, object storage
bdev_type: "async"
backend: "ltfs" Performance Tuning
Optimize IOWarp performance for your specific workload and hardware configuration.
Worker Threads
Control the number of worker threads using the CHIMAERA_NUM_WORKERS environment variable:
# Set number of workers (default: number of CPU cores)
export CHIMAERA_NUM_WORKERS=16
# Or in wrp_conf.yaml
performance:
num_workers: 16 Recommendation: Set to number of CPU cores for CPU-bound workloads, or number of I/O devices for I/O-bound workloads.
DPE (Data Placement Engine) Strategies
ML-Based (Default)
Uses machine learning models to predict access patterns:
placement_strategy: "ml_based" LRU (Least Recently Used)
Simple eviction policy based on access recency:
placement_strategy: "lru" Buffer Sizes and Queue Depths
performance:
# I/O buffer size per operation
buffer_size: "1MB" # Options: 64KB, 256KB, 1MB, 4MB
# Queue depth for async operations
queue_depth: 64 # Increase for high I/O parallelism
# Prefetch configuration
prefetch_enabled: true
prefetch_size: "100MB" # Amount to prefetch ahead Tuning Tips: Increase buffer_size for large sequential I/O, increase queue_depth for random I/O patterns, enable prefetch for sequential access patterns.
Container Deployment
Deploy IOWarp using Docker or Kubernetes for containerized environments.
Docker Deployment
# Run IOWarp container
docker run -d \
--name iowarp-runtime \
--shm-size=8g \
--ipc=shareable \
-p 5555:5555 \
-v ./wrp_conf.yaml:/etc/iowarp/wrp_conf.yaml:ro \
iowarp/iowarp:latest Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: iowarp-runtime
spec:
replicas: 1
selector:
matchLabels:
app: iowarp
template:
metadata:
labels:
app: iowarp
spec:
containers:
- name: iowarp
image: iowarp/iowarp:latest
ports:
- containerPort: 5555
volumeMounts:
- name: config
mountPath: /etc/iowarp/wrp_conf.yaml
subPath: wrp_conf.yaml
resources:
requests:
memory: "8Gi"
limits:
memory: "16Gi"
volumes:
- name: config
configMap:
name: iowarp-config Multi-Node Configuration
Configure IOWarp for multi-node HPC deployments with shared storage and network coordination.
Hostfile Setup
# hostfile format
node001.cluster.local
node002.cluster.local
node003.cluster.local
node004.cluster.local Network Configuration
# wrp_conf.yaml for multi-node
network:
zmq_port: 5555
zmq_bind_address: "0.0.0.0"
# High-speed interconnect (InfiniBand, Omni-Path)
interconnect: "ib0"
interconnect_port: 5556
# Discovery service
discovery:
enabled: true
method: "zeroconf" # or "static"
static_nodes:
- "node001.cluster.local:5555"
- "node002.cluster.local:5555" Multi-Node Best Practices
- • Use high-speed interconnects (InfiniBand) for data transfer
- • Configure shared storage (Lustre, GPFS) for persistent data
- • Enable discovery service for automatic node detection
- • Use job schedulers (Slurm, PBS) for coordinated startup