A report on the Sisal language project
Journal of Parallel and Distributed Computing - Special issue: data-flow processing
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Iteration abstraction in Sather
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
The C++ Programming Language
Python reference manual
ACM SIGPLAN Notices
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Empirical Software Engineering and Verification
Abstractions to separate concerns in semi-regular grids
Proceedings of the 27th international ACM conference on International conference on supercomputing
Hi-index | 0.00 |
A long-held tenet of software engineering is that algorithms and data structures should be specified orthogonally in order to minimize the impact that changes to one will have on the other. Unfortunately, this principle is often not well-supported in scientific and parallel codes due to the lack of abstractions for factoring iteration away from computation in traditional scientific languages. The result is a fragile situation in which complex loop nests are used to express parallelism and maximize performance, yet must be maintained individually as the algorithm and data structures evolve. In this paper, we introduce the iterator concept in the Chapel parallel programming language, designed to address this problem and provide a means for factoring iteration away from computation. The paper illustrates iterators using several examples, compares our approach with those taken in other languages, and describes our implementation in the Chapel compiler.