## A Month of Math Software – June 2011

Welcome to the 6th edition of A Month Of Math Software where I take a look at all the shiny new things that are available for a geek like me to play with. Previous editions are available here.

**Commercial Mathematics Software**

- Mark 23 of the venerable NAG Fortran Library has been released. The new version contains over 100 new routines and there is some very nice stuff to be found. They’ve beefed up their global optimization chapter for example by improving their multi-level coordinate search routine to allow equality bound constraints and also by adding a particle swarm optimizer.
- More news from NAG – They’ve released their Optimization routines as a R-module! Note that you need a licensed version of the NAG Fortran Library installed to use them.

**Free Mathematics Software**

- Octave – This open source alternative to MATLAB has seen a very minor update to version 3.4.2 which fixes some minor installation problems.
- Pari – Version 2.5 of this computer algebra system which specialises in number theory has been released. Get the changelog here.
- PLASMA – PLASMA stands for
*Parallel Linear Algebra for Scalable Multi-core Architectures.*The version 2.4 changelog is available at http://icl.cs.utk.edu/plasma/news/news.html?id=270

**Mathematical Software on GPUs**

Unless you’ve been hiding under a scientific computing rock for the last couple of years you’ll know that GPUs (Graphical Processing Units) are how everyone wants to do their computing these days. For the right kind of problem, GPUs can be faster than standard CPUs by an order of magnitude or more. Access to such cheap computational power fundamentally changes the type of mathematical and scientific problems that we can realistically tackle– which is nice! Unfortunately, however, programming GPUs is not particularly easy so it’s a good job that various research groups and software companies have stepped in to do some of heavy lifting for us. Last month I mentioned a new release of NAG’s GPU offering and April saw a release candidate of v1.0 of MAGMA (open source multicore+GPU linear algebra). Here’s what happened in June

- LibJacket v1.0 relased – This is a new product from Accelereyes, the company who have been doing GPU acceleration on MATLAB for a fee years now. With LibJacket they’ve gone a step further and released a C/C++ library. See their wiki for a list of supported functions.

**Compilers Compilers Compilers**

OK, so this isn’t mathematical software news really but good compilers are essential for fast mathematical code. There have been a couple of compiler-based news items that have got me excited this month.

- Pathscale EKOPath 4 compilers go open source – If you have a Linux system and are running some open-source mathematical software then there is a good chance that your software was compiled with the standard open source C-compiler, gcc. Now, gcc is a fantastic compiler but, according to many benchmarks, Pathscale’s compilers produce faster executables than gcc for many computationally intensive operations. The practical upshot for most of us is that some of our favourite software packages might be getting a free speed-hit in the near future. There’s a huge discussion thread about this over at phoronix.com.
- Intel have released a new open source compiler called ispc. According to Intel’s site
The example program is a simple Mandelbrot renderer. Make those SIMD lanes in your CPU work harder for you!*“ispc is a new compiler for “single program, multiple data” (SPMD) programs.”*

**Mathematical software elsewhere on the web**

- Why you shouldn’t use Excel 2007 for doing statistics – My answer would have been
*‘because other statisticians will point and laugh at you if you do’*but it turns out that there are good mathematical reasons to not use it as well. This is an old article but worthy of further attention in my opinion. - In defense of inefficient scientific code – An article I wrote last month about why code that runs inefficiently can be OK. It proved to be something of a hit on twitter so I thought I’d add it here in case you’re interested.
- Everything You Ever Wanted to Know About Floating Point but Were Afraid to Ask
- Stand-alone code for numerical computing – because sometimes you don’t want to install a massive numerical library just to get some Gamma distributed random variates (among other things).
- Bouncing Balls
- Storing banded matrices for speed

While searching for difference between Plasma and Magma both University of Tennessee projects i came across this poster http://cseweb.ucsd.edu/~rknath/poster2.pdf that compares the two projects.

Thanks for that…very useful :)

I was at a talk yesterday given by Jack Dongarra where he mentioned PLASMA. Turns out that it is more energy efficient than LAPACK as well as faster. http://ow.ly/5wXEs

Do you by any chance know how to deploy a opencl or cuda application to a customer. Right now people are using it for their own custom applications that are deployed on their own computers. Where they can compile the opencl/cuda code for that particular machine.

When you sell a commercial application to a client you don’t know what sort of hardware the client has. Which nividia card or which processor (intel, amd, via, arm) does the client have. How then can you optimize your code and take full advantage of opencl/cuda

I’ve had no experience of doing that yet I’m afraid. I imagine that it is complicated!

I have seen at least one solution (in NAG’s GPU library) where they have routines that try various parameters on your system to see which ones fit best with your hardware.

Hi Mike,

I have an idea to develop a Web 2.0 application just like Matlab. I have developed a prototype

http://oneptwo.appspot.com

and would like to hear your comment since you have extensive experience in using math software.

My idea is:

1. You can use Python or Matlab ML to write your algorithm.

2. You can share your algorithm to public if you like.

3. You can search other user’s public algorithm.

4. You can use google spreadsheet as data input and output.

5. You can works with other people in another country by this application.

Is it something useful?