Parallel and Distributed Programming
Kenjiro Taura

(the page is encoded in UTF-8)

What's New (in the newest-first order)

Periodically reload this page. Newer entries come above. (Dates) in parentheses indicate when they are posted. The record of the last year is at the end of this page, FYI.

Slides

Slides will be updated during the semester
  1. Introduction
  2. OpenMP
  3. CUDA
  4. SIMD Programming
  5. How to get nearly peak FLOPS (with CPU)
  6. OpenMP for GPU
  7. What You Must Know about Memory, Caches, and Shared Memory
  8. Neural Network Basics
  9. Math notes on VGG
  10. Divide and Conquer
  11. Analyzing Data Access of Algorithms and How to Make Them Cache-Friendly
  12. Understanding Task Scheduling Algorithms

Course Objectives

The main objectives of this course are to have hands-on experiences on parallel programming and good understanding about how to solve problems in parallel and what determines performance of parallel programs.

Lecture Plan

I wish to cover the topics below, ranging from a very gentle introduction to parallel programming to performance of parallel programs to fundamental topics that may be difficult to understand for first learners (due to time constraints, it's unlikely to fully cover them all).

Languages

Programming Exercises Week(s)

How to get the credit

Here are the requirements for getting the credit.
  1. Submit programming exercise assignments
  2. Write and submit a final report (term paper).
    • abstract deadline: Jan 14th 2023 (Sat), 23:59.
    • final deadline: Feb 11th 2023 (Sat), 23:59.

    Both are to be submitted through ITC-LMS.

I do not want to receive reports from somebody who (almost) have never been engaged in this class at all, just to be sure. I believe it practically does not happen that someone who have never participated in the class finishes all the assignments and final report in the last minute, but just in case if you are reading this page for the first time in February looking for a class of which the attendance was not a part of evaluation and which allows late submissions so that you still might have a chance to get a credit, I will say this class is not for you

update: 21 Jan, 2023. I received a question about which environment you are supposed to do your work in. I've also heard from several of you who seem to be trying to do it on your laptops (some Macs and Windows). Let me explain what I expected and what the rules are.

Well, at least my initial assumption was that it goes without saying that you will be working on the server environment (taulec/tauleg000, which I collectively call taulec below) we've been using for the class. This is what I expected and anticipated to happen.

Then through exchanges with several of you, I came to realize that many of you are actually trying to do it on their personal machines (I don't actually know how many are, as those questions are basically about how to make the baseline code compile/run on their laptops, an issue that you never encounter if you are doing it in taulec.

So, let me make the rules and recommendations clear in this opportunity (sorry that I didn't make it clear earlier partly because, as I said above, I just anticipated everybody to do it on taulec).

Topics

Parallel Programming in Practice

Taxonomy of parallel machines and programming models

Understanding performance of parallel programs (and achieving high performance)

Fundamental Topics (as time permits)

Links and References

Record of announcements in this lecture 2020

Record of announcements in this lecture 2018

Record of the announcement about the credit in the last instance of this lecture

Here are the requirements for getting the credit.
  1. You participated in the classes often enough and generally follow what are covered in the class (this is a prerequisite to understand what you are really asked to do in what follows). As you know, I have not been keeping track of attendance/absence, but I am pretty sure I can tell if somebody who has almost never been in the class suddenly sends a report.
  2. Finish the SpMV hands-on exercises we had during the class.
  3. Write and submit a final report (term paper).
    • abstract deadline: January 18th 2019 (Sat), 23:59.
    • final deadline: February 9th 2019 (Sat), 23:59.

    Both are to be submitted through ITC-LMS.

The abstract can be just a text (detailed instructions will be announced later) of a paragraph or two describing your plan on what you will be doing for the final report.

The final report must be a logical, consistent, and sufficiently self-contained document, in a PDF file. The topic of the final report can be chosen from the following.