Data flow graph optimization in ifi
Proc. of a conference on Functional programming languages and computer architecture
Copy elimination in single assignment languages
Copy elimination in single assignment languages
Retire Fortran?: a debate rekindled
Communications of the ACM
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
The aggregate update problem in functional programming systems
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A semantic model of reference counting and its abstraction (detailed summary)
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Uniting Functional and Object-Oriented Programming
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
Towards a Computational Model for UFO
PACT '94 Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques
Graph transformation algorithms for array memory optimization in applicative languages
Graph transformation algorithms for array memory optimization in applicative languages
Compilation techniques for high-performance applicative computation
Compilation techniques for high-performance applicative computation
Scheduling Tasks to Maximize Usage of Aggregate Variables in Place
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Hi-index | 0.00 |
We discuss the problem of efficiently implementing functional aggregates in the new language United Functions and Objects(UFO)[9]. Our method is applicable to any high-order call-by-value functional language with nested aggregates. The novelty and originality in our work are as follows. (1) We introduce the concepts of group and degree. Through partitioning operations into groups and evaluating their degrees, the algorithm can schedule the most likely operation to be done in place. (2) Through introducing a new method of sharing counting, we can achieve storage reuse for nested aggregates. (3) Our pre-allocation strategy puts both incremental construction and incremental modification of aggregates into a unified framework, and so more global optimizations can be achieved. The time complexity of the algorithm is polynomial, and in common cases, it is linear to program size.