Abstract:
Different improvements between processor and harddisk performance and the fast growing requirements of parallel simulations regarding accuracy, interactivity and visualization in past years led to an I/O-bottleneck in high performance computer systems. On system level this problem is compensated by the usage of multiple harddisks and parallel file systems. However, the application level can only profit by the aggregated bandwith, if adequate interfaces for parallel I/O are available. MPI-IO is the widely-used and accepted standard for such a message-passing based interface. However, the procedural interfaces can not fulfill the demands of object-oriented parallel applications. Moreover, extensive functionality leads to complex and unstructured applications. TPO-IO is an object-oriented, user-friendly and very efficient interface, which is set up on top of MPI-IO. It enables the user to make all kind of objects, standard datatypes and containers of the Standard Template Library (STL) persistent. The functionality and naming conventions follow as far as possible and meaningful MPI-2. Design and interface of TPO-IO ease and restructure the functionality of MPI-IO and lead to a more transparent and well structured source code. Special techniques, like definitions of different views on the data by each process, collective accesses of multiple processes on the same file and asynchronous I/O, were adapted to object-oriented concepts and partially automated within TPO-IO to increase the usability. Synthetic benchmarks show an only marginal loss in performance between TPO-IO and MPI-IO in respect to the profit of an object-oriented interface. Moreover, the interface was successfully implemented and tested in three different applications: Two particle simulations and a gene sequence analysis application.