Kick-off meeting: October 21st, 16:10—17:10, LF 125 Weekly lecture: Tuesdays, 16:00—17:00, LF 125 Instructors:
Jens Krüger Office: LE 305 Phone: 203 379 1314 E-Mail: thomas.fogal at uni-due punkt de Office hours: Tuesdays, 17:00—18:00 (directly
after class), or by appointment (send an email).
[05.01.2015] Assignment 6: final projects is
also now online! You must propose your own final project. Proposals are due
on January 20th, with a one-week period to revise & resubmit. Projects
will be due towards the end of February.
[05.01.2015] Happy New Year! Hope everyone had a relaxing break. Now
it's time to get back to work, with assignment
5: scalability. It is split into two parts, and the first is due on
[20.11.2014] Assignment 3 is now posted, and
now the real fun begins ;-)
No repositories yet; sorry. Will get them up soon.
[20.11.2014] I updated assignment 2
with a small note to explicitly say to use a gravitational constant of
[19.11.2014] I have posted a sample
solution for assignment 2. It includes a program as well as a sample
input and output. You should verify your simulation agrees with this one's
output. I'm extending the deadline until Friday, Nov. 21st to allow
time for this, but note that the next assignment will go up soon, too!
Implementation-heavy course focused on performance-critical code.
Parallelism models; messaging-passing and shared-memory architectures.
Modern technologies for parallelization; OpenMP, MPI, CUDA. I/O
performance issues; parallel and distributed filesystems. Network
technologies in clustered environments. Deep storage hierarchies and the
This is an implementation-intensive course.
Graduate students from other disciplines who require a
background in HPC are highly encouraged to attend this course!
There are no explicit prerequisites, but you should
have at least some prior programming experience. A
basic background in operating systems would be beneficial; taking the
two courses concurrently would reinforce related concepts. You may find
Visualization to be useful, but we will discuss any needed topics
from that course in an ad hoc manner in this course. Please talk
to the instructor if you have any doubts about your readiness.
This course has the following objectives:
Review the theory behind shared-memory and message-passing models of
Provide a basis for understanding parallel program performance.
Understand the implementation of modern parallel filesystems.
Improve software engineering skills through the completion of a
significant software project.
If you plan to take the
course, please register on the course's
moodle page. The registration code is just 'hpc' (all lowercase).
This allows us to get your Cray accounts setup in a timely manner.
Assignments and Grading
Grades in this course will be entirely determined by program correctness
and performance in a series of large programming projects. You will
implement a simple `N-Body' simulation as well as analysis tools to
understand the performance of your simulation. Later, you will apply the
knowledge you have gained in a custom program based on your interests.
Your solutions should be written in C, C++, or Fortran 90+. (Exceptions
to using these languages may be allowed, but you will need to negotiate
them with me.)
We will give an introduction to C in the first weeks of the semester.
An N-Body simulation is a simulation of the movement of bodies that
interact with one another. One application is (for example) computing
planetary motion according to Newtonian gravity. The Figures below give
2 examples of such a system.
Class time will be used to help guide you in the implementation
of your N-Body simulation. The course will start out simple and
progressively build more and more complex parallelism (and thus
higher-performance!) into your simulation. In the end, you will have
created your own highly-performant N-Body simulation that utilizes
The project is cumulative. You must live with your code for the whole
semester. Solutions for phases will not be given out. Regression testing
Each project will be worth a major part of your grade. Exact point
values will be discussed during the kick-off meeting. Assignments are
due at midnight on the day they are due.
WARNING: All groups are expected to do their own work
on the programming assignments. No cross-group collaboration is allowed.
A general rule to follow is that you may discuss the programs with others
at the concept level but never at the coding level. If you are at
all unclear about this general rule, do not discuss the programs with
other students at all.
The CCSS Cray-XT6m HPC cluster (duecray.uni-due.de)
will be the primary computing resource for this course. Account
creation/registration will be worked out on the first day of class. Your
program will be graded on the Cray and so you must test
your program in that environment! However, we recommend you setup a
local machine or VM to do most development on, as the Cray is a shared
Imprint/Impressum Copyright 2014 by HPC Group - Building LE, Lotharstr. 65, 47057 Duisburg, Germany