Паралелно четене на набор от данни за мономерно съединение 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)


Намерихте ли урока за паралелен I/O HDF5?

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

Звучи така, сякаш ще трябва да научите как да конструирате HDF5 типове данни:

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

За да направите паралелно колективно обаждане, трябва да направите няколко неща. Първо, трябва да разложите набора си от данни между процесорите. Малко аритматика ви дава параметрите за начало и броене, от които се нуждаете. Ще трябва да активирате паралелен I/O със списък със свойства на HDF5, който е добре документиран в урока за паралелен I/O. По-малко документиран е флагът за разрешаване на колективен I/O:

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