Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
Advanced compiler optimizations for supercomputers
Communications of the ACM - Special issue on parallelism
Making data structures persistent
STOC '86 Proceedings of the eighteenth annual ACM symposium on Theory of computing
Annual review of computer science vol. 1, 1986
Executing a program on the MIT tagged-token dataflow architecture
Volume II: Parallel Languages on PARLE: Parallel Architectures and Languages Europe
Proc. of a workshop on Graph reduction
Resource requirements of dataflow programs
ISCA '88 Proceedings of the 15th Annual International Symposium on Computer architecture
A fully abstract semantics for a functional language with logic variables
Proceedings of the Fourth Annual Symposium on Logic in computer science
Functional programing and the logical variable
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
Dependence graphs and compiler optimizations
POPL '81 Proceedings of the 8th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Accumulators: A New Logic Variable Abstractions for Functional Languages
Proceedings of the Eighth Conference on Foundations of Software Technology and Theoretical Computer Science
Listlessness is better than laziness: Lazy evaluation and garbage collection at compile-time
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
RESOURCE MANAGEMENT FOR THE TAGGED TOKEN DATAFLOW ARCHITECTURE
RESOURCE MANAGEMENT FOR THE TAGGED TOKEN DATAFLOW ARCHITECTURE
A STRUCTURE MEMORY FOR DATA FLOW COMPUTERS
A STRUCTURE MEMORY FOR DATA FLOW COMPUTERS
A COMPILER FOR THE MIT TAGGED-TOKEN DATAFLOW ARCHITECTURE
A COMPILER FOR THE MIT TAGGED-TOKEN DATAFLOW ARCHITECTURE
The Implementation of Functional Programming Languages (Prentice-Hall International Series in Computer Science)
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
Dependence flow graphs: an algebraic approach to program dependencies
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantic foundations of concurrent constraint programming
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Sequential description and parallel execution language DFCII dataflow supercomputers
ICS '91 Proceedings of the 5th international conference on Supercomputing
Fine-grain parallelism in the ALPS programming language
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
Partitioning declarative programs into communicating processes
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
A methodology for managing hard constraints in CLP systems
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
A fully abstract semantics for a first-order functional language with logic variables
ACM Transactions on Programming Languages and Systems (TOPLAS)
A syntactic approach to program transformations
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Structured programming with limited private types in Ada: nesting if for the soaring eagles
ACM SIGAda Ada Letters
Which model of programming for LISP: sequential, functional or mixed?
ACM SIGPLAN Notices
A quantitative analysis of locality in dataflow programs
MICRO 24 Proceedings of the 24th annual international symposium on Microarchitecture
Hamming numbers, lazy evaluation, and eager disposal
ACM SIGPLAN Notices
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
A customizable substrate for concurrent languages
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Abstract semantics for a higher-order functional language with logic variables
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A tightly-coupled processor-network interface
ASPLOS V Proceedings of the fifth international conference on Architectural support for programming languages and operating systems
Experience with fine-grain synchronization in MIMD machines for preconditioned conjugate gradient
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
A randomized implementation of multiple functional arrays
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Real-time deques, multihead Turing machines, and purely functional programming
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Data stream control optimization in dataflow architectures
ICS '93 Proceedings of the 7th international conference on Supercomputing
Higher-order distributed objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Provably efficient scheduling for languages with fine-grained parallelism
Proceedings of the seventh annual ACM symposium on Parallel algorithms and architectures
The MIT Alewife machine: architecture and performance
ISCA '95 Proceedings of the 22nd annual international symposium on Computer architecture
Semantics of barriers in a non-strict, implicitly-parallel language
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
How much non-strictness do lenient programs require?
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Effects of data bundling in non-strict data structures
PACT '95 Proceedings of the IFIP WG10.3 working conference on Parallel architectures and compilation techniques
Programming parallel algorithms
Communications of the ACM
A query language for multidimensional arrays: design, implementation, and optimization techniques
SIGMOD '96 Proceedings of the 1996 ACM SIGMOD international conference on Management of data
Functional computation as concurrent computation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Multithreading with Distributed Functional Units
IEEE Transactions on Computers
A basic architecture supporting LGDG computation
ICS '90 Proceedings of the 4th international conference on Supercomputing
Ideograph/Ideogram: framework/hardware for eager evaluation
MICRO 23 Proceedings of the 23rd annual workshop and symposium on Microprogramming and microarchitecture
Space-efficient scheduling of parallelism with synchronization variables
Proceedings of the ninth annual ACM symposium on Parallel algorithms and architectures
Space-efficient implementation of nested parallelism
PPOPP '97 Proceedings of the sixth ACM SIGPLAN symposium on Principles and practice of parallel programming
Highly efficient implementation of MPI point-to-point communication using remote memory operations
ICS '98 Proceedings of the 12th international conference on Supercomputing
The MIT Alewife machine: architecture and performance
25 years of the international symposia on Computer architecture (selected papers)
Provably efficient scheduling for languages with fine-grained parallelism
Journal of the ACM (JACM)
Space-efficient scheduling of nested parallelism
ACM Transactions on Programming Languages and Systems (TOPLAS)
Scheduling multithreaded computations by work stealing
Journal of the ACM (JACM)
Optimizing memory usage in the polyhedral model
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the thirteenth annual ACM symposium on Parallel algorithms and architectures
Scheduled Dataflow: Execution Paradigm, Architecture, and Performance Evaluation
IEEE Transactions on Computers - Special issue on the parallel architecture and compilation techniques conference
Readings in hardware/software co-design
Eager Haskell: resource-bounded execution yields efficient iteration
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Design and implementation of FMPL, a fast message-passing library for remote memory operations
Proceedings of the 2001 ACM/IEEE conference on Supercomputing
Enhancing Functional and Irregular Parallelism: Stateful Functions and their Semantics
International Journal of Parallel Programming
A History of Data-Flow Languages
IEEE Annals of the History of Computing
Quantitative Analysis on Caching Effect of I-Structure Data in Frame-Based Multithreaded Processing
ICPP '97 Proceedings of the international Conference on Parallel Processing
Stampede: A Programming System for Emerging Scalable Interactive Multimedia Applications
LCPC '98 Proceedings of the 11th International Workshop on Languages and Compilers for Parallel Computing
Functional I-structure, and M-structure Implementations of NAS Benchmark FT
PACT '94 Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques
PACT '94 Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques
Fresh Breeze: a multiprocessor chip architecture guided by modular programming principles
ACM SIGARCH Computer Architecture News
Design and performance evaluation of a multithreaded architecture
HPCA '95 Proceedings of the 1st IEEE Symposium on High-Performance Computer Architecture
Performance Impacts of Caching I-Structure Data on Frame-Based Multithreaded Processing
HPC-ASIA '97 Proceedings of the High-Performance Computing on the Information Superhighway, HPC-Asia '97
IWIA '99 Proceedings of the 1999 International Workshop on Innovative Architecture
Computer algebra handbook
Uniform confluence in concurrent computation
Journal of Functional Programming
Efficient graph algorithms using lazy monolithic arrays
Journal of Functional Programming
Algorithm + strategy = parallelism
Journal of Functional Programming
On the effectiveness of functional language features: NAS benchmark FT
Journal of Functional Programming
Advances in dataflow programming languages
ACM Computing Surveys (CSUR)
Non-strict execution in parallel and distributed computing
International Journal of Parallel Programming
Fast synchronization on shared-memory multiprocessors: An architectural approach
Journal of Parallel and Distributed Computing - Special issue: Design and performance of networks for super-, cluster-, and grid-computing: Part I
IBM Journal of Research and Development
Reducing control overhead in dataflow architectures
Proceedings of the 15th international conference on Parallel architectures and compilation techniques
Modelling deterministic concurrent I/O
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Specialization of CML message-passing primitives
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A concurrent lambda calculus with futures
Theoretical Computer Science - Applied semantics
Computer Languages, Systems and Structures
ACM Transactions on Computer Systems (TOCS)
Proceedings of the 34th annual international symposium on Computer architecture
Journal of Parallel and Distributed Computing
Inferring non-suspension conditions for logic programs with dynamic scheduling
ACM Transactions on Computational Logic (TOCL)
Implicitly-threaded parallelism in Manticore
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Space profiling for parallel functional programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A Non-blocking Multithreaded Architecture with Support for Speculative Threads
ICA3PP '08 Proceedings of the 8th international conference on Algorithms and Architectures for Parallel Processing
Beyond nested parallelism: tight bounds on work-stealing overheads for parallel futures
Proceedings of the twenty-first annual symposium on Parallelism in algorithms and architectures
CASES '10 Proceedings of the 2010 international conference on Compilers, architectures and synthesis for embedded systems
A stream-computing extension to OpenMP
Proceedings of the 6th International Conference on High Performance and Embedded Architectures and Compilers
Space profiling for parallel functional programs
Journal of Functional Programming
Proceedings of the international conference on Supercomputing
Resource-agnostic programming for many-core microgrids
Euro-Par 2010 Proceedings of the 2010 conference on Parallel processing
A monad for deterministic parallelism
Proceedings of the 4th ACM symposium on Haskell
Hardware support for multithreaded execution of loops with limited parallelism
PCI'05 Proceedings of the 10th Panhellenic conference on Advances in Informatics
A concurrent lambda calculus with futures
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
Exploiting single-assignment properties to optimize message-passing programs by code transformations
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
Consistent rollback protocols for autonomic ASSISTANT applications
Euro-Par'11 Proceedings of the 2011 international conference on Parallel Processing
Lenient evaluation is neither strict nor lazy
Computer Languages
Support for fine-grained synchronization in shared-memory multiprocessors
PaCT'07 Proceedings of the 9th international conference on Parallel Computing Technologies
Synchronization mechanisms on modern multi-core architectures
ACSAC'07 Proceedings of the 12th Asia-Pacific conference on Advances in Computer Systems Architecture
OpenStream: Expressiveness and data-flow compilation of OpenMP streaming programs
ACM Transactions on Architecture and Code Optimization (TACO) - Special Issue on High-Performance Embedded Architectures and Compilers
Folding of tagged single assignment values for memory-efficient parallelism
Euro-Par'12 Proceedings of the 18th international conference on Parallel Processing
LVars: lattice-based data structures for deterministic parallelism
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
Proceedings of the Seventh Workshop on Programming Languages and Operating Systems
Freeze after writing: quasi-deterministic parallel programming with LVars
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Well-structured futures and cache locality
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.02 |
It is difficult to achieve elegance, efficiency, and parallelism simultaneously in functional programs that manipulate large data structures. We demonstrate this through careful analysis of program examples using three common functional data-structuring approaches-lists using Cons, arrays using Update (both fine-grained operators), and arrays using make-array (a “bulk” operator). We then present I-structure as an alternative and show elegant, efficient, and parallel solutions for the program examples in Id, a language with I-structures. The parallelism in Id is made precise by means of an operational semantics for Id as a parallel reduction system. I-structures make the language nonfunctional, but do not lose determinacy. Finally, we show that even in the context of purely functional languages, I-structures are invaluable for implementing functional data abstractions.