====== Language Resources ====== ~~NOTOC~~ ===== Unified Parallel C (UPC) ===== * Berkeley UPC: http://upc.lbl.gov/ * GWU UPC http://upc.gwu.edu/ * Tarek El-Ghazawi, William Carlson, Thomas Sterling, and Katherine Yelick. //UPC: Distributed Shared Memory Programming//. John Wiley & Sons, Inc. (c) 2005. * Ch. 1: [[http://samples.sainsburysebooks.co.uk/9780471478379_sample_386594.pdf|PDF]] ===== Communicating Sequential Processes (CSP) ===== * The classic CSP text: [[http://www.usingcsp.com/|Communicating Sequential Processes (Hoare)]] * The modern CSP text: The Theory and Practice of Concurrency (Roscoe) ([[http://web.comlab.ox.ac.uk/oucl/work/bill.roscoe/publications/68b.pdf|PDF]]) * occam * Professor Peter Welch's [[courses:cs377-201951:welch-lectures:top|occam tutorial slides]] and * [[http://www.cs.vassar.edu/~cs377/phw-slides/anonqa-2005/index.html|FAQs]] from his course at the University of Kent * [[http://www.occam-pi.org/|occam-pi]]: (The occam-pi programming language and [[https://www.cs.kent.ac.uk/research/groups/plas/wiki/OccamPiReference/|reference]]) * JCSP: http://www.cs.kent.ac.uk/projects/ofa/jcsp/ (CSP package for Java) * Ian East. //Parallel Processing with Communicating Process Architecture//. University College London Press, (c) 1995. (This text is out of print, but the author has provided the text in PDF chapters for use in our course.) ===== Go ===== * [[http://golang.org/|The Go Programming Language]] * [[https://tour.golang.org/concurrency/1|Concurrency]] ===== Linda ===== * Nicholas Carriero and David Gelernter. //How to Write Parallel Programs: A First Course//. MIT Press, (c) 1990. * This text is out of print, but here's the {{ :courses:cs377-201951:htwpp.pdf |PDF}} \\ (also available at http://zoo.cs.yale.edu/classes/cs424/howto.pdf) ===== Rinda ===== * Linda implementation for the [[http://www.ruby-lang.org/en/|Ruby programming language]] * About [[http://en.wikipedia.org/wiki/Rinda_(Ruby_programming_language)|Rinda]] ---- ===== CUDA ===== * Definitions: * CUDA -- Compute Unified Device Architecture * GPU -- Graphics Processing Unit * GPU cluster -- An HPC cluster equipped with multiple GPU devices (rather than CPUs) * GPGPU -- General Purpose GPU (i.e., not just for optimized graphics processing) * CUDA is * a parallel computing platform and API model created by [[https://www.nvidia.com/|Nvidia]]. --[[https://en.wikipedia.org/wiki/CUDA|Wikipedia]] * more than a library for a programming language(s) * an extension of C/C++ to allow programmers to use nVidia GPU cards for GPGPU programming * Tutorials: * https://devblogs.nvidia.com/even-easier-introduction-cuda/ ---- ===== Erlang ===== * Office website for the [[http://www.erlang.org/|Erlang]] programming language * [[http://www.erlang.org/starting.html|Tutorial guides]] * [[http://www.erlang.org/doc.html|Online documentation]] ===== Chapel ===== * [[http://chapel.cray.com/|The Chapel Parallel Programming Language]] ===== Scala ===== * [[http://www.scala-lang.org/|The Scala Programming Language]] ===== Clojure ===== * [[http://clojure.org/|The Clojure Programming Language]] ---- //Other references will be listed here as necessary.//