Skip to main content

Exploiting SIMD Parallelism with the CGiS Compiler Framework

  • Conference paper
Languages and Compilers for Parallel Computing (LCPC 2007)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 5234))

  • 433 Accesses

Abstract

Today’s desktop PCs feature a variety of parallel processing units. Developing applications that exploit this parallelism is a demanding task, and a programmer has to obtain detailed knowledge about the hardware for efficient implementation. CGiS is a data-parallel programming language providing a unified abstraction for two parallel processing units: graphics processing units (GPUs) and the vector processing units of CPUs. The CGiS compiler framework fully virtualizes the differences in capability and accessibility by mapping an abstract data-parallel programming model on those targets. The applicability of CGiS for GPUs has been shown in previous work; this work presents the extension of the framework for SIMD instruction sets of CPUs. We show how to overcome the obstacles in mapping the abstract programming model of CGiS to the SIMD hardware. Our experimental results underline the viability of this approach: Real-world applications can be implemented easily with CGiS and result in efficient code.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Allen, R., Kennedy, K.: Optimizing Compilers for Modern Architectures. Morgan Kaufmann, San Francisco (2002)

    Google Scholar 

  2. Coleman, S., McKinley, K.S.: Tile size selection using cache organization and data layout. In: Proceedings of PLDI, pp. 279–290 (1995)

    Google Scholar 

  3. Culler, D.E., Singh, J.P., Gupta, A.: Parallel Computer Architecture: A Hardware/Software Approach. Morgan Kaufmann, San Francisco (1999)

    Google Scholar 

  4. Eichenberger, A.E., O’Brien, K., O’Brien, K., Wu, P., Chen, T., Oden, P.H., Prener, D.A., Shepherd, J.C., So, B., Sura, Z., Wang, A., Zhang, T., Zhao, P., Gschwind, M.: Optimizing compiler for a cell processor. In: Proceedings of PACT (2005)

    Google Scholar 

  5. Freescale. AltiVec Technology Programming Interface Manual. ALTIVECPIM/D 06/1999 Rev. 0 (June 1999)

    Google Scholar 

  6. Freescale. AltiVec Technology Programming Environments Manual. ALTIVECPEM/D 04/2006 Rev. 3 (April 2006)

    Google Scholar 

  7. Intel. Intel 64 and IA-32 Architectures Optimization Reference Manual (May 2007)

    Google Scholar 

  8. Larsen, S., Amarasinghe, S.: Exploiting superword level parallelism with multimedia instruction sets. Technical Report LCS-TM-601, MIT Laboratory for Computer Science (November 1999)

    Google Scholar 

  9. Lucas, P., Fritz, N., Wilhelm, R.: The CGiS compiler—a tool demonstration. In: Mycroft, A., Zeller, A. (eds.) CC 2006. LNCS, vol. 3923, pp. 105–108. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  10. Lucas, P., Fritz, N., Wilhelm, R.: The development of the data-parallel GPU programming language CGiS. In: Alexandrov, V.N., van Albada, G.D., Sloot, P.M.A., Dongarra, J. (eds.) ICCS 2006. LNCS, vol. 3994, pp. 200–203. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  11. Mittal, M., Peleg, A., Weiser, U.: MMX technology architecture overview. Intel Technology Journal Q3(12) (1997)

    Google Scholar 

  12. Muchnick, S.S.: Advanced Compiler Design and Implementation. Morgan Kaufmann, San Francisco (1997)

    Google Scholar 

  13. Nuzman, D., Rosen, I., Zaks, A.: Auto-vectorization of interleaved data of simd. In: Proceedings of PLDI (2006)

    Google Scholar 

  14. NVIDIA. CUDA Programming Guide Version 0.8 (February 2007)

    Google Scholar 

  15. Owens, J.D., Luebke, D., Govindaraju, N., Harris, M., Krüger, J., Lefohn, A.E., Purcell, T.J.: A survey of general-purpose computation on graphics hardware. Computer Graphics Forum 26(1), 80–113 (2007)

    Article  Google Scholar 

  16. Pryanishnikov, I., Krall, A., Horspool, R.N.: Compiler optimizations for processors with SIMD instructions. Software—Practice & Experience 37(1), 93–113 (2007)

    Article  Google Scholar 

  17. Ren, G., Wu, P., Padua, D.: An empirical study on the vectorization of multimedia applications for multimedia extensions. In: IPDPS (2005)

    Google Scholar 

  18. Ren, G., Wu, P., Padua, D.A.: A preliminary study on the vectorization of multimedia applications for multimedia extensions. In: Rauchwerger, L. (ed.) LCPC 2003. LNCS, vol. 2958, pp. 420–435. Springer, Heidelberg (2003)

    Google Scholar 

  19. Rivest, R.L.: The RC5 encryption algorithm. In: Practical Cryptography for Data Internetworks. IEEE Computer Society Press, Los Alamitos (1996)

    Google Scholar 

  20. Shin, J., Chame, J., Hall, M.W.: Compiler-controlled caching in superword register files for multimedia extension architectures. In: Proceedings of PACT, pp. 45–55 (2002)

    Google Scholar 

  21. Tenllado, C., Piñuel, L., Prieto, M., Catthoor, F.: Pack transposition: Enhancing superword level parallelism exploitation. In: Proceedings of Parallel Computing (ParCo), pp. 573–580 (2005)

    Google Scholar 

  22. Wu, P., Eichenberer, A.E., Wang, A., Zhao, P.: An integrated simdization framework using virtual vectors. In: Proceedings of the 19th Annual International Conference on Supercomputing (ICS), pp. 169–178 (2005)

    Google Scholar 

  23. Zima, H.P., Chapman, B.: Supercompilers for Parallel and Vector Computers. ACM Press, New York (1990)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Vikram Adve María Jesús Garzarán Paul Petersen

Rights and permissions

Reprints and permissions

Copyright information

© 2008 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Fritz, N., Lucas, P., Wilhelm, R. (2008). Exploiting SIMD Parallelism with the CGiS Compiler Framework. In: Adve, V., Garzarán, M.J., Petersen, P. (eds) Languages and Compilers for Parallel Computing. LCPC 2007. Lecture Notes in Computer Science, vol 5234. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-85261-2_17

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-85261-2_17

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-85260-5

  • Online ISBN: 978-3-540-85261-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics