Post-PASI training: Week 3

Syllabus

Class 6 (August 22nd):

Lecture 6 – Slides

  • Overview of CUDA libraries
  • Thrust library: STL for CUDA
  • Overview of features:
    • Containers
    • Iterators
    • Algorithms
  • Best practices in Thrust

Lab 5 (August 23rd):

Lab 5 – Slides

lab5_weld_vertices.cu

weld_vertices.cu

  • Do examples using thrust:
  • Sum, sort, element wise operation, copy_if, etc.
  • Welding triangles example

Class 7 (August 24th):

Lecture 7 – Slides

  • Overview of sparse matrices
    • Sparse matrix formats
    • Solvers and preconditioners
  • Cusp library: Sparse matrix algebra in CUDA
    • Matrix containers in Cusp: types and formats
    • Solvers: CG, BiCG, GMRES, etc.
    • Preconditioners
  • Example: 2D Finite difference Poisson

Lab 6 (August 25th):

Lab 6 – Slides

Lab 6 – Codes

poisson.cu

spMV_csr.cu

spMV_ell.cu

  • Implement 2D Poisson solver with Cusp
  • Compare timings with different:
    • Solvers
    • Preconditioners
    • Matrix formats
  • Implement a sparse matrix vector multiplication

Class 8 (August 26th):

Lecture 8 – Slides

  • CUFFT: Fast Fourier Transform in CUDA
  • PyCUDA: GPU computing using Python