Latest from Embedded

Dreamstime_cunayah-jouna_362253229
dreamstime_cunayahjouna_362253229
ID 213740052 © Alexandr Hlopotov | Dreamstime.com
cooling_dreamstime_l_213740052
Dreamstime_Khrystyna-Herasymchuk_364019668
dreamstime_khrystynaherasymchuk_364019668
Dreamstime_awargula_139764679 (generated with AI)
dreamstime_awargula_139764679
ID 158972582 © Artur Szczybylo | Dreamstime.com
dreamstime_arturszczybylo_158972582_promo
214182021 © Pavlineo | Dreamstime.com
promo__pavlineo_dreamstime_xxl_214182021
ID 76795646 © Cybrain | Dreamstime.com
promo__id_76795646__cybrain__dreamstime
ID_316508515_alena_butusava, and Macronix
promo__id_316508515__alena_butusava__dreamstime

Choosing a Parallelization Technique: What’s the Best Path? (.PDF Download)

Nov. 20, 2018
Choosing a Parallelization Technique: What’s the Best Path? (.PDF Download)

Most of the legacy code that needs porting to newer systems is serial code, meaning that the code runs on a single processor with only one instruction executing at a time. Modern OpenVPX boards incorporate powerful, multicore processors such as the Intel Xeon-D. The inefficiency of running serial code on these high-performance processors increases the number of boards required in your system, negatively impacting your SWaP-C. General-purpose GPUs (GPGPUs) are also becoming more common in OpenVPX systems due to their massively parallel architecture that consists of thousands of cores designed to process multiple tasks simultaneously.

To modernize your serial code for parallel execution, you must first identify the individual sections that can be executed concurrently, and then optimize those sections for simultaneous execution on different cores and/or processors. Parallel programs must also employ some type of control mechanism for coordination, synchronization, and data realignment. To aid in parallelization, numerous open standard tools are available in the form of language extensions, compiler extensions, and libraries.

So, which method or path is right for you? Let’s explore a few options.

Most of the options have evolved from pthreads, a “C” library defined by the IEEE as POSIX 1003.1 standard, which started circa 1995. POSIX is short for Portable Operating System Interface for UniX. Being a mature technology, pthreads is available on most CPU-based platforms. Remember, a thread is a procedure that runs independently from its main program. Scheduling procedures to run simultaneously and/or independently is a “multi-threaded” program.

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!