| Producing efficient parallel programs for distributed memory multiprocessors is a difficult task. Hand-coding efficient parallel programs for these systems can be extremely difficult, time consuming and error-prone, compilers to ease the task. The two main approaches to this are using compilers that generate message passing code, or generate code for a distributed shared memory software layer. Neither has been completely successful for all types of programs.; In this thesis, we discuss the use of a combination of these mechanisms to produce programming paradigm that can be successful for many user programs. In our programming model, user data is divided according its usage pattern and handled by the proper communication mechanism for this pattern. The programming paradigm can be served as the target model for both compiler and manually generated codes for distributed architectures.; The compiler framework for targeting the hybrid programming model is presented in the thesis. A compiler adopts this framework is implemented. The experimental results indicate that our new paradigm is useful to support both regular and irregular codes.; We also discuss a preliminary extension of OpenMP for distributed architecture. The compiler directives to describe the data distribution and communication are being designed. The extended OpenMP provides the hybrid programming model a standard interface to improve the flexibility and portability of the code. |