# HDF5 Circular Buffer Writer with Intel QAT and DSA

This project implements a high-performance program to write data from a circular buffer into a fully compliant HDF5 v0 file, leveraging Intel QuickAssist Technology (QAT) for compression and Intel Data Streaming Accelerator (DSA) for efficient data movement. The resulting HDF5 file is meticulously crafted to adhere to the HDF5 v0 specification, including a root group, B-tree, name heap, and a compressed dataset, ensuring compatibility with HDF5 tools and libraries.

## Features
- **Circular Buffer Handling**: Seamlessly extracts data from a circular buffer with wrap-around logic.
- **HDF5 v0 Compliance**: Generates a standards-compliant HDF5 file with a superblock, B-tree, name heap, and dataset, validated against the HDF5 v0 specification.
- **Compression**: Employs Intel QAT with DEFLATE compression for efficient dataset storage.
- **Efficient I/O**: Utilizes Intel DSA for optimized memory-mapped file writing.
- **Scalability**: Designed to handle large datasets (e.g., 1 billion floats, ~8 GB).

## Prerequisites
- **Hardware**:
  - Intel CPU with support for Data Streaming Accelerator (DSA).
  - Intel QuickAssist Technology (QAT) hardware (e.g., QAT-enabled chipset or adapter).
- **Software**:
  - Intel QATzip library (`libqatzip`).
  - Intel Data Mover Library (`libdml`).
  - GCC or compatible C compiler.
  - Linux operating system (due to file I/O and memory mapping).

## Installation
1. **Install Dependencies**:
   - Install Intel QAT drivers and QATzip library (refer to [Intel QAT documentation](https://www.intel.com/content/www/us/en/developer/tools/quickassist-technology/overview.html)).
   - Install Intel DML (Data Mover Library) for DSA support (see [Intel DML GitHub](https://github.com/intel/data-mover-library)).
   - Ensure development tools are installed:
     ```bash
     sudo apt update
     sudo apt install build-essential
     ```

2. **Clone the Repository**:
   ```bash
   git clone <repository-url>
   cd <repository-directory>