Skip to main content

Sublimation: Expanding Data Structures to Enable Data Instance Specific Optimizations

  • Conference paper

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

Abstract

Knowledge of specific properties of input data should influence the compilation process, as different characteristics of input data might have different optimal solutions. However, in many applications, it is far from obvious how this can be achieved, as irregularity in program code prevents many optimizations from being applied. Therefore, we propose a two-phase compilation system, which in the first phase analyzes the code and transforms it into a regular intermediate code using a technique we call sublimation. Sublimation is a process in which different access functions in code are remapped using a common, injective access function. The resulting, regular intermediate code is compiled in a second phase, when the actual data input set is known. This allows for optimizations that compile the regular intermediate into a new code that uses data structures especially tailored to the input data provided. We evaluate this compilation chain using three sparse matrix kernels and show that our data instance specific optimization can provide considerable speedups.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Basumallik, A., Eigenmann, R.: Optimizing irregular shared-memory applications for distributed-memory systems. In: PPoPP 2006: Proceedings of the Eleventh ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pp. 119–128. ACM, New York (2006)

    Google Scholar 

  2. Bik, A.J.C., Wijshoff, H.A.G.: Automatic data structure selection and transformation for sparse matrix computations. IEEE Trans. Parallel Distrib. Syst. 7(2), 109–126 (1996)

    Article  Google Scholar 

  3. Curial, S., Zhao, P., Amaral, J.N., Gao, Y., Cui, S., Silvera, R., Archambault, R.: MPADS: memory-pooling-assisted data splitting. In: ISMM 2008: Proceedings of the 7th International Symposium on Memory Management, pp. 101–110 (2008)

    Google Scholar 

  4. Davis, T.A.: The University of Florida sparse matrix collection. submitted to ACM Trans. on Mathematical Software, http://www.cise.ufl.edu/research/sparse/matrices

  5. Kodukula, I., Pingali, K.: Data-centric transformations for locality enhancement. Int. J. Parallel Program. 29(3), 319–364 (2001)

    Article  MATH  Google Scholar 

  6. Lattner, C., Adve, V.: Automatic pool allocation: Improving performance by controlling data structure layout in the heap. In: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2005) (June 2005)

    Google Scholar 

  7. Mateev, N., Pingali, K., Stodghill, P., Kotlyar, V.: Next-generation generic programming and its application to sparse matrix computations. In: ICS 2000: Proc of the 14th Int. Conference on Supercomputing, pp. 88–99. ACM, New York (2000)

    Google Scholar 

  8. Pugh, B., Shpeisman, T.: SIPR: A new framework for generating efficient code for sparse matrix computations. In: Carter, L., Ferrante, J., Sehr, D., Chatterjee, S., Prins, J.F., Li, Z., Yew, P.-C. (eds.) LCPC 1998. LNCS, vol. 1656, pp. 213–229. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  9. Rus, S., Rauchwerger, L., Hoeflinger, J.: Hybrid analysis: static & dynamic memory reference analysis. Int. J. Parallel Program. 31(4), 251–283 (2003)

    Article  MATH  Google Scholar 

  10. Saltz, J.H., Mirchandaney, R., Crowley, K.: Run-time parallelization and scheduling of loops. IEEE Trans. Comput. 40(5), 603–612 (1991)

    Article  Google Scholar 

  11. van der Spek, H.L.A., Bakker, E.M., Wijshoff, H.A.G.: A compile/run-time environment for the automatic transformation of linked list data structures. International Journal of Parallel Programming 36(6), 592–623 (2008)

    Article  MATH  Google Scholar 

  12. van der Spek, H.L.A., Bakker, E.M., Wijshoff, H.A.G.: Characterizing the performance penalties induced by irregular code using pointer structures and indirection arrays on the Intel Core 2 architecture. In: CF 2009: Proceedings of the 6th ACM Conference on Computing Frontiers, pp. 221–224. ACM, New York (2009)

    Google Scholar 

  13. van der Spek, H.L.A., Holm, C.W.M., Wijshoff, H.A.G.: Automatic restructuring of linked data structures. In: Gao, G.R., Pollock, L.L., Cavazos, J., Li, X. (eds.) LCPC 2009. LNCS, vol. 5898, pp. 263–277. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  14. van der Spek, H.L.A., Holm, C.W.M., Wijshoff, H.A.G.: How to unleash array optimizations on code using recursive data structures. In: ICS 2010: Proc. of the 24th ACM Int. Conf on Supercomputing, pp. 275–284. ACM, New York (2010)

    Google Scholar 

  15. Zhao, L., Wijshoff, H.A.G.: A case study in automatic data structure selection for optimizing sparse matrix computations. In: Proceedings of the IEEE International Workshop on Advanced Compiler Technology for High Performance and Embedded Systems (IWACT), pp. 22–55 (July 2001)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

van der Spek, H.L.A., Wijshoff, H.A.G. (2011). Sublimation: Expanding Data Structures to Enable Data Instance Specific Optimizations. In: Cooper, K., Mellor-Crummey, J., Sarkar, V. (eds) Languages and Compilers for Parallel Computing. LCPC 2010. Lecture Notes in Computer Science, vol 6548. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-19595-2_8

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-19595-2_8

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-19594-5

  • Online ISBN: 978-3-642-19595-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics