Interactive SuperComputing


 

Success Stories

Singular Value Decomposition (SVD)Data Processing


The Challenge

Singular value decomposition (SVD) based algorithms are used by scientists and engineers to recognize data in noisy environments, reduce data storage requirements, and regularization for pseudoinverse calculations. SVD is a linear algebra technique that decomposes matrices into constituent parts, a left-hand and right-hand matrix separated by a descriptive diagonal matrix, the singular values, as their weighting. In many applications, the singular values of a matrix decrease quickly with increasing rank. This property allows the user to reduce noise or compress the matrix data by eliminating the small singular values or the higher ranks.

Application areas for the SVD include digital signal processing (DSP), image processing, bioinformatics and physical simulation. With technology advances, these applications increasingly work with larger datasets—and many more of them. The computational intensity of the SVD algorithm limits throughput when processing many matrices, and limits usefulness when processing large matrices on a serial computational platform. When handling many small matrices, parallel SVD computation on a cluster of processor would be ideal—but how does one easily distribute the work? Similarly challenging is the implementation of the SVD algorithm in MPI or coding the application in C/C++ or Fortran with an MPI SVD library to process large data sets in parallel.

Star-P Solution

With Star-P, scientists and engineers can quickly take advantage of both data and task-parallel SVD computation. Star-P lets users develop and optimize their applications in the familiar MATLAB®® environment, while seamlessly computing interactively on a multiprocessor server. With the native MATLAB® SVD compatibility, Star-P readily enables simple conversion of existing serial MATLAB® code for parallel computation shaving precious execution and development time.

In a recent application of Star-P, the SVD algorithm was used for image compression. The algorithm consisted of the following three steps: 1) load the data, 2) compress the data, and 3) decompress the data to view the results. The compression algorithm simply retains the SVD data up to the rank specified - in other words, keeping only matrix u and v columns one through the compression rank, and singular values one through compression rank.

Only one change was made to the original MATLAB® code to run in data parallel: to load the data onto the server with the command ppload. The original algorithm is shown in Figures 1 and 2, and the algorithm is simply run in serial or parallel as shown in Figure 3. With a single image of 500x500 pixels or larger, running Star-P on an 8-processor server, the execution time was accelerated up to 35X. In addition to running the SVD compression/decompression algorithm in data parallel, one could very easily run many smaller images in task parallel. An example of running the algorithm is task parallel mode is shown in Figure 4 where the input matrix, a, contains all the images to be compressed. By taking a set of 32 images, an order of magnitude speedups were observed when running Star-P on an 8-processor server.


Summary & Metrics

  • Minimal modification of MATLAB® code to take advantage of powerful parallel computing
  • Orders of magnitude data parallel speed up with large images or data objects
  • High-speed processing of many images using task parallel computation


 


Back to Success Stories