MATLAB Embraces HPC

New development tools quicken the migration of high-level technicalapplications into high-performance computing environments.

New development tools quicken the migration of high-level technicalapplications into high-performance computing environments.

By Silvina Grad-Freilich

New development tools quicken the migration of high-level technical applications into high-performance computing environments. 


As requirements for technical computing applications become more complex and development time shrinks, engineers and scientists must solve problems of increasing computational intensity with many involving huge data sets.  These domain experts often find that the key challenge is not only the inherent difficulty of the problem; it is also the fact that the computational intensity of the problem exceeds the capabilities of their computers. One solution is for these domain experts to use high-performance computing environments.

In the past, high-performance computing was available mainly to government agencies and big research labs because only these groups had the means to purchase supercomputers. Today, most supercomputers have been replaced by commercial-off-the-shelf (COTS) computer clusters that provide affordable high-performance distributed environments. For example, a Cray supercomputer available 15 years ago cost about $40 million and provided a performance of about 10 gigaflops (10 billion instructions per second). In 1998, the same performance from a Sun HPC server cost about $1 million. Today, a four-processor Dell configuration can provide the same level of performance for only $4,000.

Problems with Traditional Workflows

While domain experts are attracted by the availability and low cost of this technology, the complexity of developing software applications for distributed environments creates a substantial practical barrier. Most domain experts work in high-level languages, such as MATLAB or Mathematica. Until recently, there were no commercially available high-level tools for prototyping and developing technical computing applications for distributed environments from vendors of these high-level computing languages and elsewhere. As a result, a technical computing application developed in a high-level language would have to be rewritten in C or Fortran for distributed computing, an arduous and time-consuming task for which many engineers and scientists do not possess the required skills. While C or Fortran programmers might be more proficient at translating the software to a lower-level language and adapting it to distributed hardware, this approach presents its own difficulties, as few programmers are domain experts.

There are other disadvantages: Converting the application from a high- to a low-level language results in two versions of the application. It is difficult and inefficient to go back to the original high-level language version if requirements change, but if code changes are implemented in the low-level program, the advantages of working in the intuitive high-level environment are lost.

‹‹ Figure 1: Plot displaying the performance of five equalizers. Using the distributed computing products, this MATLAB application was divided into several tasks, each of which performs the same calculation for different signal-to-noise ratios, and is executed on a remote cluster. 

Moreover, to achieve maximum performance, programmers usually tune the application written in the low-level language to the specific hardware on which it will run. This means that if the hardware changes, as is frequently the case, the program must be retooled. Any processing time gained through using distributed computing is thereby offset by the time spent retooling the program to run in a distributed environment.

Problems like these could be avoided if high-level languages used by domain experts directly supported a distributed computing environment. Domain experts could then prototype and develop distributed applications from within the environment used to develop conventional technical computing applications, with considerable reductions in time and cost. The application could also be redeployed to any hardware platform supported by the high-level language, not to mention less frustration and less error-prone results. While a program written and implemented in a high-level language might perform less efficiently than a program written by an expert C or Fortran programmer, the reduction in time-to-solution far outweighs the minor loss of computing speed.

Distributed Computing Toolkits

Several third-party toolkits for high-level languages are already available for developing distributed and parallel applications. A

Subscribe to our FREE magazine, FREE email newsletters or both!

Join over 90,000 engineering professionals who get fresh engineering news as soon as it is published.


About the Author

DE Editors's avatar
DE Editors

DE’s editors contribute news and new product announcements to Digital Engineering.
Press releases may be sent to them via [email protected].

Follow DE
#10428