$ Revised: Tue Nov 24 2015 by prins@cs.unc.edu

UNC logo
COMP 633
Parallel Computing


Fall 2015 (Aug 18 - Dec 1)
TTh 12:30 - 1:45 PM FB 009

Instructor: Jan Prins, FB 334, Tel: 919-590-6213, prins@cs.unc.edu
Office hours: Mon 3-4pm and by appt.
(email me with questions anytime)

[2D torus]


This is an introductory graduate course covering several aspects of parallel and high-performance computing. Upon completion, you should

Additional information including the course syllabus can be found in the course overview.

All parallel programming models discussed in this class are supported on BASS or phaedra which are available for use in this class.

@ Announcements

@ On-line Handouts

(some material local-access only)

@ Reading Assignments

@ Written and Programming Assignments

@ Software

We will be using the Bass system for programming assignments. The Bass system supports all the programming models studied in this class except those used with Intel Xeon Phi accelerators and Cilk -- a separate compute server phaedra provides access to these capabilities.

The general instructions for getting started on bass are supplemented below with specific instructions for each programming model. When you login to bass.cs.unc.edu you are connected to a specific node on bass dedicated to interactive program development. You can compile programs on this node. Shared-memory programs run within an individual node on bass. Distributed-memory programs run across multiple nodes in Bass. The login node should not be used to run your programs, although a short debug test for a few seconds and no more than 4 cores should be OK. In general programs that need multiple nodes or dedicated nodes or GPUs should be submitted to queues that are managed by the Grid Engine job scheduler.





Phaedra is a 20-core Xeon E5-2650 server with eight attached Intel Xeon Phi 5110P accelerators. The server hosts Intel compilers and performance analysis tools to access the accelerators as well as shared memory parallel programming models for the server cores. If you wish to use this machine, you need to contact me first so access can be set up.

@ Bibliography

This list will evolve throughout the semester. Specific reading assignments are listed above.
  1. PRAM Algorithms, S. Chatterjee, J. Prins, COMP 633 course notes, 2013.
  2. Memory Hierarchy in Cache-Based Systems, R. v.d. Pas, Sun Microsystems, 2003.
  3. OpenMP tutorial, Blaise Barney, LLNL, 2013.
  4. The Implementation of the Cilk-5 Multithreaded Language, M. Frigo, C. Leiserson, K. Randall, in Proceedings of ACM Conf. on Programming Language Design and Implementation, 1998.
  5. Shared Memory Consistency Models: A Tutorial, S. V. Adve, K. Gharachorloo, DEC Western Research Labs Report 95/7, 1995.
  6. Computer Architecture: A Quantitative Approach 2nd ed, D. Patterson, J. Hennessy, Morgan-Kaufmann 1996.
  7. Fast N-Body Simulation with CUDA, L. Nyland, M. Harris, J. Prins, GPUGems 3, 2008.
  8. An Overview of Programming for Intel Xeon processors an Intel Xeon Phi coprocessors, James Reinders, Intel Corp, 2012.
  9. "Questions and Answers about BSP", D. Skillicorn, J. Hill, and W. McColl, Scientific Programming 6, 1997.
  10. Message Passing Interface, Blaise Barney, LLNL 2015
  11. Introduction to Parallel Computing: Design and Analysis of Algorithms, V. Kumar, A. Grama, A. Gupta, G. Karypis, Benjamin-Cummings, 1994.

This page is maintained by prins@cs.unc.edu. Send mail if you find problems.