- Source: Chapel (programming language)
Chapel, the Cascade High Productivity Language, is a parallel programming language that was developed by Cray, and later by Hewlett Packard Enterprise which acquired Cray. It was being developed as part of the Cray Cascade project, a participant in DARPA's High Productivity Computing Systems (HPCS) program, which had the goal of increasing supercomputer productivity by 2010. It is being developed as an open source project, under version 2 of the Apache license.
The Chapel compiler is written in C and C++ (C++14). The backend (i.e. the optimizer) is LLVM, written in C++. Python 3.7 or newer is required for some optional components such Chapel’s test system and c2chapel, a tool to generate C bindings for Chapel. By default Chapel compiles to binary executables, but it can also compile to C code, and then LLVM is not used. Chapel code can be compiled to libraries to be callable from C, or Fortran or e.g. Python also supported. Chapel supports GPU programming through code generation for NVIDIA and AMD graphics processing units.
Goals
Chapel aims to improve the programmability of parallel computers in general and the Cascade system in particular, by providing a higher level of expression than current programming languages do and by improving the separation between algorithmic expression and data structure implementation details.
The language designers aspire for Chapel to bridge the gap between current high-performance computing (HPC) programming practitioners, who they describe as Fortran, C or C++ users writing procedural code using technologies like OpenMP and MPI on one side, and newly graduating computer programmers who tend to prefer Java, Python or Matlab with only some of them having experience with C++ or C. Chapel should offer the productivity advances offered by the latter suite of languages while not alienating the users of the first.
Features
Chapel supports a multithreaded parallel programming model at a high level by supporting abstractions for data parallelism, task parallelism, and nested parallelism. It enables optimizations for the locality of data and computation in the program via abstractions for data distribution and data-driven placement of subcomputations. It allows for code reuse and generality through object-oriented concepts and generic programming features. For instance, Chapel allows for the declaration of locales.
While Chapel borrows concepts from many preceding languages, its parallel concepts are most closely based on ideas from High Performance Fortran (HPF), ZPL, and the Cray MTA's extensions to Fortran and C.
See also
Coarray Fortran
Fortress
Unified Parallel C
X10
RaftLib
Notes
References
Chamberlain, Bradford L. (2011). "Chapel (Cray Inc. HPCS Language)". In Padua, David (ed.). Encyclopedia of Parallel Computing, Volume 4. Springer. ISBN 9780387097657.
Further reading
Brueckner, Rich (August 6, 2014). "Why Chapel for Parallel Programming?". InsideHPC. Retrieved 2015-03-23.
Dun, Nan; Taura, K. (2012). "An Empirical Performance Study of Chapel Programming Language". 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum. IEEE. pp. 497–506. doi:10.1109/IPDPSW.2012.64. ISBN 978-1-4673-0974-5. S2CID 5904611.
Padua, David, ed. (2011). Encyclopedia of Parallel Computing. Vol. 4. Springer Science & Business Media. pp. 249–256. ISBN 9780387097657.
Panagiotopoulou, K.; Loidl, H. W. (2016). "Transparently Resilient Task Parallelism for Chapel" Parallel and Distributed Processing Symposium Workshops (IPDPSW), 2016 IEEE International Symposium, Chicago, IL. doi:10.1109/IPDPSW.2016.102 ISBN 978-1-5090-3682-0
External links
Official website
chapel on GitHub
99 bottles of beer in Chapel
Kata Kunci Pencarian:
- Java
- C++
- Go (bahasa pemrograman)
- C Sharp (bahasa pemrograman)
- Daftar bahasa pemrograman
- Zip (ilmu komputer)
- Chapel (programming language)
- List of programming languages
- Go (programming language)
- List of programming languages by type
- Fortress (programming language)
- Java (programming language)
- Assembly language
- Timeline of programming languages
- X10 (programming language)
- Ada (programming language)