Compiling High-Level Languages for Vector Architectures
In this paper, we investigate the issues of compiling high-level languages for vector architectures. Vector architectures have regained popularity in recent years, from simple desktop computers with small vector units motivated by multimedia applications to large-scale vector multiprocessing machines motivated by ever-growing computational demands. We show that generating code for various types of vector architectures can be done using several idioms, and that the best idiom is not what a programmer would normally do. Using a set of benchmark programs, we also show that the benefits of vectorization can be significant and must not be ignored. Our results show that high-level languages are an attractive means of programming vector architectures since their compilers can generate code using the specific idioms that are most effective for the low-level vectorizing compiler. This leads to source code that is clearer and more maintainable, has excellent performance across the full spectrum of vector architectures, and therefore improves programmer productivity.
KeywordsLoop Nest Dimensional Array Vectorized Loop Multidimensional Array Array Access
Unable to display preview. Download preview PDF.
- 1.Intel Corporation: Using Streaming SIMD Extensions 3 in Algorithms with Complex Arithmetic (2004)Google Scholar
- 2.Carlson, W.W., Draper, J.M., Culler, D.E., Yelick, K., Brooks, E., Warren, K.: Introduction to UPC and language specification. Technical Report CCS-TR-99-157, Center for Computing Sciences, Bowie, MD (1999)Google Scholar
- 3.Numrich, R.W., Reid, J.K.: Co-Array Fortran for parallel programming. Technical Report RAL-TR-1998-060, Rutherford Appleton Laboratory, Oxon, UK (1998)Google Scholar
- 4.Snyder, L.: Programming Guide to ZPL. MIT Press, Cambridge (1999)Google Scholar
- 5.Chamberlain, B.L.: The Design and Implementation of a Region-Based Parallel Language. PhD thesis, University of Washington (2001)Google Scholar
- 6.Yelick, K., Semenzato, L., Pike, G., Miyamoto, C., Liblit, B., Krishnamurthy, A., Hilfinger, P., Graham, S., Gay, D., Colella, P., Aiken, A.: Titanium: A high-performance Java dialect. In: ACM 1998 Workshop on Java for High-Performance Network Computing (1998)Google Scholar
- 7.Callahan, D., Chamberlain, B.L., Zima, H.P.: The Cascade High Productivity Language. In: Workshop on High-Level Parallel Programming Models and Supportive E nvironments, HIPS 2004 (2004)Google Scholar
- 10.Eigenmann, R., Hoeflinger, J.: Parallelizing and vectorizing compilers. Technical Report ECE-HPCLab-99201, Purdue University School of ECE, High-Performance Computing Lab (2000)Google Scholar