Choosing the Right Parallelization Technique

parallelization chip

Trying to port over old code can put a huge damper on efficiency.  Not to mention, the inefficiency of running serial code on high performance processors can increase the number of boards required in a system, negatively affecting SWaP-C.  Identifying the best parallelization technique for your defense applications is the goal.  The question is how does one choose?  It starts with learning what open standard tools are available for parallel programs.

Parallelization

 

 

Figure 1: Parallel Programming Options

So, what exactly is parallelization?  Most of the legacy code that needs porting to newer systems is serial code; such code runs on a single processor with only one instruction executing at a time.  To modernize serial code for parallel execution, individual sections that can be executed concurrently must be identified.  These sections are then optimized for simultaneous execution on different cores and/or processors.  Parallel programs must also employ a control mechanism for coordination, synchronization, and data re-alignment.  To assist in this process of parallelization, several open standard tools are available in the form of language extensions, compiler extensions and libraries. 

Making the Choice

Fortunately, there are a variety of tools:

  • Pthreads
  • C++/Boost Threads
  • Open Multi-Processing (OpenMP)
  • Open Accelerators (OpenACC)
  • Thread Building Blocks (TBB)
  • Message Passage Interface (MPI)

Each technique allows for the ease of parallelization that enables efficiency based on your unique requirements.

What’s Next?

After you and your software team have compared and identified which parallel model is best for your application, take the next step.  Curtiss-Wright’s trusted OpenHPEC Accelerator Suites OpenHPEC and OpenHPEC LX (for smaller systems) can help software teams build complex, efficient, multithreaded, multiprocessor code fast.  This proven versatile toolset enhances your capability to produce quality software with less effort.  A leader in software tool suites; it includes MPI (OpenMPI and Mvapich2) and the powerful Arm (formerly Allinea) debugger and profiler, DDT and MAP. 

To find out more download the Finding a Path Through the Woods: Choosing a Parallelization Technique White Paper