The course will cover the following:
- Processor architectures with focus on memory hierarchy, instruction level parallelism and multi-core architectures
- Program analysis techniques for redundancy removal and optimization for high performance architectures
- Concurrency and operating systems issues in using these architectures
- Programming techniques for exploiting parallelism (use of message passing libraries)
- Tools for code analysis and optimization (Intel compilers, profilers and application tuning tools
What do we expect to achieve by the end of the course?
- Faculty who can teach this course and conduct research in this area
- Students who can design, develop, understand, modify/enhance, and maintain complex applications which run on high performance architectures (in addition to doing research!)
- A set of slides, notes, projects and laboratory exercises which can be used for teaching this course in future both at IITK and at other universities
