How to read/write a HDF5 file using petsc4py ?
Hello,
I want to compute a vector in real mode, than perform calculations with it in complex mode. I want as much of this process to be parallel as possible. Right now, I compile PETSc in real mode, compute my vector and save it to a file, then switch to complex mode, read it, and move on.
This creates unexpected behaviour using MPIIO, so on @dalcinl's advice I'm moving to HDF5 format. My code is as follows (taking inspiration from petsc4py doc, a bitbucket example and another one, all top Google results on a quick 'petsc hdf5' search) :
viewer = PETSc.Viewer().createHDF5(file_name, 'r', COMM_WORLD)
q.load(viewer)
q.ghostUpdate(addv=PETSc.InsertMode.INSERT, mode=PETSc.ScatterMode.FORWARD)
This crashes my code. I obtain traceback :
File "/home/shared/code.py", line 121, in Load
viewer = PETSc.Viewer().createHDF5(file_name, 'r', COMM_WORLD)
File "PETSc/Viewer.pyx", line 182, in petsc4py.PETSc.Viewer.createHDF5
petsc4py.PETSc.Error: error code 86
[0] PetscViewerSetType() at /usr/local/petsc/src/sys/classes/viewer/interface/viewreg.c:442
[0] Unknown type. Check for miss-spelling or missing package: https://petsc.org/release/install/install/#external-packages
[0] Unknown PetscViewer type given: hdf5
I have petsc4py 3.16 from this docker container (list of dependencies include PETSc and petsc4py).
I'm pretty sure this is not intended behaviour. Any insight as to how to fix this issue (I tried running ./configure --with-hdf5
to no avail) or more generally to perform this jiggling between real and complex would be much appreciated,
Kind regards.