- Length: 60 min
- 1 presentations / student
- You get 3 credits from the presentation.
Programming assignment (voluntary)
The goal of the exercise is to familiarize you with some of the techniques presented during the seminar. You can take some parallel programming tool, e.g., Cuda, OpenMP, Intel SSE or something else. The task should not be entirely trivial and you have to submit a written report, where you explain the task, justify your decisions and perform some benchmarking (scalability, possible performance gains or loses)
We present some topics but you are free to choose some other or write your own project altogether. Do not choose a project where there already exists a parallelization implementation for your tool of choice. On the other hand, it might be worth doing parallelization with some other technique and doing a comparative study. E.g. If there is already an existing OpenMP parallelization in some project you are interested, you might want to do Cuda implementation and do some performance evaluation between the two techniques.
We'll arrange one extra meeting before next semester, probably in August or September, where you can present your work to us and other participants of the seminar. This meeting is voluntary and you will get your grade and credits long before that (hopefully).
In order to coordinate the effort and make sure that the tasks are reasonable, we require you to register your topic with us before you start doing the project! Read the exact requirements below!
Possible programming topics
Here are few example topics
- Gnu Scientific
- modifying vector/matrix operations for OpenMP or Cuda
- Gnu MP
- E.g., Cuda implementation of arbitrary precision floating points
- Modifying some numeric algorithms (e.g. Newton's iteration?) to work on Cuda/OpenMP environment
- might already be parallelized
Or some other topic of your own choosing. We'll add more topics to this list later.
The exact requirements
Follow these requirements carefully
- Write a short email to
- your programming task: which software, which version or if it is your own project, a short description of what the software does
- which parallelization techniques you are going to apply
- if you are modifying an existing project, which parts of the software you are going to modify
- how many credits you expect to get.
- are you willing to participate in a mini-conference held some time in September where you can present your work to other seminar participants and us
- The deadline for applying the topic is on 31st May 23.59.
- Wait for our acceptance email before you start your project!
- Write your code
- preferable length: several hundreds of SLOCs
- Write your report. The report must include:
- description of what was done
- which techniques were applied
- performance study (comparison to non-parallelized version and/or how does the program scale when using more CPUs/cores)
- personal experiences, lessons learned, or other issues you feel are worth mentioning
- the report can be a text file or, if you prefer, more formated file, as well
- Submit your code and the report by the end of August
- include all the source code needed to compile the project
- include the report
- the exact deadline is on 31st August 23:59
- Participate in the mini-conference (voluntary)
- held in September
- give 5-10 minutes talk of your project
The programming environment
We provide a shell server where we have a NVidia Tesla and OpenMP installed. We give you shell accounts upon request. The server is a 8 core Intel Xeon with Ubuntu Linux so we can easily provide whatever parallelization tools available in Ubuntu as well.
The easiest way for us to hand out your account is for you to e-mail your preferred account name and SSH key to firstname.lastname@example.org. I'll reply with an email giving you your account name and our server name and instructions on how to use various tools on the server.
You can use some other platform as well but remember that we need to be able to test your code, so do not use anything very exotic.
We give you a grade of 0-5 for the project. To pass all the requirements defined must be met.
The course is graded in scale 0-5. The overall course grade is credits weighted average of your presentation grade and the programming project grade.
Timo Lilja Last modified: Mon May 4 14:38:48 EEST 2009