Class Notes
The Web pages that will be posted here are not always a full or complete set of
lecture notes. If you miss a class, be sure to check with other students
for what went on. The definitive set of material for the
course is that which is presented or referred to in the notes, and any
explicitly identified topics in these web notes.
- First day: generic stuff, and timing calling functions with differing numbers of elements.
- Some general software tools of interest and use. The material is
valid and will suffice for this course, but it is cursory at best and you should hunt down
more advanced examples. Use your Google-fu.
- Most of your assignments will involve writing code that is used to
generate some results: timings of different approaches, etc.
Using makefiles will ease
the job of this writing and running, and I will in some cases
require this. Makefiles are the standard mechanism for building
complex software systems, not just in scientific computing.
An example of using makefiles is in the simple timing function
code examples. Download the tar file
that has both C and Fortran examples
- Accessing remote machines is dangerous if you send passwords in the
clear. Use this introduction to SSH
to learn how to set up a more secure way of transfering files, and
especially for opening windows from a remote machine on a local console.
The CS department's systems staff has
more up-to-date notes showing how to use OpenSSH, which
is now a campus standard. They also have
other platform notes about using SSH from a web browser or Windows.
- Timing things on a computer. The five pages listed have large images and some
linked data sets. It's easy to scale down or zoom out from a large image, but not
possible to zoom in and still have good resolution (unless you use some SVG format).
Still, don't send these off to a printer without first looking at them.
Better yet, don't send these off to a printer at all; the Web pages will be updated
as needed.
- General notes about timings
- Using Unix rusage() data
- Finding clock resolution, and what to do with it
- How to time simple operations like integer
addition, double precision multiply, etc. This was not covered in class,
and you can safely ignore it ... unless you find it interesting
- Code examples for using a timer, in both C and
Fortran
- Basic computer architecture
- General architecture ideas
- Memory systems, which includes
material not covered in class, e.g., cache policies.
- Notes about compiler optionss
- Pipelining
- Examples
- Finding and using cacheline size
- Block matrix-matrix multiplication
- The BLAS
- The BLAS, part 2
- General notes about numerical linear algebra
- General notes about LU factorization
- Pivoting and triangular solves
- Deriving a BLAS-3 version
- Error bounds for LU method
- Basic Matlab operations
- Matlab Introduction
- Matlab Resources Help Facilities
- Data Entry in Matlab
- Matlab Array Notation and Operations
- Genreal Advice about Matlab Hacking
- The Plot Thickens
- Matlab M-files
- Fortran
- Fortran Slides (PDF)
- BLAS
- blasqr.pdf
- Linear least squares problems
- General properties of
linear least squares (LLS) problems
- Some methods for solving LLS
- The singular value decomposition (SVD)
- The QR factorization using Givens
rotations>
- The QR factorization using
Householder reflectors
- A block QR factorization
Edits to this page:
- Started: Wed 31 Aug 2011, 07:58 AM
- Modified: 11 Sep 2011 to add notes about software tools
- Modified: Tue 13 Sep 2011, 11:41 AM to add notes about timing and computer
architecture
- Modified: Mon 10 Oct 2011, 11:40 AM to add notes about Matlab
- Modified: Wed 12 Oct 2011, 08:05 AM
- Modified: Wed 12 Oct 2011, 08:05 AM to add notes about LU to the "architecture"
section
- Modified: Wed 26 Oct 2011, 08:32 AM to add Fortran and Blas PDFs
- Modified: Mon 21 Nov 2011, 06:39 PM adding the LLS notes
- Last Modified: Mon 21 Nov 2011, 06:39 PM