TANA77 Programming of Parallel Computers, scientific computations, 6 ECTS-points
/Programmering av parallelldatorer, tekniska beräkningar/

Advancement level:
D

Aim:
To give knowledge about methods and languages for programming of parallel computer architectures, and ability to program such computers. The course demonstrates how parallel computers can be used in some applications, in particular scientific computations, but also, to some extent, embedded systems and image analysis.

Prerequisites:
Basic courses in programming and numerical methods. Fortran (TANA 70 or NMAB15) is recommended.

Course organization:
Two variants of the course are given, where the main part is the same. The variant Scientific Computations, TANA 77 is described here, and the other variant, Embedded Systems, TDDB 78 can be found among the courses of the computer science department. The lectures deal with theory and principles, and the laboratory course give practical exercise in parallel programming and the use of support systems. The lectures are the same for both variants but the laboratory course is different.

Course content:
The architecture of parallel computer systems: memory hierarchies, shared memory and distributed memory. Vector instructions. Parallel execution models and languages. Performance measurement and enhancement. Message passing and data parallel programming. Principles of data parallel languages. Time complexity. Scalability. Scheduling of parallel programs. Vectorization and parallelization of serial codes. Suppport systems for parallel programs. MPI (Message Passing Interface). Error detection and performance measurement tools for parallel computers. Basic numerical algorithms, BLAS (Basic Linear Algebra Subprograms). Distribution of matrices for parallel solution of linear systems of equations. The computer laboratory course gives practical knowledge about programming of parallel computers, both data parallel, message passing and shared memory based programming. For data parallel programming the Cray C90 vector computer at NSC is used. The T3E at NSC is used for message passing programming. For shared memory programming the C90 at NSC is used.

TEN1Written examination, 2 p.
LAB1Laboratory work, 2 p.
Course language is Swedish.