Chapel (programming language): Difference between revisions

Content deleted Content added
definitely notable
 
(122 intermediate revisions by 69 users not shown)
Line 1:
{{Short description|Parallel programming language}}
'''Chapel''' is parallel [[programming language]] developed by [[Cray]].<ref>''Modular programming languages: 7th Joint Modular Languages Conference'' by David E. Lightfoot 2006 ISBN 3-540-40927-0 page 20</ref> It is 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 the year 2010. 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.
{{Infobox programming language
| name = Chapel
| logo = Chapel Logo (2020-present).svg
| logo size = 180px
| screenshot =
| screenshot caption =
| file ext = .chpl
| paradigm = [[Object-oriented programming|Object-oriented]] <br/> [[Partitioned global address space]] <br/> [[Parallel programming model|Parallel programming]]
| scope =
| released = {{Start date and age|2009}}
| designer = David Callahan, Hans Zima, Brad Chamberlain, John Plevyak
| developer = [[Hewlett Packard Enterprise]] (previously [[Cray|Cray Inc.]])
| latest release version = 2.3.0
| latest release date = {{Start date and age|2024|12|12}}
| latest preview version =
| latest preview date = <!-- {{start date and age|2013|10|17}} -->
| typing = [[Type system|static]] <br/> [[Type inference|inferred]]
| implementations =
| dialects =
| influenced by = [[Ada (programming language)|Ada]], [[C Sharp (programming language)|C#]],<ref name="chplspec">{{cite web|title=Chapel spec (Acknowledgments)|url=http://chapel-lang.org/spec/spec-0.98.pdf|date=2015-10-01|access-date=2016-01-14|publisher=Cray Inc}}</ref> [[C (programming language)|C]], [[Fortran]], [[C++]], [[Java (programming language)|Java]], [[High Performance Fortran|HPF]], [[ZPL (programming language)|ZPL]], [[Cray MTA]] / [[Cray XMT|XMT]] extensions to C and Fortran.<ref name=Overview>{{cite web |url=http://chapel-lang.org/papers/BriefOverviewChapel.pdf |title=A Brief Overview of Chapel |first=Bradford L. |last=Chamberlain |publisher=Cray Inc. |access-date=22 April 2015}}</ref>
| influenced =
| programming language =
| platform = multiplatform, including [[Amazon Web Services]], [[HPE Cray EX]]
| operating system = [[Mac OS]], [[Linux]], [[POSIX]], [[Windows]] (with [[Cygwin]]), [[NetBSD]]
| license = [[Apache License 2.0]]
| website = {{URL|https://chapel-lang.org/}}
| wikibooks =
}}
'''Chapel''', the '''Cascade High Productivity Language''', is a [[parallel programming language]] that was developed by [[Cray]],<ref>{{cite book |title=Modular programming languages: 7th Joint Modular Languages Conference |url=https://archive.org/details/modularprogrammi00ligh |url-access=limited |first=David E. |last=Lightfoot |year=2006 |isbn=978-3-540-40927-4 |page=[https://archive.org/details/modularprogrammi00ligh/page/n27 20]|publisher=Springer }}</ref> 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 software|open source]] project, under version 2 of the [[Apache license]].<ref>{{cite web |title=Chapel license information |url=http://chapel-lang.org/license.html |work=chapel-lang.org |access-date=November 15, 2015}}</ref>
 
The Chapel compiler is written in [[C (programming language)|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 [[language binding|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 [[General-purpose computing on graphics processing units (software)|GPU programming]] through code generation for NVIDIA and AMD graphics processing units.<ref name="GPUProgamming">{{cite web|title=Chapel Technote: GPU Programming|url=https://chapel-lang.org/docs/technotes/gpu.html|date=2023-09-28|access-date=2023-11-03|publisher=Hewlett Packard Enterprise}}</ref>
Chapel, the '''Cascade High Productivity Language''', 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 [[Locale (computer hardware)|locales]].<ref>
 
==Goals==
Chapel aims to improve the programmability of [[parallel computer]]s 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 [[message passing interface|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.<ref name=Overview/>
 
==Features==
Chapel, the '''Cascade High Productivity Language''', supports a [[multithreading (computer architecture)|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 programming|data-driven]] placement of subcomputations. It allows for [[code reuse]] and generality through [[Object-oriented programming|object-oriented]] concepts and [[generic programming]] features. For instance, Chapel allows for the declaration of [[Locale (computer hardware)|locales]].<ref>
{{Cite conference
| author1 = Bongen Gu
Line 7 ⟶ 44:
| author3 = Yoonsik Kwak
| title = Communication and Computation Overlap through Task Synchronization in Multi-locale Chapel Environment
| booktitlebook-title = Future Information Technology, Part I: 6th International Conference
| editor = James J. Park, Laurence T. Yang and Changhoon Lee
| pages = 285-292285–292
| publisher = Springer-Verlag
| ISBNisbn = 978-3-642-22332-7
| date = June 28–30, 2011
| ___location = Loutraki, Greece
| doi = 10.1007/978-3-642-22333-4_37
| url = http://www.worldcat.org/title/future-information-technology-6th-international-conference-futuretech-2011-loutraki-greece-june-28-30-2011-proceedings-part-i/oclc/743288033?title=&detail=&page=frame&url=http%3A%2F%2Fdx.doi.org%2F10.1007%2F978-3-642-22333-4%26checksum%3D2f368965a4018fb8f195284f641951bd&linktype=digitalObject
}}
| accessdate = August 17, 2011}}
</ref>
 
While Chapel borrows concepts from many preceding languages, its parallel concepts are most closely based on ideas from High-Performance Fortran ([[High Performance Fortran|HPF]] (HPF), [[ZPL (programming language)|ZPL]], and the [[Cray MTA-2|Cray MTA]]'s extensions to [[Fortran]] and [[C (programming language)|C]].
 
== See also ==
It is being developed as an [[open source]] project, under the [[BSD license]].<ref>[http://sourceforge.net/projects/chapel/ Chapel Sourceforge project page]</ref>
{{Portal|Free and open-source software}}
 
* [[Coarray Fortran]]
== See also ==
{{Portal|Free software}}
* [[Unified Parallel C]]
* [[Fortress (programming language)|Fortress]]
* [[Co-arrayUnified FortranParallel C]]
* [[X10 (programming language)|X10]]
* [[RaftLib]]
* [[Partitioned global address space]]
 
==ReferencesNotes==
{{Reflist}}
 
==References==
*{{cite book |first=Bradford L. |last=Chamberlain |chapter=Chapel (Cray Inc. HPCS Language) |title=Encyclopedia of Parallel Computing, Volume 4 |editor=Padua, David |publisher=Springer |year=2011 |isbn=9780387097657}}
 
==Further reading==
*{{cite news |title=Why Chapel for Parallel Programming? |date=August 6, 2014 |first=Rich |last=Brueckner |work=InsideHPC |url=http://insidehpc.com/2014/08/chapel-parallel-programming/ |access-date=2015-03-23}}
*{{cite book |last1=Dun |first1=Nan |last2=Taura |first2=K. |title=2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum |chapter=An Empirical Performance Study of Chapel Programming Language |publisher=[[IEEE]] |year=2012 |isbn=978-1-4673-0974-5 |doi=10.1109/IPDPSW.2012.64 |pages=497–506 |s2cid=5904611 }}
*{{cite book |editor=Padua, David |title=Encyclopedia of Parallel Computing |volume=4 |publisher=Springer Science & Business Media |year=2011 |isbn=9780387097657 |pages=249–256}}
*Panagiotopoulou, K.; Loidl, H. W. (2016). [https://ieeexplore.ieee.org/document/7530055/ "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|https://chapel-lang.org/}}
<references />
* {{GitHub|chapel-lang/chapel}}
* [http://chapel.cray.com/ The Chapel Project]
* [http://chapel.cray.com/spec-0.785.pdf Chapel Specification (version 0.785)]
* [http://99-bottles-of-beer.net/language-chapel-1215.html 99 bottles of beer in Chapel]
 
{{Programming languages}}
{{Parallel computing}}
{{Numerical analysis software}}
 
[[Category:Cray]]
[[Category:Array programming languages]]
[[Category:C programming language family]]
[[Category:Concurrent programming languages]]
[[Category:Object-oriented programming languages]]
 
[[Category:Programming languages created in 2009]]
 
[[Category:2009 software]]
{{compu-lang-stub}}
[[Category:Free software projects]]
 
[[Category:Statically typed programming languages]]
[[ja:Chapel]]
[[ru:Chapel (язык программирования)]]