Одновременное чтение набора многомерных составных данных HDF5 в структуре C - PullRequest
0 голосов
/ 19 августа 2011

У меня есть очень простой набор составных данных, около 1 миллиона строк составного типа:

1 длинный, 3 двойных.

Я хотел бы прочитать его параллельно с MPI, используя коллективный вызов , равномерно распределенный по всем процессорам.

Низкоуровневый интерфейс HDF5 очень сложен в использовании, и для такого простого набора данных мне интересно, могу ли я использовать один из API высокого уровня, такой как Lite или Table. Что не ясно из документации, так это то, что эти API поддерживают коллективное чтение MPI.

Может ли кто-нибудь написать простейший фрагмент кода, который может прочитать этот простой набор данных в структуру C с использованием HDF5 1.8?

Я считаю, что для эксперта это должно быть тривиально, но для начинающего сложность HDF5 (и его документов) делает его действительно сложной задачей.

спасибо.

1 Ответ

1 голос
/ 08 ноября 2011

Нашли ли вы учебник по параллельному вводу / выводу HDF5?

http://www.hdfgroup.org/HDF5/Tutor/parallel.html

Похоже, вам также нужно научиться создавать типы данных HDF5:

http://www.hdfgroup.org/HDF5/Tutor/datatypes.html

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

xfer_plist = H5Pcreate (H5P_DATASET_XFER);
ret=H5Pset_dxpl_mpio(xfer_plist, H5FD_MPIO_COLLECTIVE);

В конце этой страницы есть отличный пример:

http://www.hdfgroup.org/Parallel_HDF/PHDF5/ph5design.html

...