Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOR HDF5 backend no longer works #456

Open
shanedsnyder opened this issue Feb 28, 2023 · 4 comments
Open

IOR HDF5 backend no longer works #456

shanedsnyder opened this issue Feb 28, 2023 · 4 comments

Comments

@shanedsnyder
Copy link
Contributor

Building against current main, a very simple IOR command using the HDF5 backend bombs:

shane@shane-x1-carbon ~/software/ior/build (main) $ ./src/ior -a HDF5
IOR-4.1.0+dev: MPI Coordinated Test of Parallel I/O
Began               : Tue Feb 28 14:31:54 2023
Command line        : ./src/ior -a HDF5
Machine             : Linux shane-x1-carbon
TestID              : 0
StartTime           : Tue Feb 28 14:31:54 2023https://github.com/hpc/ior/issues
Path                : testFile
FS                  : 218.2 GiB   Used FS: 51.1%   Inodes: 13.9 Mi   Used Inodes: 6.5%

Options: 
api                 : HDF5
apiVersion          : 1.12.0 (Parallel)
test filename       : testFile
access              : single-shared-file
type                : independent
segments            : 1
ordering in a file  : sequential
ordering inter file : no tasks offsets
nodes               : 1
tasks               : 1
clients per node    : 1
memoryBuffer        : CPU
dataAccess          : CPU
GPUDirect           : 0
repetitions         : 1
xfersize            : 262144 bytes
blocksize           : 1 MiB
aggregate filesize  : 1 MiB

Results: 

access    bw(MiB/s)  IOPS       Latency(s)  block(KiB) xfer(KiB)  open(s)    wr/rd(s)   close(s)   total(s)   iter
------    ---------  ----       ----------  ---------- ---------  --------   --------   --------   --------   ----
write     73.26      671.46     0.001489    1024.00    256.00     0.006890   0.005957   0.000803   0.013650   0   
read      206.91     3850       0.000260    1024.00    256.00     0.003502   0.001039   0.000292   0.004833   0   
HDF5-DIAG: Error detected in HDF5 (1.12.0) MPI-process 0:
  #000: ../../src/H5F.c line 941 in H5Fdelete(): unable to delete the file
    major: File accessibility
    minor: Unable to delete file
  #001: ../../src/H5VLcallback.c line 3755 in H5VL_file_specific(): file specific failed
    major: Virtual Object Layer
    minor: Can't operate on object
  #002: ../../src/H5VLcallback.c line 3684 in H5VL__file_specific(): file specific failed
    major: Virtual Object Layer
    minor: Can't operate on object
  #003: ../../src/H5VLnative_file.c line 408 in H5VL__native_file_specific(): H5Fdelete() is currently not supported in the native VOL connector
    major: File accessibility
    minor: Feature is unsupported
** error **
ERROR in ../../src/aiori-HDF5.c (line 533): cannot delete file.
** exiting **

Just looking at commit history, maybe this is related to recent work to make HDF5 backend work with VOLs (#441)?

@JulianKunkel
Copy link
Collaborator

JulianKunkel commented Mar 1, 2023

Mhh, I see in the AIORI code, various checks for HAVE_H5PGET_VOL_ID that cause for instance this output. However:

I downloaded the latest version 1.14 from the webpage, then compiled HDF5 with:
$ configure --prefix=./install --enable-parallel --enable-direct-vfd --enable-mirror-vfd

Configure IOR:
$ configure --with-aio --with-hdf5 --with-ncmpi LDFLAGS=-L./install/lib/ CFLAGS=-I./install/include

ldd showed that it was correctly linked to libhdf5.so.310

api                 : HDF5
apiVersion          : 1.14.0 (Parallel)
test filename       : testFile
access              : single-shared-file
type                : independent
segments            : 1
ordering in a file  : sequential
ordering inter file : no tasks offsets
nodes               : 1
tasks               : 1
clients per node    : 1
repetitions         : 1
xfersize            : 262144 bytes
blocksize           : 1 MiB
aggregate filesize  : 1 MiB

Results: 

access    bw(MiB/s)  IOPS       Latency(s)  block(KiB) xfer(KiB)  open(s)    wr/rd(s)   close(s)   total(s)   iter
------    ---------  ----       ----------  ---------- ---------  --------   --------   --------   --------   ----
write     339.10     2437.49    0.000410    1024.00    256.00     0.000973   0.001641   0.000335   0.002949   0   
read      968.21     13563      0.000074    1024.00    256.00     0.000643   0.000295   0.000095   0.001033   0   

Can you give some details what exactly you did?

Maybe you can try with 1.14 as well?

@shanedsnyder
Copy link
Contributor Author

I did try with 1.14.0 and confirmed things work fine.

If you try to build against older HDF5 versions (I tried 1.12.0), you get the errors I mention initially. So, appears HDF5 backend is somehow tied to newer HDF5 (VOL) APIs?

@JulianKunkel
Copy link
Collaborator

It worked for me with a 1.10.0 as well.
Maybe one revision of 1.12. doesn't work. I would tend to close this issue here.

@carns
Copy link

carns commented Mar 2, 2023

I think that 1.12 is still fairly common in the wild. It would be safer to either fix it or have it fail at configure time if it's really not compatible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants