In Chapter 2 we discuss in detail the compilation of data parallel programs for distributed memory machines, and present the adaptive synchronization method for runtime dependent communication patterns. In Chapter 3, we describe the design and implementation of the data parallel program simulator, DPSIM. In Chapter 4, we describe and compare some well known conservative simulation protocols for parallel program simulation, and lay the foundation for describing the design of MPISIM, contained in Chapter 5. Chapter 6 summarizes our contributions and points out the directions in which this work can be extended.