CUDA GPUs Boost Mars Research

ArrayFireCase Studies, CUDA Leave a Comment

With the recent news release from NASA about the Mars Curiosity rover, and as a continuation of our previous post “Powering Mars Research”, Brendan Babb is here again to provide us with an exciting look into Jacket’s role in Mars research from the Curiosity rover . Brendan Babb and colleague Frank Moore, at the University of Alaska in Anchorage, work with NASA’s Jet Propulsion Lab to improve image quality and image compression of the Mars Rover images. Here is what Brendan had to tell us about the use of Jacket in his GPU computing challenges…

Brendan Babb:  I was thrilled to watch the new Mars Rover Curiosity successful landing with my visiting nieces and nephews. The new rover will take pictures, dig for samples, analyze samples onboard, and send the valuable science back to earth. And hopefully our research will allow that science to be sent back more quickly. Our code is in MATLAB and uses Genetic Algorithms to evolve better image compression. The problem is that each experiment takes 27.5 hours to run on the CPU. Luckily, the code is embarrassingly parallel making it a perfect fit for GPU computing. I didn’t have the time available to optimize low-level CUDA, so instead I plugged in Jacket by AccelerEyes. Jacket resulted in dropping the simulation time from 27.5 hours to 5.5 hours. Jacket is easy-to-use and efficiently runs existing MATLAB functions on the GPU. Very little GPU-specific coding is required, often consisting of a single character addition, i.e. single to gsingle. While it is technically tempting to write CUDA myself, I know this could involve at least 2 months of manual code optimization which could be ultimately slower than the latest version of Jacket. Instead I rely on the expertise of others to accelerate my code’s discrete wavelet transform calculations while I focus on the higher-level algorithms. Thanks to NVIDIA GPUs and Jacket I was able to easily accelerate my MATLAB code by 3-4X with minimal effort. For instance, I just recently upgraded from a Fermi-based NVIDIA GTX 560 TI to a new Kepler-based GTX 680 with Jacket v2.2. This upgrade led to speedups of 6-7X without any code changes. The rovers use lossless and lossy data compression based on the ICER standard, developed by Aaron Kiely and Matt Klimesh at JPL, to send data down to earth. When lossy data is sent the reconstructed image has some incorrect pixels, measured as the Mean Squared Error (MSE) between the original and reconstructed image. Our research works on recreating images with less MSE than the current method. JPEG2000 and ICER use wavelets to compress images. We use Genetic Algorithms to evolve wavelet coefficients that result in lower MSE on the reconstructed image or smaller files with the same MSE.

I strongly recommend MATLAB users to grab a free 15-day trial of Jacket and an inexpensive NVIDIA GPU card. You may find that a few characters changes of your code will yield 2X or more speedup. I also encourage anyone optimizing in a larger parameter space to use Genetic Algorithms, Jacket, and NVIDIA GPUs to quickly evolve better solutions.Soon I will be testing the speedup on Fish, a new Cray XK6m supercomputer at University of Alaska, Fairbanks, that has 48 NVIDIA Tesla GPUs. Improved image compression and quality will allow us to see even more detailed pictures of Mars and hopefully help discover signs of previous life on Mars.


Leave a Reply

Your email address will not be published. Required fields are marked *