Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Unified Parallel C
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Extension of the C programming language}} {{Multiple issues| {{No footnotes|date=April 2023}} {{primary sources|date=December 2011}} }} {{Infobox programming language | name =Unified Parallel C (UPC) | logo = | paradigm = [[parallel programming|parallel]], [[message passing]], [[imperative programming|imperative]] ([[Procedural programming|procedural]]), [[structured programming|structured]] | year = | designer = UPC Consortium | developer = | latest_release_version = 2022.10.0/{{release date|2022|10|28}} | typing = [[static typing|static]], [[weak typing|weak]], [[manifest typing|manifest]] | implementations =[https://clangupc.github.io/ Clang UPC], [https://gcc.gnu.org/projects/gupc.html GNU UPC], [http://www.alphaworks.ibm.com/tech/upccompiler IBM XL UPC Compilers], [https://archive.today/20121208172611/http://www.hp.com/go/upc HP UPC], [http://upc.lbl.gov/ Berkeley UPC], [https://web.archive.org/web/20080618192748/http://www.upc.mtu.edu/ Michigan Tech MuPC], Cray UPC | dialects = | influenced_by =[[C (programming language)|C]], AC, [[Split-C]], Parallel C Preprocessor | influenced = | operating_system = [[Cross-platform]] | website = {{URL|upc-lang.org}} | file_ext = }} '''Unified Parallel C''' ('''UPC''') is an extension of the [[C (programming language)|C programming language]] designed for [[high-performance computing]] on large-scale [[parallel machine]]s, including those with a common global [[address space]] ([[Symmetric multiprocessing|SMP]] and [[Non-Uniform Memory Access|NUMA]]) and those with [[distributed memory]] (e. g. [[Computer cluster|clusters]]). The [[programmer]] is presented with a single [[partitioned global address space]]; where shared variables may be directly read and written by any [[central processing unit|processor]], but each variable is physically associated with a single processor. UPC uses a ''single program, multiple data'' ([[SPMD]]) model of computation in which the amount of parallelism is fixed at program startup time, typically with a single [[thread (computer science)|thread]] of execution per processor. In order to express parallelism, UPC extends [[C (programming language)#C99|ISO C 99]] with the following constructs: * An explicitly parallel execution model * A shared address space ({{code|shared}} storage qualifier) with thread-local parts (normal variables) * Synchronization primitives and a memory consistency model * Explicit communication primitives, e. g. upc_memput * [[Memory management]] primitives The UPC language evolved from experiences with three other earlier languages that proposed parallel extensions to ISO C 99: AC, [[Split-C]], and Parallel C preprocessor (PCP). UPC is not a [[superset]] of these three languages, but rather an attempt to distill the best characteristics of each. UPC combines the programmability advantages of the shared memory programming paradigm and the control over data layout and performance of the [[message passing]] [[programming paradigm]].
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)