CS 4/59995 St:Multicore Computing

Spring 2008

Course: 4/59995-001 Spring 2008
Call Number: 12433/12434 
Time: 5:30-6:45pm Tu Th Location: 115 MSB
Paul A. Farrell Office : 258
Phone : 672-9060 Mail address : farrell@cs.kent.edu
Office Hours : TBA and by appointment  
Grader: TBA Mail address: TBA
Office : Office Hours :

Description: Instead of driving clock speeds and straight-line instruction throughput ever higher, the major processor manufacturers and architectures, from Intel and AMD to Sparc and PowerPC, have turned to multicore architectures. In desktop and laptop computers dual-core processors are now the norm, in servers multi-socket and up to quad-core processors are appearing, and future processors are likely to involve many more cores. In order to realize the potential of these architecture, as well as emerging paradigms represented by heterogeneous multi-core systems such as graphics processors and the IBM Cell processor contained in the Sony PS3 and the latest supercomputers being deployed by DOE laboratories. These new processors necessitate a new approch to programming using multiple threads on homogeneous and heterogeneous processors.

Prerequisites:

CS 33211 Operating Systems, and, CS 33001 Computer Science II

Recommended Text:

Multi-Core Programming - increasing performance through software multi-threading by Shameem Akhter and Jason Roberts, ISBN 0-9764832-4-6, Intel Press

Optional Texts:

  • Pthreads Programming: A POSIX Standard for Better Multiprocessing by Radford Nichols, Dick Buttlar, Jacqueline Proulx Farrell and Jackie Farrell(1996)
  • Parallel Programming in OpenMP by Rohit Chandra, et al. (2000)
  • Multithreaded Programming with pThreads by Bil Lewis and Daniel J. Berg (1997)
  • Programming with POSIX(R) Threads by David R. Butenhof (1997)
  • Using OpenMP: Portable Shared Memory Parallel Programming by Barbara Chapman, Gabriele Jost, Ruud van der Pas (2007)
  • Linux Threads Programming: Linux Concurrency And Performance by Ulrich Drepper
  • Selected papers and online documents

Course Outline:

Topics to be covered include:

  • Introduction to Multi-Core Architecture
  • System Overview of Threading
  • Fundamental Concepts of Parallel and Thread Programming
  • Threading and Parallel Programming Constructs
  • Threading APIs, WIndows APIs, POSIX Threads
  • Designing Threaded Programs
  • Synchronizing and Managing Pthreads
  • OpenMP: A Portable Solution for Threading
  • Solutions to Common Parallel Programming Problems - Locks, Non-Blocking, Thread-Safeness, Cache related issues
  • Multi-threaded Debugging Techniques
  • Multicore Architectures - Intel, AMD
  • New Languages
  • Heterogeneous Options: - CPU/GPU programming. GPGPU programming, Cell Processors SDK
Notes:
  • Assignments will be a mix of programming, performance evaluation, written questions, and a project.
  • Some of the assigments will consist in programming in C or C++ and specialized libraries or languages
  • There will be a penalty for late assignments which may amount to up to 10% per day.
  • Assignments are to be completed by the student without assistance from or collaboration with other persons, unless otherwise specifiied.
  • The final examination is nominally scheduled for 5:45 - 8:00 p.m. on Tuesday May 6
Additional Requirements:
Students with Disabilities:

In accordance with University policy, if you have a documented disability and require accommondations to obtain equal access in this course, please contact the instructor at the beginning of the semester or when given an assignment for which an accommodation is required. Students with disabilities must verify their eligibility through the Office of Student Disabilty Services (SDS) in the Michael Schwartz Student Services Center.