Skip to content

Course materials for Spring 2019 semester of CSI 702

License

Notifications You must be signed in to change notification settings

mason-sp19-csi-702-003/course-materials

Repository files navigation

CSI 702 course materials

Spring 2019 semester

Syllabus

The syllabus is available as a Google Doc: https://docs.google.com/document/d/14qsCAP9Dei89EobiOC-nGDpM-ER4hlDY9fGw-Ylau3k

Schedule

Week Date Range Lecture Video Topic
1 Jan-28 – Feb-1 1 Introduction
2 Single Processor Machines
2 Feb-4 – Feb-8 3 Optimizing Matrix Multiply (cont), Introduction to Data Parallelism
4 Shared-Memory Programming
3 Feb-11 – Feb-15 5 Roofline and Performance Modeling
6 Sources of Parallelism and Locality in Simulation (Part 1)
Video 1, Video 2
4 Feb-18 – Feb-22 7 Sources of Parallelism and Locality in Simulation (Part 2)
8 An Introduction to GPGPU Programming
5 Feb-25 – Mar-1 9 Distributed Memory Machines and Programming
10 Advanced MPI and Collective Communication Algorithms
6 Mar-4 – Mar-8 11 UPC and UPC++
12 Cloud Computing and Big Data Processing
7 Mar-18 – Mar-22 13 Dense Linear Algebra (Part 1)
14 Dense Linear Algebra (Part 2)
8 Mar-25 – Mar-29 15 Graph Partitioning
16 Automatic Performance Tuning and Sparse-Matrix-Vector-Multiplication (Part 1)
9 Apr-1 – Apr-5 17 Automatic Performance Tuning and Sparse-Matrix-Vector-Multiplication (Part 2)
18 Structured Grids
10 Apr-8 – Apr-12 19 Parallel Graph Algorithms
20 Fast Fourier Transform
11 Apr-15 – Apr-19 21 Sorting and Searching
22 Dynamic Load Balancing
12 Apr-22 – Apr-26 23 Hierarchical Methods for the N-Body Problem (Part 1)
24 Hierarchical Methods for the N-Body Problem (Part 2) and Communication-Optimal Algorithms and Lower Bounds

Homeworks

# Description Due date
0 Describing a Parallel Application Feb-1 @ 11:59pm
1 Optimize Matrix Multiplication Feb-23 @ 11:59pm
2 Parallelizing a particle simulation (Part A) Mar-9 @ 11:59pm
3 Parallelizing a particle simulation (Part B) Apr-6 @ 11:59pm
4 Parallelizing a particle simulation (Part C) Apr-28 @ 11:59pm

Final project

Description Due date
Final project proposal Apr-7 @ 11:59pm
Final project report w/ code May-8 @ 11:59pm
Final project presentation May-13 @ 4:30pm

Resources and links

Links

Guides

Software

Software

OS

Description

Slack
(standalone app)
Slack

Windows
macOS
Linux
iOS
Android

Slack is the primary communication medium for the course, replacing email and serving as a general-purpose discussion board.

CLion
CLion

Windows
macOS
Linux

A cross-platform integrated development environment (IDE) designed specifically for programming in C++. Comes with many useful features enabled and also has a plugin ecosystem. There are introductory tutorial videos available. As a current student, you get a free professional license for the editor if you fill out and submit this form.

GitHub Desktop
GitHub Desktop

Windows
macOS
Linux

A graphical interface for interacting with GitHub, built by GitHub. The Linux-compatible version is available on GitHub. User documentation from GitHub is available:

Virtualbox
Virtualbox

Windows
macOS
Linux

VirtualBox is a cross-platform virtualization application that allows you to run multiple OSes, inside multiple virtual machines, at the same time.

Vagrant
Vagrant

Windows
macOS
Linux

Vagrant is a tool for building and managing virtual machine environments in a single workflow using simple configuration files. We will use it to provision Virtualbox-based virtual machines.

Intel MKL
MKL

Windows
macOS
Linux

A library that features highly optimized, threaded, and vectorized math functions that maximize performance on each processor family. It uses industry-standard C and Fortran APIs for compatibility with popular BLAS, LAPACK, and FFTW functions.

NVIDIA CUDA Toolkit
MKL

Windows
macOS
Linux

A toolkit for developing, optimizing and deploying your applications on GPU-accelerated embedded systems, desktop workstations, enterprise data centers, cloud-based platforms and HPC supercomputers. Includes GPU-accelerated libraries, debugging and optimization tools, a C/C++ compiler and a runtime library to deploy your application.

License

Creative Commons License

Unless otherwise noted, the course materials in this repository are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.