Есть ли какой-либо параллельный способ доступа к файлам Netcdf в Python

Есть ли способ сделать параллельный ввод-вывод для файлов Netcdf в Python?

Я так понимаю, что есть проект под названием PyPNetCDF, но видимо он старый, не обновлялся и вроде вообще не работает. Кто-нибудь вообще добился успеха с параллельным вводом-выводом с NetCDF в Python?

Любая помощь приветствуется


person Auxiliary    schedule 15.07.2015    source источник


Ответы (2)


Я не видел хороших примеров ни в одном из двух модулей Python NetCDF, см. https://github.com/Unidata/netcdf4-python/issues/345 Однако, если вам нужно только читать файлы, и они имеют формат NetCDF4, вы должны иметь возможность напрямую использовать HDF5 -- http://docs.h5py.org/en/latest/mpi.html, потому что NetCDF4 в основном представляет собой HDF5 с ограниченными данными модель. Вероятно, не будет работать с NetCDF3.

person kakk11    schedule 16.07.2015
comment
Python для параллельного ввода-вывода имеет большое значение для высокопроизводительных вычислений! Python обеспечивает клей, а библиотеки C более низкого уровня обеспечивают скорость. Ввод-вывод является таким узким местом, что я совершенно уверен, что интерпретатор Python находится далеко в списке факторов производительности. - person Rob Latham; 22.07.2015
comment
Почему вы сказали, что запуск программ Python MPI на многих узлах кажется неоптимальным решением? - person gerrit; 02.10.2016
comment
Спасибо @gerrit, похоже, я не могу найти анализ, который, как мне кажется, я читал, и, поскольку я не могу обосновать претензию, я удалю его. - person kakk11; 03.10.2016

Жаль, что PyPnetcdf не более зрелый. Я вижу жестко закодированные пути и заброшенные доменные имена. Не похоже, что потребуется много времени, чтобы что-то скомпилировать, но есть проблема заставить это работать...

  • в setup.py вы должны изменить library_dirs_list и include_dirs_list, чтобы они указывали на места в вашей системе, где установлен Northwestern/Argonne Parallel-NetCDF и где установлен ваш дистрибутив MPI.

  • тогда нужно будет пройти и обновить способ, которым pypnetcdf вызывает pnetcdf. Несколько лет назад (на самом деле, довольно много) мы продвинули многие типы в более крупные версии.

person Rob Latham    schedule 22.07.2015