Fredagstutorial (NB!): Dag Sverre Seljebotn: The basics of modern computers in the context of scientific computation

NOTE: This will NOT be a Friday Seminar, but rather a Friday Tutorial. It will be two hours rather than one, using blackboard and live demos rather than slides.

The aim of the tutorial is to teach participants the basics of how
computers work, and how it affects the code they write. Focus will be
on concepts and terminology, not so much on a bag of tricks. A
basic understanding of what really goes on is useful both for
debugging, overall program design and optimization.

Topics:

- What sits inside your computer and how is it connected

- The abstraction layer stack: Programming language, assembly,
  instructions, pointers, registers...

- How does CPU cache work (and when does it matter for your code)

- Understanding when you are CPU-bound and when you are
  memory-bandwidth-bound

- What is multi-threading (OpenMP) really? How does it play with MPI
  and Non-Uniform Memory Machines? How should the code ideally be
  split between OpenMP and MPI?

The working language for a few examples will be C simply because it is
closest to hardware; all the knowledge can be carried over to Fortran
(or IDL, Perl, Python...) easily. Ideally, make sure that you can do
"Hello world" and count to 10 in C before attending (I can provide
additional resources on that upon request).

You may bring your laptop and play with the code examples as we go but
it is not required.

Publisert 28. aug. 2012 11:26 - Sist endret 29. aug. 2012 10:27