@Article{parsons:templates, author = {Ian Parsons and Ron Unrau and Jonathan Schaeffer and Duane Szafron}, title = {{PI/OT}: Parallel {I/O} Templates}, journal = {Parallel Computing}, year = {1997}, month = {June}, volume = {23}, number = {4}, pages = {543--570}, publisher = {North-Holland (Elsevier Scientific)}, keywords = {parallel programming, parallel I/O, pario-bib}, abstract = {This paper presents a novel, top-down, high-level approach to parallelizing file I/O. Each parallel file descriptor is annotated with a high-level specification, or template, of the expected parallel behaviour. The annotations are external to and independent of the source code. At run-time, all I/O using a parallel file descriptor adheres to the semantics of the selected template. By separating the parallel I/O specifications from the code, a user can quickly change the I/O behaviour without rewriting code. Templates can be composed hierarchically to construct complex access patterns. \par Two sample parallel programs using these templates are compared against versions implemented in an existing parallel I/O system (PIOUS). The sample programs show that the use of parallel I/O templates are beneficial from both the performance and software engineering points of view.}, comment = {An interesting approach in which they try to separate the description of the parallelism in a file's access from the sequential programming used to access the file. Seems like a good idea. It seems to assume that the programmer was porting an existing sequential code, or prefers to write their parallel program with a sequential frame of mind, including the existing fopen/fread/fwrite stdio interface. They retain the traditional stream-of-bytes file structure. See also parsons:complex.} }