FAQ

Frequently Asked Questions

Q: TCP server port conflict — "TCP server on port 5555 failed to bind"

A: Another process is using port 5555. Either kill the conflicting process or change the port in your configuration.

# Find the process using port 5555
lsof -i :5555

# Kill the process (replace <PID> with actual process ID)
kill -9 <PID>

# Or change the port in wrp_conf.yaml
network:
  zmq_port: 5556

Q: Shared memory not available

A: IPC requires shared memory. Set shm_size: 8g in Docker or configure /dev/shm on bare metal.

# Docker: Add to docker-compose.yml
services:
  iowarp-runtime:
    shm_size: 8g

# Bare metal: Mount /dev/shm with sufficient size
sudo mount -o remount,size=8G /dev/shm

# Verify shared memory size
df -h /dev/shm

Q: How do I check if IOWarp runtime is running?

A: Use clio status or check the ZeroMQ port.

# Check runtime status
clio status

# Check if ZeroMQ port is listening
netstat -tuln | grep 5555
# or
ss -tuln | grep 5555

# Test connection (Python SDK coming soon)
# Currently available as C++ API via IOWarp Core

Q: What scientific formats are supported?

A: 50+ formats: HDF5, NetCDF, Zarr, CSV, JSON, Parquet, FITS, ROOT, PDB, and more via CLIO Ingest plugins.

Scientific

  • • HDF5
  • • NetCDF
  • • Zarr
  • • FITS
  • • ROOT

Tabular

  • • CSV
  • • JSON
  • • Parquet
  • • Excel
  • • Arrow

Domain-Specific

  • • PDB (Bio)
  • • DICOM (Medical)
  • • NeXus (Neutron)
  • • CDF (Space)

Q: Can I use IOWarp with GPU workloads?

A: Yes. CLIO Transfer supports GPU Direct Storage for NVMe-to-GPU transfers, and Hermes provides CUDA memory backends for GPU HBM.

# Enable CUDA support in Spack
spack install iowarp +cuda cuda_arch=70

# Configure GPU HBM storage tier
storage:
  - path: "gpu::cte_gpu_tier1"
    bdev_type: "cuda"
    capacity_limit: "32GB"
    score: 0.0
    device: 0  # GPU device ID

# Use GPU memory backend in Hermes
auto alloc = mem->GetAllocator(alloc_id);

Q: How do I add a custom format plugin?

A: Implement the CLIO Ingest plugin interface and register your plugin.

# Implement CLIO Ingest plugin interface
#include 

class MyFormatPlugin : public CLIOIngestPlugin {
public:
    std::string GetFormatName() override { return "myformat"; }
    bool CanRead(const std::string& path) override;
    Context Ingest(const std::string& path) override;
    void Export(const Context& ctx, const std::string& path) override;
};

// Register plugin
CLIO_REGISTER_PLUGIN(MyFormatPlugin);

# Load plugin in wrp_conf.yaml
clio_ingest:
  plugins:
    - libmyformat_plugin.so

Q: What are the minimum system requirements?

A: 8GB RAM, Docker or Linux. For HPC: Spack, shared filesystem.

Minimum Requirements

  • • 8GB RAM
  • • Docker or Linux
  • • 10GB disk space
  • • x86_64 or ARM64

HPC Requirements

  • • Spack package manager
  • • Shared filesystem (Lustre/GPFS)
  • • High-speed interconnect (optional)
  • • Job scheduler (Slurm/PBS)

Q: IOWarp is slow. How do I improve performance?

A: Check worker threads, buffer sizes, storage tier configuration, and network settings.

# Increase worker threads
export CHIMAERA_NUM_WORKERS=16

# Increase buffer sizes for large I/O
performance:
  buffer_size: "4MB"
  queue_depth: 128

# Ensure hot data is on fast tiers
storage:
  - path: "ram::tier1"
    score: 0.0  # Highest priority

# Use high-speed interconnect for multi-node
network:
  interconnect: "ib0"