Exploiting Loop-Level Parallelism for SIMD Arrays Using OpenMP

Programming SIMD arrays in languages such as C or FORTRAN is difficult and although work on automatic parallelizing programs has achieved much, it is far from satisfactory. In particular, almost all `fully' automatic parallelizing compilers place fundamental restrictions on the input language. Alternatively OpenMPprovides an approach to parallel programming that supports incremental improvements to applications that places restrictions in the context of preserving semantics of a parallelized section. OpenMPis limited to a thread based model that does not define a mapping for other parallel programming models. In this paper, we describe an alternative approach to programming SIMD machines using an extended subset of OpenMP(OpenMPSIMD), allowing us to model naturally the programming of arbitrary sized SIMD arrays while retaining the semantic completeness of both OpenMPand the parent languages. Using the CSX architecture we show how OpenMPSIMD can be implemented and discuss future extensions to both the language and SIMD architectures to better support explicit parallel programming.