CPS5401-Lectures


                    
Date
Topic
Materials
08/27/2013

Computational Science

Linux

Intro to Computational Science slides

Intro to Linux slides   Exercises  matmult.c

Textbook Preface and Introduction

08/29/2013

Linux Details

Shell Scripting

Linux Details slides

Shell Scripting slides  Shell Scripting practice

Textbook Chapter 18

09/03/2013 Fortran Intro

Fortran Background

Examples: factorial.f90  sieve.f90

09/052013

Fortran90 Details

Make

Fortran90 Tutorial at MTU

Fortran90 Tutorial at Rice

Make at Software Carpentry

Textbook Chapter 20

Makefile for a simple Fortran project

09/10/2013 Introduction to C

Practical Programming in C at MIT

Introduction to C slides by Fred Kuhns

C Exercises 

 

09/12/2013 Introduction to C++

C++ Background slides

C++ Tutorial at cpluscplus.com

Introduction to C++ at MIT

Object-Oriented Programming videos at Software Carpentry

09/17/2013

(no formal class meeting;

work on your own)

Introduction to Python

Watch Python videos at Software Carpentry

Do the exercises at http://www.codeacademy.com/learn (Click on Python)

9/19/2013 Source Code Control

Textbook Chapter 21

Watch Version Control videos at Software Carpentry

Source Code Control with Subversion by Umayanganie Munipala

09/24/2013 Von Nuemann architecture, modern floating point units, pipelining, ILP

Textbook Chapter 1 sections 1.1-1.2

CPU Design and Its Effects on Performance by Dr. Arunagiri

09/26/2013

Multicore architectures

locality and data reuse


Textbook Chapter 1 sections 1.4 -1.5

Multicore slides by Dr. Arunagiri

10/01/2013

Power consumption of microprocessors and  roofline model

Textbook Chapter 1 sections 1.6-1.7 

Roofline Model by Dr. Arunagiri

The presentations referenced in the lectures are Power Consumption of Microprocessors and Roofline Model.

 

10/03/2013

Memory hierarchies

Textbook Chapter 1 section 1.3

Slides

10/08/2013 Introduction to Parallel Computing

Textbook Chapter 2 sections 2.1-2.3 

Slides

10/10/2013
More on memory hierarchy Slides
10/15/2013 Shared memory programming with OpenMP

Textbook Chapter 2 section 2.5.2

Slides

Cyberinfrastructure Tutor

     Parallel Computing Explained

     Introduction to OpenMP 

10/17/2013 Distributed memory programming with MPI

omp_pi_wrong.f 

Cyberinfrastructure Tutor

     Introduction to MPI 

     MPI Example 1  example1.c 

10/22/2013

More MPI

Hybrid MPI+OpenMP Programming

Intro to MPI at Dartmouth 

Hybrid and PGAS

    Example code: hello-hybrid.c 

    Example code: jacobi_mpiomp.f90 

    Input file: indata 

    Example code:  mmm-upc.c 

10/24/2013

Introduction to GPU Programmiing

Midterm Review

Introduction to GPU Programming slides

Introduction to OpenACC slides 

10/29/2013 Midterm Exam  
10/31/2013

Amdahl's Law

Profiling

 

Using compiler optimization

Amdahl's Law slides

Gprof tutorial

    jacobi.c

GCC Intro

11/05/2013 Serial code optimization

Slides

Matrix multiply slides

Vectorization slides

GCC Auto-vectorization webpage

11/07/2013

Block matrix algorithms

PAPI

Automatic Blocking of Nested Loops by Schreiber and Dongarra

Intro to PAPI slides

PAPI website

11/12/2013

Computer Arithmetic

Computational Linear Algebra

Computer arithmetic slides

Computational linear algebra slides

Dense linear algebra libraries

11/14/2013

Sparse Linear Algebra

Iterative Methods

sparse slides

iterative method slides

11/19/2013 No class - work on projects  
11/21/2013 No class - work on projects  
11/26/2013

More sparse linear algebra

PETSc

Direct and Iterative methods

Conjugate Gradients without the Agonizing Pain by Jonathan Skewchuk

PETSc tutorial

PETSc heat equation example

12/03/2013 Heat Equation project  
12/05/2013

Fast Fourier Transform

Review for Final

FFT slides

Final exam review guide