CSU Web: ECC-Linux Class Content
Email: sbsiewert@csuchico.edu
Student Help: Office Hours & My Schedule
CSCI 551 Numerical Methods and Parallel Programming 4 Units
Prerequisite: CSCI 440 with a grade of C or higher, MATH 109 or MATH 120; or Classified Computer Science Graduate Standing.
Typically Offered: Fall and spring
Surveys numerical methods and parallel programming. Parallel architectures and algorithms for scientific programming applications, solution of simultaneous linear and non-linear equations, iterative techniques, matrix methods, and error analysis. Development of parallel algorithms, with a focus on efficient implementation and performance. 2 hours activity, 3 hours discussion. (002332)
Grade Basis: Graded
Repeatability: You may take this course for a maximum of 4 units
Course Attributes: Upper Division
Course Description: This course focuses on numerical methods used in computer science including vectors, matrices, data transformation, methods of integration, difference equations, linear systems, non-linear, error analysis and root solving. Methods to speed up algorithms used for numerical and data analysis will be studied in 4 main categories: 1) OpenMP shared memory, 2) POSIX threads shared memory, 3) Message Passing Interface (MPI) for distributed memory clusters, and 4) CUDA GP-GPU co-processing, along with use of libraries and compilers for parallelization. Use of NVIDIA CUDA-Q or IBM Qiskit for quantum computing, a fifth category of co-processor parallelism, will be introduced as an optional method to complete a final parallel program with potential quantum advantage and speed-up.
Goals: The purpose of this course is to introduce students to specific techniques which are widely used numerical methods and associated algorithms as well as methods to speed up execution with concurrency, using both distributed processing and parallel tasking. Coverage includes both high performance and high throughput computing.
Lab Resources: NUC Cluster (62 Intel NUC nodes, 2 cores each, 124 total), cscigpu A100, DGX-1 Cluster (4 V100 Infiniband nodes), Jetson Cluster (20 Nano 4g nodes, 4 cores each, 128 co-procs each, 80 cores, 10,240 co-procs), Raspberry Pi Cluster (30 R-Pi 4 nodes, 120 total).
Updated Textbook: Pacheco, Peter S., and Malensek, Matthew. An introduction to parallel programming, 2nd Edition. Morgan Kaufmann, 2021. Amazon, Pacheco’s Page, Publisher, New Book Website.
Reference (On the Web): Autar, Kaw, E. Kalu Egwu, and Nguyen Duc. "Numerical methods with applications: Abridged.", 2nd Edition, Lulu, (2011). Author website, web-log, Amazon, (Numerical Methods Book Online, By Chapter)
Reference (On the Web):The OpenMP Common Core, by Mattson, He, and Koniges; Designing and Building Parallel Programs, by Ian Foster - referenced by Pacheco & Malensek.
Starter Code: Code Archive, GitHub Starter Code
Code Development Tools: VS-code, vi cheat sheet, GDB cheat sheet, MobaXterm, Cyberduck (Mac), Linux how-to's, Coding Top-Errors, GNU binutils, tmux, & Copilot.
Intel PS XE: XE Web Pages, MPI Dev Guide, Advisor User Guide, oneAPI Advisor
MPI debug help: Fogal MPI Debugging
Jupyter: JupyterLab; NVIDIA Samples: GitHub
Programming Language Rankings: TIOBE, RedMonk, Rust by Example
Hex Editors: Hexed.it
GNU: GSL Scientific Lib & GMP
VPN: Linux Wiki
CSU Clusters: NUC Cluster README
CSCI Clusters: Jetson & R-Pi Cluster Info
Home Lab: MATLAB & R-Pi, Cluster@Home, Student Jetson Orin Nano program
Tools: GNU binutils, Slurm, OpenMPI install
Intel DevCloud for oneAPI: Getting Started
Cluster Competition: ISC Student Competition
Quantum: Qiskit Github, NVIDIA Quantum - https://nvidia.github.io/cuda-quantum
Parallel Programming Help:
HPC Organizations:
HPC Career Resources & Tutorials:
HPC News: HPC Wire
HCP Systems: top500.org
Prime MPI, MPI C++, Problem Based Benchmarks, and N-body Code
LLNL - RAJA
Parallel Programming Contests: PPoPP Fastcode Challenge, SC Student Cluster Competition