CSci6702 Parallel Computing Andrew Rau-Chaplin
Course Objectives Understand Parallel Architectures Systems Algorithms Learn how to Design efficient parallel algorithms, and Implement them on parallel machines
Topics Introduction to Parallelism Parallel Programming Parallel Architectures Parallel Algorithms Parallel Applications Other Parallel Architectures & Algorithms
Official Outline This course explores various aspects of parallel computing including parallel architectures, algorithms, systems, programming languages and implementation issues. The focus is on solving real problems on existing parallel machines. Student will be expected to complete significant parallel implementation projects.
Resources Course web page: All notes, readings, assignments Parallel Machines ACEnet
Prerequisites Knowledge of C CSci Analysis of Algorithms
Course Evaluation Assignments40% Seminar20% Project30% Participation10% See course web page for assignment copies and due dates
Assignments Assignment 1: Intro to Parallel Architectures and Algorithms Assignment 2: Shared memory programming (Multicore + OpenMP) and Distributed memory programming (Clusters + MPI)
Seminar Prepare and deliver a hands-on tutorial on an HPC topic. Possible topics: GPU programming in CUDA, Web-scale applications on AWS, Vectorization using Vtune, Parallel programming in Java, Multicore programming in CILK, MapReduce and Hadoop. In groups of 2-3 Deliverables: Tutorial materials organized on a web page, plus in class seminar
Research Project Select your own topic Algorithms, Systems, or Application topics Components: Literature review, some research or programming work, final paper, presentation Main Deliverable: Conference style paper plus short in-class talk See project description page