CS240A Resource Page

Machine documentation

MPI language resources

MPI is the lowest common denominator of parallel programming, a standard implementation of the message-passing programming model (which dates back to the first commercial parallel machines in the 1980s) that has been augmented with some newer constructs like collectives (such as broadcast and global sum) and one-sided communication. The great advantages of MPI are that it runs on practically any parallel machine you can name, and it gives you very detailed control over all the communication that happens in your program.

UPC language resources

UPC (universal parallel C) is a language that combines much of the ease of use of the shared-memory programming model with the ability to control data locality for performance on a distributed-memory machine. You can download and install a UPC compiler on pretty much any parallel machine; it will also be available on some of the SDSC machines.

Cilk++ language resources

Cilk++ is a version of C and C++ that has been extended for shared-memory parallel programming, targeted especially at multicore and manycore chips. You can download the academic version of Cilk for any multicore (or even single-core) Windows or Linux machine, including your laptop or lab workstation. It will also be available at SDSC on the Triton machine and in the Computer Science Graduate Student Lab.

Books on parallel computing

General programming and data structures resources

Numerical algorithms resources

Interesting links

Similar courses elsewhere and elsewhen