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.
[1]
Peter H. Golde,et al.
C# Language Specification
,
2003
.
[2]
Allen,et al.
Optimizing Compilers for Modern Architectures
,
2004
.
[3]
D. B. Davis,et al.
Intel Corp.
,
1993
.
[4]
Ken Kennedy,et al.
Optimizing Compilers for Modern Architectures: A Dependence-based Approach
,
2001
.
[5]
Matteo Frigo,et al.
Portable high-performance programs
,
1999
.
[6]
Guy L. Steele,et al.
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
,
2005
.
[7]
Vivek Sarkar,et al.
X10: an object-oriented approach to non-uniform cluster computing
,
2005,
OOPSLA '05.
[8]
Bjarne Stroustrup,et al.
C++ Programming Language
,
1986,
IEEE Softw..
[9]
Bjarne Stroustrup,et al.
The C++ programming language (2nd ed.)
,
1991
.