Class time: Tuesday, Thursday 3:30pm-4:50pm.
Class
location: Room 020, McGlothlin-Street Hall.
Instructor: Xipeng
Shen (
)
Office hours: Monday 4:00pm-6:00pm, Friday 10:00am-noon @ McGlothlin-Street Hall 117;
walk-ins without appointment are welcome.
Overview:
Parallel processors are becoming ubiquitous in modern computing
systems: Chip multiprocessors are entering PCs, game consoles, embedded
devices, servers, and supercomputers. Future processors will be
massively parallel, reflected by the undergoing evolvement from
single-core to multi-core to many-core. The exiting advancement in
hardware however poses an important challenge to software development
and runtime systems: How to effectively exploit the concurrent
processors to achieve the goal of efficiency and performance.
This course is to expose the knowledge and explore the challenges in
developing and optimizing and executing software on parallel
processors. It contains the topics related to parallel programming
principles, compiler optimizations and operating systems. The goal is
to provide students with the knowledge and insights on various aspects
of software development for current and future parallel processors.
Through the course, students will discuss some recent research papers,
as well as achieve some hands-on experience through lightweight
experiments of general computing on NVIDIA Graphic Processing Units
(GPU), a 128-core massively parallel processor.
Topics covered:
This course is laid out into two sections: the hardware and software sections. In the first section, we will have an
overview of the different types of multicore architecture, including
general-purpose processors, such as Intel Core 2, and more special ones, such as GPU, CELL, and
Tilera. The second section covers the software techniques for
taking the full advantage of multicore processors. This section
includes three major topics: the programming models for
developing parallel programs, the optimization techniques for accelerating parallel
executions, and the OS support for maximizing whole-system computing
efficiency.
Learning Objectives:
The objectives include three folds. First, students will learn about the
architecture of modern multicore computing systems, getting prepared for
the future of computing. Second, students will understand the challenges
and the state-of-the-art solutions to maximizing the use of multicore
computers. They will gain a holistic view of software support that cuts
across multi-layers of
program executions, including language design, compilers, and operating
systems. Finally, this class aims to enhance students' research
capability (such as
critical thinking, problem-solving, and presentation skills) by letting
them read, present, and criticize some recent research papers on multicore
computing.
Textbooks Required: None.
Assignments and grading:
There will be one project and
two class presentations for each student. The grading will be based on the
student's performance on presentations, class discussions, and the course
project. Grading policy:
15% - Class discussions.
25% - Presentations.
60% - Course project.
There will be 10% penalty for every 12 hours after the submission deadline except for medication reasons with doctor's proof.