In Partial Fulfillment of the Requirements for the Degree of
Master of Science
Will defend his thesis
Parallel architectures aim to increase the overall computing power of a system by providing more nodes per system and/or increasing the number of cores in a single node. But as we succeed in increasing computing power, I/O still remains the slowest operation in a system, thus creating the need to perform I/O in parallel. Distributed memory programming technologies like MPI provide an extensive implementation for parallel I/O, but most shared memory technologies do not have the notion of parallel I/O. This thesis explores parallel I/O techniques on shared memory platforms. A library providing collective I/O interfaces for Posix threads has been developed. Various optimizations on the input data from merging of buffers to distributing I/O tasks amongst threads in an effective manner have been evaluated. Furthermore, an in-depth study of the relationship between the stripe size of a parallel file system such as PVFS2 and the size of a data block in each I/O call has been perf ormed. Results show that the library performs well when minimizing the total number of I/O requests, thereby maximizing the amount of data written in each call. Reducing the amount of data written in each I/O call degrades I/O performance. Tests were performed for 1, 2, 4 and 8 threads. Most cases show a speedup while using a larger number of threads.