Abstract
We describe ROSE, a C++ infrastructure for source-to-source translation, that provides an interface for programmers to easily write their own translators for optimizing the use of high-level abstractions. Utilizing the semantics of these high-level abstractions, we demonstrate the automatic parallelization of loops that iterate over user-defined containers that have interfaces similar to the lists, vectors and sets in the Standard Template Library (STL). The parallelization is realized in two phases. First, we insert OpenMP directives into a serial program, driven by the recognition of the high-level abstractions, containers, that are thread-safe. Then, we translate the OpenMP directives into library routines that explicitly create and manage parallelism. By providing an interface for the programmer to classify the semantics of their abstractions, we are able to automatically parallelize operations on containers, such as linked-lists, without resorting to complex loop dependence analysis techniques. Our approach is consistent with general goals within telescoping languages.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Adve, V., Jin, G., Mellor-Crummey, J., Yi, Q.: High performance fortran compilation techniques for parallelizing scientific codes. In: Proceedings of SC 1998: High Performance Computing and Networking (November 1998)
Allen, R., Kennedy, K.: Optimizing Compilers for Modern Architectures, October 2001. Morgan Kaufmann, San Francisco (2001)
Ayguade, E., Gonzalez, M., Labarta, J.: Nanoscompiler: A research platform for openMP extensions. In: European Workshop on OpenMP (September 1999)
Banerjee, P., Chandy, J.A., Gupta, M., Holm, J.G., Lain, A., Palermo, D.J., Ramaswamy, S., Su, E.: The paradigm compiler for distributed-memory message passing multicomputers. In: Proceedings of the First International Workshop on Parallel Processing, Bangalore, India (December 1994)
Benkner, S.: Vfc: The vienna fortran compiler. Scientific Programming 7(1), 67–81 (1999)
Blelloch, G.E.: NESL: A nested data-parallel language. Technical Report CMUCS- 93-129, Carnegie Mellon University (April 1993)
Bodin, F., Beckman, P., Gannon, D., Gotwals, J., Narayana, S., Srinivas, S., Winnicka, B.: Sage++: An object-oriented toolkit and class library for building fortran and C++ restructuring tools. In: Proceedings OONSKI 1994, Oregon (1994)
Brunschen, C., Brorsson, M.: OdinMP/CCp - a portable implementation of openMP for c. In: European Workshop on OpenMP (September 1999)
Culler, D.E., Dusseau, A., Goldstein, S.C., Krishnamurthy, A., Lumetta, S., von Eiken, T., Yelick, K.: Parallel programming in split-C. In: International Conference on Supercomputing (November 1993)
Frigo, M., Leiserson, C.E., Randall, K.H.: The implementation of the Cilk-5 multithreaded language. In: Proceedings of the ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, pp. 212–223 (1998)
Edison Design Group, http://www.edg.com
Guyer, S.Z., Lin, C.: An annotation language for optimizing software libraries. ACM SIGPLAN Notices 35(1), 39–52 (2000)
Johnson, E., Gannon, D., Beckman, P.: HPC++: Experiments with the parallel standard template library. In: Proceedings of the 11th International Conference on Supercomputing (ICS 1997), New York, July 7–11, pp. 124–131. ACM Press, New York (1997)
Kennedy, K., Broom, B., Cooper, K., Dongarra, J., Fowler, R., Gannon, D., Johnsson, L., Mellor-Crummey, J., Torczon, L.: Telescoping languages: A strategy for automatic generation of scientific problem-solving systems from annotated libraries. Journal of Parallel and Distributed Computing 61(12), 1803–1826 (2001)
JaiMin, S., Kim, S., Voss, M., Lee, S.I., Eighmann, R.: Portable compilers for openMP. In: Eigenmann, R., Voss, M.J. (eds.) WOMPAT 2001. LNCS, vol. 2104, p. 11. Springer, Heidelberg (2001)
Moessenboeck, H.: Coco/R - A generator for fast compiler front-ends. techreport, ETH Zurich (February 1990)
Padua, D., Eigenmann, R., Hoeflinger, J., Petersen, P., Tu, P., Weatherford, S., Faigin, K.: Polaris: A new-generation parallelizing compiler for mpp’s. Technical Report 1306, Univ. of Illinois at Urbana-Champaign, Center for Supercomputing Res. and Dev. (June 1993)
Quinlan, D., Miller, B., Philip, B., Schordan, M.: Treating a user-defined parallel library as a domain-specific language. In: 16th International Parallel and Distributed Processing Symposium (IPDPS, IPPS, SPDP), April 2002, pp. 105–114. IEEE, Los Alamitos (2002)
Quinlan, D., Schordan, M., Miller, B., Kowarschik, M.: Parallel object-oriented framework optimization. Concurrency and Computation: Practice and Experience (2003) (to appear)
Rauchwerger, L., Arzu, F., Ouchi, K.: Standard templates adaptive parallel library (STAPL). In: O’Hallaron, D.R. (ed.) LCR 1998. LNCS, vol. 1511, pp. 402–412. Springer, Heidelberg (1998)
Lam, M.S., Amarasinghe, S.P., Anderson, J.M., Tseng, C.W.: The suif compiler for scalable parallel machines. In: Proceedings of the Seventh SIAM Conference on Parallel Processing for Scientific Computing (February 1995)
Sato, M., Satoh, S., Kusano, K., Tanaka, Y.: Design of openMP compiler for an SMP cluster. In: European Workshop on OpenMP (September 1999)
Stroustrup, B.: The Design and Evolution of C++. Addison-Wesley, Reading (1994)
Subhlok, J., Stichnoth, J., O’Hallaron, D., Gross, T.: Exploiting task and data parallelism on a multicomputer. In: Proc. of the Sixth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), San Diego (May 1993)
Wu, P., Padua, D.: Containers on the parallelization of general-purpose java programs. In: Proceedings of International Conference on Parallel Architectures and Compilation Techniques (October 1999)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Quinlan, D., Schordan, M., Yi, Q., de Supinski, B.R. (2004). Semantic-Driven Parallelization of Loops Operating on User-Defined Containers. In: Rauchwerger, L. (eds) Languages and Compilers for Parallel Computing. LCPC 2003. Lecture Notes in Computer Science, vol 2958. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24644-2_34
Download citation
DOI: https://doi.org/10.1007/978-3-540-24644-2_34
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-21199-0
Online ISBN: 978-3-540-24644-2
eBook Packages: Springer Book Archive