Sun Rock Processor

CS529 provides to early-stage and advanced graduate students a comprehensive coverage of patterns, models, and languages for programming chip multiprocessors. The course explores high-productivity programming models that help make parallel programming a ubiquitous programming methodology for computing devices and one that can assist the development of applications of significant market value or societal interest. Parallel computing, once an exotic concept of limited commercial value, is now an essential component of information technology, while parallel programming lies on the critical path of any attempt to sustain advances in computing and make computing devices faster, more resilient, and more energy-efficient. As such, CS529 puts parallel programming in a new context compared to traditional parallel computing courses emphasizing high-performance computing systems, and attempts to answer questions such as:
  • What methodologies and tools do programmers have to program processors with a handful, tens, hundreds, or thousands of cores packaged on a single chip?
  • How does parallel programming address the diversity in single-chip parallel computing devices and what are the challenges?
  • How do we port applications written with time-tested sequential programming practices to parallel hardware and how can applications used by billions of users leverage new parallel hardware?
  • How can we program handheld and embedded computing devices in parallel? How do we perform large-scale data processing and data mining in parallel? What are the challenges and opportunities for parallelism in the world of mobile computing, sensors-actuators and datacenters? How can parallel programming help improve the energy-efficiency of IT?
The course features lectures, reading and discussion of technical papers, two take-home exams, and three significant programming projects of increasing difficulty. The research project is carried in teams of three and its purpose is to port non-trivial parallel algorithms using three programming models (this year these will be OpenMP, Cilk and SMPSs) on real multi-core hardware. Evaluation is based on take-home exams, programming assignments, paper presentations and class discussions, where participation through meaningful questions and remarks is essential. A tentative distribution of the class grade is 60% for programming projects 10% for class participation and 30% for the take-home exams.
  • Parallel computing in the era of multicore processors
    • Technologies and application domains for parallel computing
    • Performance models of parallel programs and architectures
  • Multicore programming models, patterns, and languages
    • Single address space programming models
      • Threads (POSIX, Java)
      • Cilk
      • OpenMP
      • SMPSs
      • Thread Building Blocks
      • Transactions
    • Mulitple address space programming models
      • Cell programming models (Sequoia, TPC)
      • CUDA
      • OpenCL
      • MapReduce
Students should subscribe as soon as possible to the course mailing list (hy529-list) and visit this website regularly for updates. Students should form groups in the first or second week of classes. The first project will be assigned in the second week of classes.


© copyright Dimitrios S. Nikolopoulos. Last modification: , by dsn.