hdf5

Мощная иерархическая модель данных и библиотека для хранения и управления большими, сложными и гетерогенными наборами данных. Библиотека предоставляет гибкие возможности для организации данных, хранения многомерных массивов и присоединения метаинформации. Благодаря своей переносимости и масштабируемости, HDF5 широко используется в научных вычислениях, промышленности и других областях, работающих с большими данными.

Особенности

  • иерархическая организация данных, подобная файловой системе;
  • поддержка сложных типов данных, включая композитные, перечисления и массивы переменной длины;
  • эффективный ввод-вывод для многомерных массивов с возможностью частичного чтения/записи;
  • высокая производительность благодаря chunked хранению, сжатию и параллельному вводу-выводу;
  • переносимость данных между различными архитектурами за счёт единого формата файла.

Основные компоненты

HDF5 предоставляет набор C-функций и объектно-ориентированных C++ обёрток для работы с файлами и данными (подробнее с документацией можно ознакомиться здесь).

Управление файлами и библиотекой

Модули для открытия/закрытия файлов и глобального управления библиотекой. В C++ API используются классы H5::H5File и H5::H5Library.

Основные методы класса H5Library:

  • H5::H5Library::open() и H5::H5Library::close() — инициализация и завершение работы библиотеки;
  • H5::H5Library::checkVersion(maj, min, rel) — проверка соответствия версий;
  • H5::H5Library::getLibVersion(maj, min, rel) — получение версии библиотеки;
  • H5::H5Library::garbageCollect() — принудительная очистка памяти, занятой библиотекой.

Методы класса H5File:

  • H5::H5File::H5File(name, flags, ...) — открытие или создание файла;
  • H5::H5File::open() / H5::H5File::close() — открыть/закрыть файл;
  • H5::H5File::flush() — сброс данных на диск;
  • H5::H5File::unlink(name) — удаление объекта из файла.

Группы

Группы служат контейнерами для организации объектов в иерархию, аналогично директориям в файловой системе. Группы могут содержать датасеты, другие группы и именованные типы данных.

Основные методы класса H5::Group:

  • H5::Group::createGroup(name) — создание новой группы;
  • H5::Group::openGroup(name) — открытие существующей группы;
  • H5::Group::getNumObjs() — количество объектов в группе;
  • H5::Group::getObjnameByIdx(idx) — имя объекта по индексу;
  • H5::Group::getChildType(idx) — тип объекта (датасет, группа, тип).

Датасеты

Датасеты — это основные контейнеры данных, представляющие многомерные массивы элементов одного типа. Они состоят из сырых данных, метаданных (тип данных, пространство данных, свойства) и могут быть сжаты или зашумованы.

Основные методы класса H5::DataSet:

  • H5::DataSet::DataSet() — создание датасета (через H5File::createDataSet);
  • H5::DataSet::write(buffer, mem_type, mem_space, file_space) — запись данных;
  • H5::DataSet::read(buffer, mem_type, mem_space, file_space) — чтение данных;
  • H5::DataSet::getSpace() — получение пространства данных (dataspace);
  • H5::DataSet::getTypeClass() — класс типа данных;
  • H5::DataSet::getCreatePlist() — список свойств создания.

Типы данных

Типы данных описывают элементную структуру датасетов и атрибутов. Поддерживаются как предопределённые атомарные типы, так и пользовательские композитные типы, напоминающие структуры C/C++.

Основные методы класса H5::DataType и наследников:

  • H5::DataType::copy(type) — копирование типа;
  • H5::DataType::getClass() — класс типа (целое, float, строка, композитный и т.д.);
  • H5::DataType::getSize() — размер типа в байтах;
  • H5::CompType::insertMember(name, offset, type) — добавление поля в композитный тип;
  • H5::StrType::setCset(cset) — установка кодировки строки (ASCII, UTF-8).

Пространства данных

Пространства данных описывают размерность и форму многомерных массивов. Они определяют как логическую структуру датасета, так и подмножества данных (selection) для частичного ввода-вывода.

Основные методы класса H5::DataSpace:

  • H5::DataSpace::DataSpace(rank, dims, maxdims) — создание простого пространства;
  • H5::DataSpace::getSimpleExtentDims(dims) — получение размеров;
  • H5::DataSpace::getSimpleExtentNdims() — ранг (количество размерностей);
  • H5::DataSpace::selectHyperslab(op, start, stride, count, block) — выбор гиперслайса;
  • H5::DataSpace::getSelectNpoints() — количество выбранных элементов.

Атрибуты

Атрибуты — это небольшие метаданные, прикреплённые к объектам. Они позволяют хранить описательную информацию, параметры и пользовательские аннотации.

Основные методы класса H5::Attribute:

  • H5::H5Object::createAttribute(name, data_type, data_space) — создание атрибута у объекта;
  • H5::H5Object::openAttribute(name) — открытие атрибута;
  • H5::Attribute::write(data_type, buffer) — запись данных атрибута;
  • H5::Attribute::read(data_type, buffer) — чтение данных атрибута;
  • H5::Attribute::getSpace() — пространство данных атрибута.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "hdf5/1.8.21@aurora",
    )    

Процесс локальной сборки описан в документации.

hdf5

HDF5 is a data model, library, and file format for storing and managing data.
Лицензия
BSD-3-Clause
Версия
Автор
Daniil Markevich <d.markevich@omp.ru>
Домашняя страница
Скачать
armv7
1.56 Mb
MD5: e2b7fc78643159c04d7ee471f04cf666
Updated: 05.02.2026, 10:20:26
x86_64
1.57 Mb
MD5: 1f936d63eb7aa2cba7c728a42185fb6d
Updated: 05.02.2026, 10:20:29
armv8
1.49 Mb
MD5: 7af61a3d2601d81277516156e551fb7a
Updated: 05.02.2026, 10:20:16
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.