<div dir="auto">Let me summarize some HPC options for I/O.<div dir="auto"><br></div><div dir="auto">pnetcdf</div><div dir="auto">********</div><div dir="auto"><br></div><div dir="auto">A stand-alone, netcdf-compatible C/Fortran library from Argonne. </div><div dir="auto"><br></div><div dir="auto">PROs:</div><div dir="auto">* good performance</div><div dir="auto">* good access to MPI features.</div><div dir="auto">* some extra buffering for data which is helpful for HPC. </div><div dir="auto">* fastest/simplist way to get decent HPC performance, and netcdf output.</div><div dir="auto"><br></div><div dir="auto">CONs:</div><div dir="auto">* slightly different API from netcdf, so code is not-quite compatible with standard netcdf code.</div><div dir="auto">* classic formats only (including new CDF5 format, which allows very large dimensions), but no netcdf/HDF5 formats.</div><div dir="auto"><br></div><div dir="auto">Netcdf/HDF5</div><div dir="auto">**************</div><div dir="auto"><br></div><div dir="auto">The standard netcdf library, built on a parallel system (with mpicc) (C/Fortran/C++):</div><div dir="auto"><br></div><div dir="auto">PROs:</div><div dir="auto"><br></div><div dir="auto">* standard API, code compatible with all standard netcdf code.</div><div dir="auto"><br></div><div dir="auto">CONs:</div><div dir="auto"><br></div><div dir="auto">* does not provide pnetcdf-style extra buffering.</div><div dir="auto">* only netcdf/HDF5 output format supports parallel IO, unless built with --enable-pnetcdf.</div><div dir="auto"><br></div><div dir="auto">NCAR PIO library</div><div dir="auto">******************</div><div dir="auto"><br></div><div dir="auto">A C/Fortran library which uses the netcdf library and (optionally) pnetcdf, to provide additional HPC features :</div><div dir="auto"><br></div><div dir="auto">PROs:</div><div dir="auto"><br></div><div dir="auto">* supports pnetcdf performance.</div><div dir="auto">* allows a subset or a disjoint set of processors to be used for IO.</div><div dir="auto">* supports classic and netcdf/HDF5 formats.</div><div dir="auto">* supports distributed arrays.</div><div dir="auto"><br></div><div dir="auto">CONs:</div><div dir="auto"><br></div><div dir="auto">* slightly different API from netcdf standard.</div><div dir="auto">* extra set-up for distributed arrays.</div><div dir="auto"><br></div><div dir="auto">Keep on NetCDFing!</div><div dir="auto"><br></div><div dir="auto">Ed Hartnett</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Jun 7, 2017 1:42 AM, "Wei-keng Liao" <<a href="mailto:wkliao@eecs.northwestern.edu">wkliao@eecs.northwestern.edu</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, Louis<br>
<br>
You can use either NetCDF or PnetCDF library to write/read files in parallel.<br>
Please note the APIs are different between the two libraries.<br>
<br>
If the NetCDF library is built with PnetCDF support, then you can write a<br>
program using NetCDF APIs to perform parallel I/O. In this case, the parallel<br>
I/O is carried out by PnetCDF library underneath.<br>
<br>
Similarly, the NetCDF library can be built with HDF5 support and the parallel<br>
I/O is carried out by HDF5 library underneath.<br>
<br>
The software release of NetCDF libraries do not include PnetCDF source codes<br>
nor HDF5 source codes. You must obtain and build them separately.<br>
<br>
There are two kinds of file formats supported by NetCDF library, the netCDF<br>
classical file format and HDF5 format. When using PnetCDF underneath, the<br>
file format will be classical and using HDF5 underneath, the HDF5 format.<br>
<br>
There are some parallel I/O features in PnetCDF that have not appeared in<br>
NetCDF yet, such as request aggregation through nonblocking APIs. The<br>
aggregation feature often result in a good I/O performance.<br>
<br>
Let me know if you have further questions.<br>
<br>
Wei-keng<br>
<br>
On Jun 6, 2017, at 1:49 PM, Monier, Louis wrote:<br>
<br>
> Dear Parallel-NetCDF users,<br>
><br>
> I’m Louis Monier, a young undergraduate from France who joined Zhiming Kuang’s research group in Harvard university for 4 months (internship). I’m working on the optimization of a code (related to atmospheric modelling) with the use of parallel NetCDF to speed up the output process.<br>
><br>
> I’m a beginner in parallel computing. I would have a important question for you. I can’t find a clear answer on the internet:<br>
><br>
> I’ve seen on the Parallel-NetCDF web site (<a href="http://trac.mcs.anl.gov/projects/parallel-netcdf" rel="noreferrer" target="_blank">http://trac.mcs.anl.gov/<wbr>projects/parallel-netcdf</a>) that starting from version 4.4.0, the NetCDF library includes both sequential and parallel access. So here is my question:<br>
> If I want to speed up my output process using a NetCDF file with a parallel write process, should I use the PNETCDF library or NETCDF library (starting from version 4.4.0) ?<br>
> In other words, is PNETCDF library included in NETCDF library from version 4.4.0 ?<br>
><br>
> Indeed, it’s possible to find some parallel-NetCDF examples. Some are using NETCDF library, other are using PNETCDF library. I don’t which one is best to use.<br>
><br>
> Thank you to inform me on this subject.<br>
><br>
> Best,<br>
><br>
> Louis Monier<br>
<br>
</blockquote></div></div>