TY - GEN
T1 - Combining I/O operations for multiple array variables in parallel netCDF
AU - Gao, Kui
AU - Liao, Wei Keng
AU - Choudhary, Alok
AU - Ross, Robert
AU - Latham, Robert
PY - 2009
Y1 - 2009
N2 - Parallel netCDF (PnetCDF) is a popular library used in many scientific applications to store scientific datasets. It provides high-performance parallel I/O while maintaining file-format compatibility with Unidata's netCDF. Array variables comprise the bulk of the data in a netCDF dataset, and for accesses to large regions of single array variables, PnetCDF attains very high performance. However, the current PnetCDF interface only allows access to one array variable per call. If an application instead accesses a large number of small-sized array variables, this interface limitation can cause significant performance degradation, because high end network and storage systems deliver much higher performance with larger request sizes. Moreover, the record variables data is stored interleaved by record, and the contiguity information is lost, so the existing MPI-IO collective I/O optimization can not help. This paper presents a new mechanism for PnetCDF to combine multiple I/O operations for better I/O performance. This mechanism can be used in a new function that takes arguments for reading/writing multiple array variables, allowing application programmers to explicitly access multiple array variables in a single call. It can also be used in the implementation of asynchronous I/O functions, so that the combination is carried out implicitly, without changes to the application. Our performance results demonstrate significant improvement using well-known application benchmarks.
AB - Parallel netCDF (PnetCDF) is a popular library used in many scientific applications to store scientific datasets. It provides high-performance parallel I/O while maintaining file-format compatibility with Unidata's netCDF. Array variables comprise the bulk of the data in a netCDF dataset, and for accesses to large regions of single array variables, PnetCDF attains very high performance. However, the current PnetCDF interface only allows access to one array variable per call. If an application instead accesses a large number of small-sized array variables, this interface limitation can cause significant performance degradation, because high end network and storage systems deliver much higher performance with larger request sizes. Moreover, the record variables data is stored interleaved by record, and the contiguity information is lost, so the existing MPI-IO collective I/O optimization can not help. This paper presents a new mechanism for PnetCDF to combine multiple I/O operations for better I/O performance. This mechanism can be used in a new function that takes arguments for reading/writing multiple array variables, allowing application programmers to explicitly access multiple array variables in a single call. It can also be used in the implementation of asynchronous I/O functions, so that the combination is carried out implicitly, without changes to the application. Our performance results demonstrate significant improvement using well-known application benchmarks.
KW - MPI-IO
KW - Parallel netCDF
KW - Parallel-IO
UR - http://www.scopus.com/inward/record.url?scp=72049125851&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=72049125851&partnerID=8YFLogxK
U2 - 10.1109/CLUSTR.2009.5289153
DO - 10.1109/CLUSTR.2009.5289153
M3 - Conference contribution
AN - SCOPUS:72049125851
SN - 9781424450121
T3 - Proceedings - IEEE International Conference on Cluster Computing, ICCC
BT - 2009 IEEE International Conference on Cluster Computing and Workshops, CLUSTER '09
T2 - 2009 IEEE International Conference on Cluster Computing and Workshops, CLUSTER '09
Y2 - 31 August 2009 through 4 September 2009
ER -