Aviral Shrivastava: Teaching


Home Publications Teaching Service Lab


ASU 101 CSE 230 CSE 310 CSE 325 CSE 420 CSE 591 PEC CSE 591 ARC Multi-core Programming

Professional Course: Multi-core Programming

Course Abstract

The emergence of multi-cores will change computing as never before. For a long time, all that application developers needed to speed up their programs was to wait for Intel to roll out the next version of the processor. This steady trend has not only come to a grinding halt, but has started to reverse with the advent of multi-core processors. The performance of a single core in a multi-core processor is decreasing. A single threaded application will only become slower with time. Parallelization is no longer an option, it has now become mandatory. Software companies have to parallelize their applications or face extinction. While last decade saw a tremendous need of software programmers, the greatest need in the coming decade will be of parallel programmers. While multi-core processors are already here, writing parallel programs that will be able to exploit multi-core processors is not a science, and need fundamental understanding of the hardware architecture, and concurrent execution.
This course will start with the emergence and inevitability of multi-core paradigm, and discuss its implications. Then we will go over fundamental concepts of concurrent programming, and give a premier of thread programming. The last session will cover some case studies on parallel programming, including stream programming, programming graphics processors, and programming the cell processor. The course will include a lab on programming on the cell processor.

Major Topics Covered in the Course and Approximate Schedule


Instructors

smile shot Dr. Aviral Shrivastava joined ASU in 2006, soon after receiving his Ph.D. from University of California, Irvine. Dr. Shrivastava is a well recognized expert in microarchitectures and compilers of embedded processors, with a focus on low-power computing. Dr. Shrivastava heads the Compiler-Microarchitecture Lab at ASU, with a mission to investigate novel compiler, microarchitectural and cooperative compiler-microarchitecture solutions to the challenges faced by embedded system designers and programmers. Dr. Shrivastava has developed several novel schemes to reduce power consumption of embedded and high performance processors at both the hardware and software levels. His current research has 3 focuses, power-efficient multi-core computing, reliable software on unreliable hardware, and investigating Coarse-grain reconfigurable architectures. His research is funded by NSF, SFAz, Intel, Microsoft Research, and Raytheon Missile Systems.
smile shot Dr. Partha Dasgupta joined ASU in 1991. Prior to ASU, he had teaching appointments with Georgia Tech and New York University. He received his Ph.D. in Computer Science from Stony Brook University. Dr. Dasgupta's core areas of expertise are in, Operating Systems, Distributed Computing and Computer Security. He has been involved with concurrent and parallel programming research and teaching for most of his career. He has significant prior research results and publications in construction of distributed operating systems, high performance systems and secure computing infrastructures. Dr. Dasgupta also has experience in industrial consulting, training course development and delivery. His research funding has primarily been from NSF and DARPA with smaller grants from Intel, Microsoft and the Consortium for Embedded Systems. He has 20 years of experience with operating systems and 8 years experience with security systems. He is an accomplished teacher and researcher of topics in computer security and distributed computing.

Intended Audience

This course will be extremely relevant to all software programmers and computer architects. This course is also intended for professionals who seek to acquire the skill-set needed for the next decade. Soon most computing systems will be multi-cores, and multi-core programming will become an irreplaceable part of application development.

This course will provide a global view of the multi-core landscape, equip the student with the fundamentals of concurrent programming, and provide an overview of the main parallel programming paradigms. This course will provide hands-on programming experience on the cell processor to solidify and situate the learning and provide immediately usable skill.

Prerequisites

Basic Background in programming, C/C++/Java

Class/Laboratory Schedule

2-full day course, 8:30 am - 4:00 pm.

Last Updated: Aviral Shrivastava, 05/2010