Course Code: CS528
Course Name: High Performance Computing
Prerequisites: CS 222 Computer Organization and Architecture or equivalent
Syllabus: Parallel Processing Concepts; Levels and model of parallelism: instruction, transaction, task, thread, memory, function, data flow models, demand-driven computation; Parallel architectures: superscalar architectures, multi-core, multi-threaded, server and cloud; Fundamental design issues in HPC: Load balancing, scheduling, synchronization and resource management; Operating systems for scalable HPC; Parallel languages and programming environments; OpenMP, Pthread, MPI, java, Cilk; Performance analysis of parallel algorithms; Fundamental limitations in HPC: bandwidth, latency and latency hiding techniques; Benchmarking HPC: scientific, engineering, commercial applications and workloads; Scalable storage systems: RAID, SSD cache, SAS, SAN; HPC based on cluster, cloud, and grid computing: economic model, infrastructure, platform, computation as service; Accelerated HPC: architecture, programming and typical accelerated system with GPU, FPGA, Xeon Phi, Cell BE; Power-aware HPC Design: computing and communication, processing, memory design, interconnect design, power management; Advanced topics: peta scale computing; big data processing, optics in HPC, quantum computers.

HPC programming assignments: Hands on experiment and programming on parallel machine and HPC cluster using Pthread, OpenMP, MPI, Nvidia Cuda and Cilk. Also there will be some hands on experiments on standard multiprocessor simulator or cloud simulator.
Texts: 1. Georg Hager and Gerhard Wellein. Introduction to High Performance Computing for Scientists and Engineers (1st ed.). CRC Press, Chapman & Hall/CRC Computational Science, India, 2010.
2. Vipin Kumar , Ananth Grama , Anshul Gupta , George Karypis. Introduction to Parallel Computing (2nd ed.). Pearson India . 2003.
3. John L. Hennessy and David A. Patterson. Computer Architecture: A Quantitative Approach (5th ed.). Elsevier India Pvt. Ltd. 2011.
4. David B. Kirk and Wen-mei W. Hwu. Programming Massively Parallel Processors: A Hands-On Approach (1st ed.). Elsevier India Pvt. Ltd. 2010.
5. Michael T. Heath. Scientific Computing: An Introductory Survey (2nd ed.). McGraw Hill Education (India) Private Limited, 2011