This was an optional Master-level course, and I was expecting just a handful of students, but I was positively surprised to see that we got more than 90 registrations. And based on the preliminary course feedback, there clearly was lots of demand for this kind of course.
This was a practical hands-on course, during which the students learned how to actually get the best possible performance out of modern CPUs and GPUs. In many cases, students started with implementations that used less than 1% of the theoretical performance of the CPU, and after learning about instruction-level parallelism, vectorisation, multithreading, and efficient use of caches, they were able to get more than 50% of the theoretical maximum performance, in non-trivial practical applications.
It was a lot of work to put together this kind of a course, but I also got lots of expert help with it. We had two other lecturers who helped especially with the parts related to GPU programming: Samuli Laine from Nvidia, and Jaakko Lehtinen who is affiliated with both our university and Nvidia.
Our course was also supported by the kind folks at CSC (the Finnish center for scientific computing), who put together a new frontend for their cloud service so that it is easy to provide our students with access to CSC's high-end servers — many thanks in particular to Aleksi Kallio, Olli Tourunen, Harri Hämäläinen, and Kalle Happonen.
I would also like to thank Aalto IT people who kindly tolerated my numerous requests for software installations and configuration changes for our classroom computers. And finally, many thanks to my teaching assistants, and , who did most of the hard work related to e.g. the grading of the exercises!
#parallelcomputing #parallelprogramming #simd #openmp #cuda #AaltoUni