Чтение одномерного набора данных соединений HDF5 в структуре C параллельно

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

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

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

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

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

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

Благодарю.


person Andrea Zonca    schedule 19.08.2011    source источник


Ответы (1)


Вы нашли руководство по параллельному вводу-выводу 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

person Rob Latham    schedule 08.11.2011