TALC: A Simple C Language Extension For Improved Performance and Code Maintainability

In this paper, we present TALC -a small language extension for C and C++ suitable for applications that traverse common data structures such as large meshes or cubes. We make three contributions in this paper. First, we motivate the need for a new C/C++ extension focused on addressing emerging problem areas in performance and code maintainability. Second, we define the language extension and illustrate how it is employed in C. Third, we show the utility of such an extension by providing comparison code snippets that demonstrate advantages in both software maintainability and performance. Performance benefits of the extension are provided for several experiments resulting in up to 200% speedups over more conventional methods to achieve the same algorithm.

[1]  Samuel Williams,et al.  The Landscape of Parallel Computing Research: A View from Berkeley , 2006 .

[2]  Steve Karmesin,et al.  Array Design and Expression Evaluation in POOMA II , 1998, ISCOPE.

[3]  Dennis Gannon,et al.  Sage++: An Object-Oriented Toolkit and Class Library for Building Fortran and C++ Restructuring Tool , 1994 .

[4]  Ian Joyner,et al.  C++?? A Critique of C , 1992 .

[5]  Ronald H. Perrott,et al.  A Language for Array and Vector Processors , 1979, TOPL.

[6]  D. Quinlan,et al.  ROSE: Compiler Support for Object-Oriented Frameworks , 1999, Parallel Process. Lett..

[7]  R. Dolbeau,et al.  HMPP TM : A Hybrid Multi-core Parallel Programming Environment , 2022 .

[8]  Kei Davis,et al.  Optimizing Transformations of Stencil Operations for Parallel Object-Oriented Scientific Frameworks on Cache-Based Architectures , 1998, ISCOPE.

[9]  Kei Davis,et al.  A Comparison of Performance-Enhancing Strategies for Parallel Numerical Object-Oriented Frameworks , 1997, ISCOPE.

[10]  Daniel J. Quinlan ROSE: Compiler Support for Object-Oriented Frameworks , 2000, Parallel Process. Lett..

[11]  Marc Snir,et al.  GETTING UP TO SPEED THE FUTURE OF SUPERCOMPUTING , 2004 .

[12]  Aleksandar Milenkovic,et al.  Execution characteristics of SPEC CPU2000 benchmarks: Intel C++ vs. Microsoft VC++ , 2004, ACM-SE 42.

[13]  Mitsuhisa Sato,et al.  Janus: A C++ Template Library for Parallel Dynamic Mesh Applications , 1998, ISCOPE.

[14]  Sally A. McKee,et al.  Hitting the memory wall: implications of the obvious , 1995, CARN.

[15]  Michael D. McCool,et al.  Programming using RapidMind on the Cell BE , 2006, SC.

[16]  Lawrence Snyder,et al.  The design and development of ZPL , 2007, HOPL.