[gdal-dev] HDF5 Multi-threading Errors
Even Rouault
even.rouault at spatialys.com
Wed Feb 27 07:37:12 PST 2019
Hi,
Part of your message didn't make it. See as it appears in
https://lists.osgeo.org/pipermail/gdal-dev/2019-February/049832.html
Do you have a link to that dbdbv6_level0c.h5 file ?
Regarding multi-threading, do you use a different GDAL dataset handle for each
thread ? This is critical for proper behaviour. Some drivers might, by luck,
work correctly with the same handle, but this is absolutely not guaranteed.
Even
> I am working in a .NET (4.5.2) environment, using GDAL v2.3.3 (along with
> the Native and Plugins packages). The HDF5 driver is version 1.8.14. The
> elevation source I'm using is dbdbv6_level0c.h5, supplied by NAVOCEANO, and
> is version 6.2. There are 1,700 subdatasets (each 600x600 float-32) in the
> .h5.
>
> In our application, a map engine makes asynchronous requests for slippy map
> tiles. At small zoom levels, these requests are passed to our ETOPO1
> elevation source (which uses the ESRI driver, source file
> etopo1_ice_g_f4.flt), but at larger zoom levels, we poll the DBDB-V source
> summarized above.
>
> As mentioned, these requests are asynchronous, and I've run into
> multi-threading issues with the HDF5 driver. Everything "works as expected"
> for the ESRI driver and ETOPO1 elevation data, but making the same requests
> of DBDB-V / HDF5 results in various exceptions.
>
> As a quick test application, I wrote this:
>
>
>
> The output shows that the ETOPO1 source handles the parallel calls just
> fine, but that the DBDB-V source fails:
>
>
>
> The originating exception is thrown from the HDF5 library:
>
>
>
> Finally, I should note that if the Parallel.For loop around the DBDB-V is
> changed to a normal for-loop, then nothing bad happens... the application
> outputs a sequential success story:
>
>
>
> However, it takes *almost four seconds* (average is 3.8s) for every
> Gdal.Open(...) call to DBDB-V! Compare this to the very quick response of
> ETOPO1 (average 1 millisecond)... and it explains why we can't realistically
> even consider synchronous calls to DBDB-V, and really need to understand
> why it is failing in parallel.
>
> I know that other questions have been asked about HDF5 multi-threading, but
> they seemed to focus on building the HDF5 source locally. We don't have that
> option - our data is supplied by NAVOCEANO "as is."
>
> Very anxious to learn if anyone has a solution, or perhaps this is an issue
> that could be fixed in an upcoming branch. Thanks!
>
>
>
> --
> Sent from: http://osgeo-org.1560.x6.nabble.com/GDAL-Dev-f3742093.html
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the gdal-dev
mailing list