MATLAB Conference 2010
I went to the MATLAB conference at Wembley Stadium yesterday. There were two presentations and a lot of discussion about parallel computing (more on that later). One of the most interesting things to me was that The MathWorks have gotten command history files from a bunch of students learning MATLAB, which they are using to weed out some of the problems that users get when they first learn the language. I can proudly report that I’ve been bitten by several of the examples that were presented.
round 1.234 ans = 49 46 50 51 52
Here, the input is converted to a character array, then returns the ascii values of each character. (
round is being altered to throw an error upon character input.)
Likewise the unhelpful error message that occurs when you mess up a multiplication is being revamped.
eye(3) * magic(4) ??? Error using ==> mtimes Inner matrix dimensions must agree.
mtimes is the underlying function that
* calls. The error message should now display
*, as expected.
I’m really glad to see that The MathWorks are taking in interest in cleaning up these niggles. Little improvements can save users hours of frustration. It reminds me of Canonical’s 100 paper cuts project for Ubuntu.
The parallel computing discussions focussed on two areas: gpu computing and scaling from a single core to multiple cores on a single machine, through to clusters of machines. The gpu and mulicore cases are dealt with via the parallel computing toolbox; scaling to multiple machines requires the rather-more-expensive distributed computing toolbox.
Both products seem to be in a teenage-state: mature enough to get some useful things done with them, but missing a few features. For example, it’s really easy to parallelise a for loop: you simply replace
arrayfun only works in parallel with gpus, not cpus. (John Walley, an application engineer with The MathWorks, is discussing rectifying this.) In fairness to The Mathworks, parallel computing from your desktop is in its infancy everywhere.
If I successfully bat my eyelids at the people in charge of the software budget, I’m hoping to be able to play with the parallel computing toolbox in the near future; I’ll give you some code examples once that happens.