Every programmer knows that writing parallel code can be difficult. You have to manually identify the parts of the code that can be parallelized, insert control code that ensures they are executed separately and independently, and bring everything together once the parallel routine is complete.
What’s worse is that we don’t think in parallel. The thought processes of a programmer solving a computing problem are typically sequential, or one step at a time. That mental model makes parallel computations even harder to code.
Advanced Cluster Systems is aiming to change that. With its product SET, programmers can write code sequentially, then insert SET application programming interface (API) instructions that will automatically identify opportunities for parallel execution "and take care of the low-level details that arrange the code so that it can be executed in parallel.
According to Zvi Tannenbaum, CEO of Advanced Cluster Systems, this technique enables programmers to quickly and easily bring parallel execution to existing code. Alternatively, programmers can write entirely new applications, in the sequential style they are used to, and use SET to apply parallel operations to those applications.
This means that any programmer can create an application that can execute in parallel, regardless of whether he or she has received specialized training in writing parallel code. Commercial software vendors or enterprises don’t have to acquire additional skills to use SET.
Creating and Managing Messages
SET employs the message-passing interface (MPI) for parallel computations, which focuses on making sure code and data is on the processor or core required to complete a calculation. It identifies areas that can be computed in parallel, then coordinates their execution across cores in a processor, or processors in a cluster.
Even working with the source code may not be a strict requirement. Tannenbaum describes the company’s initial efforts at working with Wolfram Research’s Mathematica engine: “Without the source code, we were able to insert SET to automatically run copies of the Mathematica kernel on each processor, executing the same Mathematica code, and essentially enabling Mathematica to run its programs in parallel.”
Advanced Cluster Systems offers a version of SET that works specifically with the Mathematica symbolic mathematics engine.
SET encourages and supports a software architecture approach known as Model-View-Controller, or MVC. View represents the user interface, while Model represents the programming logic that enables the code to carry out its function. SET takes over the Controller part of an application, and ensures that data and the code needed to operate on that data is replicated and assigned a processor or core. For applications that are already written using this architecture, understanding where to place the SET instructions is straightforward.
SET may be a godsend for commercial engineering software vendors who have not yet ported their code to multiprocessor and multicore systems. But it is also useful to larger engineering organizations that have their own code for custom analysis and simulation workloads. According to Tannenbaum, the pricing is aggressive enough to enable teams to use it with their own code.
Currently, SET is available for Linux and Mac systems. While Macs aren’t used often in engineering clusters, Linux is popular, so commercial vendors and engineering organizations alike can immediately start to parallelize their Linux simulation and modeling code.
But for engineers, this could be a clear win in their ability to run applications on their desktops, then take those same applications and run them faster on clusters. If you’re not taking full advantage of available processors and cores, take a look at SET as a solution to quickly and easily build parallel applications.
Contributing Editor Peter Varhol covers the HPC and IT beat for DE. His expertise is software development, math systems, and systems management. You can reach him at DE-Editors@deskeng.com.
Advanced Cluster Systems