I am a long-time user of the Intel Array Visualizer/Array Viewer. I still use it with the newer versions of Intel Visual Fortran while Intel for years has not included AV in their IVF product. I have contemplated porting over to using the HDF5 (https://www.hdfgroup.org/solutions/hdf5/) and am seeking comments on such a port. For those unacquainted AV, it appears to have been based on earlier HDF4/HDF5 code bases.
There is a little bit more to the port than simply using the same or equivalent API’s for Fortran. Let me explain:
I have a simulation program that takes days, weeks, months, … to complete. During simulation, I periodically update data held within an Array Visualizer HDFn database, this can be done with the HDFGroup HDF5 libraries. However, upon updating the database, I have independently launched one or more Array Viewer processes, which are attached to the same database as the simulation program. I believe the sharing is by way of a memory mapped file. With this configuration, during simulation I get an animated 3D visualization of the simulation running. Not only that, due to being able to run multiple Array Viewers, I can view the same simulation from different perspectives, as well as use the Array Viewer explorer pane to select viewing arbitrary charts and or tables. Additionally, if the data is in the database, during runtime I can add charts by hand without interfering with the simulation. On last nicety was the Array Viewer of the day had some memory leak bug and would crash. Due to the configuration having the Array Viewer running in a separate process, viewing the database built by the Array Visualizer code running in the simulator, the simulation could continue to run. The simulation control dialog box had a button that launches an additional Array Viewer.
The question I have is does anyone have experience using HDFGroup HDF5 where the HDF5 database is built by a compute intensive simulation in one process, while concurrently viewed in a separate process or multiple different processes. The shared database preferably by way of memory mapped file or other shared memory method.