RFC: Removing the (broken) "build h5perf standalone" feature

Hi all,

For a long time (since HDF5 1.6.8, released back in 2008), h5perf and h5perf_serial have been buildable in “standalone” mode, where the tool can be built separately, with an arbitrary compiler and without rebuilding the library. What this means is that we provide some build scripts that construct h5perf/h5perf_serial using h5cc and some alternative header files that provide a limited subset of the HDF5 library platform-independence functionality.

Unfortunately, this scheme appears to have broken around the time we released HDF5 1.10.0, when the required io_timer.c file was moved to a different directory. In addition, it’s also more subtly broken as the duplicated platform-independence stuff uses the symbols from the library’s H5pubconf.h instead of querying your new compiler via a separate configuration step.

I can fix this, of course, but I’m having a hard time understanding why someone would want to compile the performance test driver with a separate compiler without recompiling the library. Furthermore, it’s a maintenance headache to keep the platform-independence duplication up to date and all of that is going to break anyway when I rework the build system to not deploy H5pubconf.h. Fundamentally, doing this right would require a separate configure scheme (actually two configure schemes, since we support both the Autotools and CMake). I feel like we should probably consider moving h5perf to a separate repository if we’re going that route.

And it’s unclear how much people even really use h5perf, given that there are much better performance tools out there. h5perf is handy as a quick performance check that compares POSIX I/O, MPI-I/O, and pHDF5 but it’s not very configurable and probably doesn’t map well to your I/O patterns.

Given this, I’d like to rip out the broken “standalone” functionality and just have h5perf and h5perf_standalone build and deploy like the other tools. If someone is keen on building these tools independently, it wouldn’t be difficult to extract the files, rip out the platform-independence stuff (which is mainly there to make it compile on Windows - I don’t think there are POSIX issues), and drop that with some build files into a separate repo.

Thoughts? Does anyone have a strong opinion about this? Does the “standalone” scheme even work for anyone?

Also, as a part of fixing this, I’m going to be removing the small perf test program that has been built with the library for the past 20 years. It doesn’t really do much and it’s installed (for unknown reasons), which conflicts with gnu’s perf tool.

Issue concerning deploying perf here: