East Carolina University
Department of Computer Science
CSCI 4110
High Performance Computing
Standard Syllabus
3 credits |
Prepared by Venkat Gudivada, May 2018 |
Catalog entry
P: CSCI 3000, CSCI 3675. Software design and development targeting
high performance computing architectures. Multi-core and many-core
systems. MPI, OpenMP, MapReduce, CUDA, and OpenCL computing models.
Course summary
We are producing data at unprecedented levels. This data is
often referred to as big data. Given the data volume and data
heterogeneity, we need high performance computing to harness this
data.
High Performance Computing (HPC) encompasses special hardware
and software, and parallel algorithms. There are three classes of
HPC computers: multicore and many core shared memory computers,
distributed memory computers -- clusters and supercomputers, and
sequential or parallel computers with deep memory hierarchies.
This course provides a balanced coverage of theory and
practice. You will learn how to solve large-scale, processing and
data-intensive problems using HPC hardware and software.
Course topics
-
XSEDE parallel computing environment
-
Multicore and many-core computer architectures
-
Multicore and many-core computer architectures
-
Design and development methods for parallel software including
batch queuing, distributed I/O, parallel file systems
-
MPI Distributed-memory programing model
-
OpenMP programming
-
MapReduce programming
-
CUDA programming
-
OpenCL heterogeneous (CPU and GPU) computing model
-
Exascale computing
-
Emerging applications of high performance computing
Student learning outcomes
-
Apply tools available in the UNIX environment to software development tasks.
-
Describe conceptual level components of high performance
computer architectures and how the architectures accomplish
extreme-scale performance.
-
Design and develop distributed-memory model parallel programs using the MPI standard.
-
Design and develop shared-memory model parallel programs using the OpenMP standard.
-
Design and develop distributed-memory parallel programs using the MapReduce model.
-
Implement parallel programming solutions using graphical processing units (GPUs) and CUDA.
-
Implement parallel programming solutions which leverage
heterogeneous computing (CPU and GPU) environments using OpenCL.
Textbook
Thomas Sterling, Matthew Anderson, and Maciej Brodowicz.
High Performance Computing: Modern Systems and Practices.
Burlington, Massachusetts: Morgan Kaufmann, 2017. ISBN: 978-0124201583
Other required material
- Duane Storti and Mete Yurtoglu. CUDA for Engineers: An
Introduction to High-Performance Parallel Computing. Reading,
Massachusetts: Addison-Wesley Professional, 2015. ISBN:
978-0134177410.
- Peter Pacheco. An Introduction to Parallel
Programming. Burlington, Massachusetts: Morgan Kaufmann,
2011. ISBN: 978-0123742605.
- Georg Hager and Gerhard Wellein. Introduction to High
Performance Computing for Scientists and Engineers. Chapman and
Hall/CRC Computational Science. Boca Raton, Florida: CRC Press,
2010. ISBN: 978-1439811924.
Grading
Course grade is based on four components:
Activity |
Weight (%) |
Assignments (paper-and-pencil) |
20 |
Assignments (programming) |
30 |
Midterm exam |
20 |
Final exam |
30 |
Grade meanings
Grade |
Meaning |
A |
Achievement substantially exceeds basic course expectations |
A− |
|
B+ |
|
B |
Achievement exceeds basic course expectations |
B− |
|
B+ |
|
C |
Achievement adequately meets basic course expectations |
C− |
|
D+ |
|
D |
Achievement falls below basic course expectations |
D− |
|
F |
Failure – achievement does not justify credit for course |