I taught the first half of an MPI class for a university last friday. It was fun, I showed them how to engineer an application for maximum scalability, as well as how to do basic message passing. There isn’t a great deal we can do in a single day, but I did start to get into some of the minutae of MPI programming. It is hard for people to think in parallel.

One of the bits of feedback that came back has amazed me (and to a degree, made me grin). Apparently not everyone is using C in HPC, Fortran still holds sway. There are a few folks who want to use Matlab to tie bits together. We will likely add that to the course as well.

All in all it was fun, but writing a well thought out class is a tremendous amount of work.

Amen! Every year I teach a graduate level 2 credit course on ‘computational tools’ – debuggers, compilers, makefiles, profilers, MPI, OpenMP, Matlab, etc. Students are mostly in Science or Engineering. However I am finding less Fortran and more C. All my examples used to be Fortran but now I’ve had to incorporate both. More surprisingly, I am finding a growing number of ‘language-less’ students — no Fortran, no C, no C++!! Increasingly they are relying on Matlab.

I seriously need to revamp the course already to better cater to these new types of students, with more tools on Malab profilers, StarP, etc.

Heh … Here I am thinking that I was one of the last dinosaurs using Fortran, and that all the modern folks are using C …

Matlab is the interesting case. It looks like we need a) optimizing compilers for it (StarP ?), as well as b) interfaces to other systems. The issue is that the licensure prevents many simultaneous runs. I had a sense that the people in the class were not aware of the “financial implications” in running a 128 node MPI Matlab code …

I think prohibitive licensing costs will also hold us back. Our 128 seat dce license for matlab was not cheap. starp is even more expensive.

What I can’t deny or ignore is more and more people are turning to matlab as their computational platform, and it is fast since it does use optimized libraries in the back end.

As part of a programming assignment I had the students code up a dgemm example in C or Fortran and use either Intel’s MKL or AMD’s ACML for the blas library. For grins and giggles I also had them link against NAG, IMSL, and whatever other blas library they could download off the web.

Programming was hard work and they burned up an entire lab session plu smore to get it done.

It took 5 minutes in a matlab session, and the timing differences between C code with MKL and matlab were nil. We used the same input data for all cases.