Exploiting Loop-Level Parallelism for SIMD Arrays Using OpenMP
Abstract
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 OpenMP provides an approach to parallel programming that supports incremental improvements to applications that places restrictions in the context of preserving semantics of a parallelized section. OpenMP is 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 (OpenMP SIMD), allowing us to model naturally the programming of arbitrary sized SIMD arrays while retaining the semantic completeness of both OpenMP and the parent languages.
Using the CSX architecture we show how OpenMP SIMD can be implemented and discuss future extensions to both the language and SIMD architectures to better support explicit parallel programming.
Keywords
Poly Execution Parallel Programming Parallel Construct Master Thread European Option PricePreview
Unable to display preview. Download preview PDF.
References
- 1.ClearSpeed Technology Plc: White paper: CSX Processor Architecture (2004)Google Scholar
- 2.Buck, I.: Brook: A Streaming Programming Language. Stanford University (2001)Google Scholar
- 3.Frigo, M.: Portable High-Performance Programs. PhD thesis, MIT Department of Electrical Engineering and Computer Science (1999)Google Scholar
- 4.Gaster, B.R., Hickey, N., Stuttard, D.: The Cn Language Specification. ClearSpeed Technology Plc. (2006)Google Scholar
- 5.OpenMP Architecture Review Board: OpenMP Application Program Interface (2005)Google Scholar
- 6.Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: an object-oriented approach to non-uniform cluster computing. In: OOPSLA 2005. Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pp. 519–538. ACM Press, New York (2005)CrossRefGoogle Scholar
- 7.International Standards Organization: ISO/IEC 98899 - Programming Language C. (1999)Google Scholar
- 8.Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Specification, 3rd edn. Addison-Wesley, Reading (2005)Google Scholar
- 9.Ramanathan, R.: Intel white paper: Extending the world’s most popular processor architecture. Intel Corp. (2006)Google Scholar
- 10.Allen, R., Kennedy, K.: Optimizing Compilers for Modern Architectures. Morgan Kaufmann, San Francisco (2002)Google Scholar
- 11.Stroustrup, B.: The C++ Programming Language, 2nd edn. Addison-Wesley, Reading (2000)Google Scholar
- 12.Wilmott, P.: Quantitative Finance, 2nd edn. John Wiley & Sons Ltd., Chichester (2000)Google Scholar
- 13.Rose, J., Steele, G.: C*: An extended C language for data parallel programming. In: Internationl Conference on Supercomputing, vol. 2, pp. 72–76 (1987)Google Scholar