Course Description:
For two decades, software
developers enjoyed an increase in application performance due to a doubling
of transistors in processors about every 2 years, in accordance with Moore's
Law. Much of this performance gain resulted from increasing clock speeds.
However, due to temperature concerns, this is no longer possible. The
industry now agree that the future of architecture designs lies in
multi-cores, i.e., processors with simpler cores running at lower
frequencies. As a consequence, all computer systems today, from embedded
devices to high-end servers, are being built with multi-core processors.
Thus software developers can no longer sit idly and wait for application
performance to improve. In fact, application performance is likely to
degrade given future generations of multi-cores with ever more simple
cores.
Although researchers in industry and
academia are exploring many different multi-cores hardware design choices,
most agree that software for execution on multi-core processors is the
major unsolved problem. Unlike earlier generations of hardware evolution,
this shift will have a major impact on how software is designed and
developed. Developers will have to learn how to properly design their
applications to utilize multi-cores parallelism. Opportunities to address
the problem span multiple levels of the software stack. This course will
focus on the entire spectrum of the software stack as it applies to
multi-core architectures, including libraries, tools, programming
languages, compilers, runtime systems, and operating systems.
The first part of the course will consist
of discussions about current multi-core architectures and parallel
programming models. The second part of the course will involve discussing
several research papers (chosen by students) pertaining to multi-cores.
Each student will be asked to present one or two papers to the class. The
third and last part of the course will consist of presentations by students
of programming projects. Students will have a variety of multi-core
architectures available for their class projects, including SGI Altix 4700
and Intel Quad-core systems accelerated with GPUs Tesla.
|