[cfe-dev] Announcement: Clang UPC: A UPC compiler based on Clang/LLVM

Hal Finkel hfinkel at anl.gov
Thu Nov 29 10:23:52 PST 2012


First, I think this is spectacular! Thanks you.

Second, as you did not mention this in the e-mail, I'd like to point out that as part of this release, Intrepid's UPC runtime library has been released under a BSD-style license.

Third, regarding merging with trunk:
 - The LLVM change seems small, and can probably be proposed as-is
 - Regarding the Clang additions, it looks like you need to rebase them (maybe I'm reading the github page wrong, but it looks like this has not been done for a few months)

Can you comment on whether it would be possible to extend Clang's plugin interface to implement UPC as a plugin (maybe a static plugin if we're worried about exporting too many symbols)? When Intel proposed implementing Cilk++ in Clang, this approach was suggested. It seemed difficult to evaluate, however, because there is no implementation via which to truly gauge the requirements of the necessary interfaces. Given that we now have a public UPC implementation based on Clang, I think that we could use this to gauge the necessary requirements for language-extension plugins.

I'll also point out that UPC is a standardized C99 extension with implementations by IBM, HP, Cray, etc. in addition to several available open-source implementations.


----- Original Message -----
> From: "Gary Funck" <gary at intrepid.com>
> To: "Clang Developers" <cfe-dev at cs.uiuc.edu>
> Sent: Thursday, November 29, 2012 9:58:43 AM
> Subject: [cfe-dev] Announcement: Clang UPC: A UPC compiler based on	Clang/LLVM
> Clang UPC: A UPC Compiler based upon Clang/LLVM
> -----------------------------------------------
> Date: November, 29, 2012
> An initial implementation of Clang UPC is available for download
> (in source form) from:
>   https://github.com/Intrepid/clang-upc
> Clang UPC requires this version of LLVM, which currently has
> only minor (but necessary) changes to the base line LLVM:
>   https://github.com/Intrepid/llvm-upc
> For details on how to build, install, and use Clang UPC,
> consult the wiki at:
>   https://github.com/Intrepid/clang-upc/wiki.
> Unified Parallel C (UPC)
> ------------------------
> Unified Parallel C (UPC) is an extension of the C programming
> language designed
> for high-performance computing on large-scale parallel machines,
> including
> those with a common global address space (SMP and NUMA) and those
> with
> distributed memory (e.g. clusters). The programmer is presented with
> a single
> shared, partitioned address space, where variables may be directly
> read and
> written by any 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 of execution per processor.
> In order to express parallelism, UPC extends ISO C 99 with the
> following
> constructs:
>     An explicitly parallel execution model
>     A shared address space
>     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.
> [source:
> http://en.wikipedia.org/w/index.php?title=Unified_Parallel_C]
> For additional information and resources, consult:
>   http://upc-lang.org
> Contact
> -------
> If you have an interest in extending Clang UPC, or have any questions
> not covered in this announcement, please ask them either on the
> Clang Developer's email list:
>  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> or send an email to:
>  Gary Funck <gary at intrepid.com>
> Future Projects
> ---------------
> The following projects are provided for discussion purposes.
> - Merge Clang UPC into the main Clang/LLVM source code trunk.
> - Develop a UPC-to-C translator based upon Clang/UPC.
> - Extend the LLVM intermediate form to describe accesses
> to distributed shared memory and synchronization constructs
> typical of UPC and other distributed parallel programming
> languages.  Implement optimizations and analysis tools
> that take advantage of the additional information that
> is present in this extended LLVM intermediate form.
> Acknowledgements
> ----------------
> Intrepid Technology (http://www.intrepid.com) and Boostpro
> (http://www.boostpro.com) teamed to develop Clang UPC.
> Intrepid drew upon its experience with implementing a UPC
> compiler based upon GCC (http://www.gccupc.com) and Boostpro
> provided Clang/LLVM expertise.  Steven Watanabe of Boostpro
> is the key developer of the Clang UPC front-end.
>                           -- end --
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory

More information about the cfe-dev mailing list