Abstract
Generating code to enumerate the integer points of a polyhedron is a key problem of the parallelizing compiler technology. For efficiency reasons we want to obtain loop bounds of the generated code that are as simple as possible and we would like to avoid executing iterations of outer loops for which no iterations of inner loops are executed. This paper describes a simple algorithm to build an adequate representation of the domain to enumerate, the Hierarchical Domain Descriptor (HDD). Starting from the HDD, generating such efficient loop structures is straightforward. In some particular but frequently occurring cases the HDD may also be used to count in a symbolic way the number of integer points contained in the domain.
Similar content being viewed by others
References
C. Ancourt and F. Irigoin, Scanning polyhedra with DO loops. In ACM, editor, PPPP 91, ACM SIGPLAN, pp. 39–50 (June 1991).
M. Barnett and C. Lengauer, Loop Parallelization and Unimodularity, Chapter 25, Masson (1992).
M. Barnett and C. Lengauer, Unimodularity considered non-essential. In L. Bouge, M. Cosnard, Y. Robert, and D. Trystram, (eds.), CONPAR 92-VAPP V, LNCS 634. Springer-Verlag, pp. 659–664 (1992).
Z. Chamski, Environnement logiciel de programmation d’un accélérateur de calcul parallèle. Ph.D. thesis, Université Rennes I, Rennes, France, (1993).
Z. Chamski, Fast and efficient generation of loop bounds. ParCo93, pp. 265–272 (September 1993).
Z. Chamski, Nested loop sequences: Towards efficient loop structures in automatic parallelization. 27th Hawaii Int’l. Conf. on System Sciences, Vol. II: Software Technology, pp. 14–22. IEEE, (January 1994). Also available as Technical Report IRISA PI-772.
J.-F. Collard and P. Feautrier, Automatic generation of data parallel code. In H.J. Sips (ed.), Proc. of the Fourth Int’l. Workshop on Compilers for Parallel Computers, Delft, The Netherlands, pp. 321–332 (1993).
J. F. Collard, Code generation in automatic parallelizers. Technical Report 93-21, LIP-CNRS-ENS LYON, (July 1993).
J. F. Collard, P. Feautrier, and T. Risset, Construction of DO loops from systems of affine constraints. Technical Report 93-15, LIP-CNRS-ENS LYON, (May 1993). (To appear in Parallel Processing Letters.)
W. Kelly, W. Pugh, and E. Rosser, Code generation for multiple mappings. Technical Report CS-TR-3317, Department Computer Science, University of Maryland (July 1994).
W. Li and K. Pingali, A singular loop transformation framework based on non-singular matrices. Fifth Ann. Workshop on Programming Languages and Compilers for Parallel Computing, pp. 249–260 (August 1992).
N. Tawbi, Estimation des durées d’exécution et allocation statique de processeurs. Ph.D. thesis, Université Paris VI, Paris, France (1991).
N. Tawbi, Estimation of nested loop execution time by integer arithmetics in convex polyhedra, Proc. of the 1994 Int’l. Parallel Processing Symp. (April 1994).
W. Pugh, Counting solutions to presburger formulas: How and why. Department of Computer Science. Technical Report CS-TR-3234, University of Maryland, March 1994. This paper will appear in the Proc. of the 1994 ACM SIGPLAN Conf. on Programming Language Design and Implementation.
M. R. Haghighat and C. D. Polychronopoulos, Symbolic analysis: A basis for parallelization, optimization, and scheduling of programs. Proc. of the 6th Workshop on Languages and Compilers for Parallel Computing (August 1993).
N. Tawbi and P. Feautrier, Processor allocation and loop scheduling on multiprocessor computers. Proc. of the 1992 Int’l. Conf. on Supercomputing, pp. 63–71 (July 1992).
J. Ferrante, V. Sarkar, and W. Trash, On Estimating and Enhancing Cache Effectiveness, The MIT Press, (1991).
M. Cosnard and M. Loi, Automatic task graph generation techniques. In H. El-Rewini and B. D. Shriver, (eds.), 28th Hawaii Int’l. Conf. on System Sciences, Vol. II: Software Technology, pp. 113–122. IEEE Computer Society Press, (January 1995). (To appear in Parallel Processing Letters.)
W. Pugh, The Omega test: a fast and practical integer programming algorithm for dependence analysis. Comm. ACM 8:102–114 (August 1992).
G. L. Nemhauser and L. A. Wolsey, Integer and Combinatorial Optimization. John Wiley and Sons (1988).
P. Feautrier, Parametric integer programming. RAIRO Recherche Opérationelle, 22:243–268 (September 1988).
A. Schrijver, Theory of Linear and Integer Programming. John Wiley and Sons (1986).
W. Kelly, V. Maslov, W. Pugh, E. Rosser, T. Shpeisman, and D. Wonnacott, The omega calculator and library, version 0.9. Technical Report, Department of Computer Science, University of Maryland (November 1994).
Author information
Authors and Affiliations
Additional information
This work was supported in part by the Eureka Eurotops project and the EEC Human Capital Mobility MAP project.
This work was supported in part by the Région Rhône-Alpes.
Rights and permissions
About this article
Cite this article
Cosnard, M., Loi, M. A Simple Algorithm for the Generation of Efficient Loop Structures. Int J Parallel Prog 24, 265–289 (1996). https://doi.org/10.1007/BF03356751
Published:
Issue Date:
DOI: https://doi.org/10.1007/BF03356751