Chapel (programming language): Difference between revisions

Content deleted Content added
m We know this is a year (via WP:JWB)
 
(29 intermediate revisions by 19 users not shown)
Line 2:
{{Infobox programming language
| name = Chapel
| logo = [[File:Cray Chapel Logo (2020-present).png]]svg
| logo size = 180px
| screenshot =
| screenshot caption =
Line 8 ⟶ 9:
| 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 = 12.253.10
| latest release date = {{startStart date and age|20212024|12|0912}}
| latest preview version =
| latest preview date = <!-- {{start date and age|2013|10|17}} -->
Line 18 ⟶ 19:
| 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.cray.comorg/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.cray.comorg/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 iswas 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 [[Openopen-source software|open source]] project, under version 2 of the [[Apache license]].<ref>{{cite web |title=Chapel license information |url=http://chapel-lang.cray.comorg/license.html |work=Chapelchapel-lang.Cray.comorg |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>
 
==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 high-performance computing|HPC]] (HPC) programming practitioners, who they describe as Fortran, C or C++ users writing [[procedural code]] using technologies like [[OpenMP]] and [[Messagemessage 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 supports a [[Multithreadingmultithreading (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 45 ⟶ 48:
| pages = 285–292
| publisher = Springer-Verlag
| ISBNisbn = 978-3-642-22332-7
| date = June 28–30, 2011
| ___location = Loutraki, Greece
Line 54 ⟶ 57:
While Chapel borrows concepts from many preceding languages, its parallel concepts are most closely based on ideas from [[High Performance Fortran]] (HPF), [[ZPL (programming language)|ZPL]], and the [[Cray MTA-2|Cray MTA]]'s extensions to [[Fortran]] and [[C (programming language)|C]].
 
== See also ==
{{Portal|Free and open-source software}}
* [[Coarray Fortran]]
Line 70 ⟶ 73:
==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 journalbook |last1=Dun |first1=Nan |last2=Taura |first2=K. |title=An2012 EmpiricalIEEE Performance26th Study of ChapelInternational Programming Language |journal=Parallel and Distributed Processing Symposium Workshops & PHDPhD Forum (IPDPSW),|chapter=An 2012Empirical IEEEPerformance 26thStudy Internationalof 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|httphttps://chapel-lang.cray.comorg/}}
* {{GitHub|chapel-lang/chapel}}
* [http://99-bottles-of-beer.net/language-chapel-1215.html 99 bottles of beer in Chapel]
Line 91 ⟶ 94:
[[Category:2009 software]]
[[Category:Free software projects]]
[[Category:Statically typed programming languages]]