Overview

Algorithmic Techniques for Scalable
Many-core Computing

A Blue Waters Online Course

Class Info:

CSC 391 - Many-core Algorithms
CRN: 94236

CSC 691 - Many-core Algorithms
CRN: 94237

Meeting times/days: TR 3:30-4:45pm
Classrom: Manchester Hall 241

Course Description:

Algorithmic Techniques for Scalable Many-core Computing that will be offered as a collaborative, online course for multiple participating institutions. The goal of the course is to master commonly used algorithm techniques and computational thinking skills for scalable, many-core/many-thread programming, such as: many-core hardware limitations and constraints, desirable and undesirable computation patterns and practical algorithm techniques to convert undesirable computation patterns into desirable ones. The course includes online video lectures, quizzes, and homework assignments with access to free accounts on the Blue Waters system.

Week-by-Week Topics:

Week 1 - Introduction, Logistics, Performance of Throughput & Scalability Challenges
Week 2 - Scatter-to-Gather Transformation, Thread Coarsening & Register Tiling
Week 3 - Advanced Tiling
Week 4 - Adv. Tiling & Data Layout for DRAM Throughput
Week 5 - Data Layout for DRAM Throughput & Parallel Sparse Methods
Week 6 - Parallel Sparse Methods
Week 7 - Input Binning
Week 8 - Compact Binning & Privatization
Week 9 - Privatization
Week 10 - Final Project Kickoff & Resources
Week 11 - Adv. Topics - Numerical Stability Considerations & In-place Transposition
Week 12 - Adv. Topics - In-place Transposition & Graph Data Arrangement
Week 13 - Hardware Update & Computational Thinking
Week 14 to End of Semester - Continuation of Final Project

Click here to see the current syllabus

Prerequisites:

* Experience working in a Unix environment
* Experience developing and running scientific codes written in C or C++
* Basic knowledge of CUDA (A short online course, Introduction to CUDA, is available to registered students who need assistance in meeting this prerequisite, not a deal breaker!!)