Intel has defined four layers of the software stack that you can use to evaluate multicore development “readiness.” Keep in mind that parallel programs do not run faster on multicore systems if the libraries and drivers you are using are not “multicore ready” or if the operating system cannot load-balance tasks across multiple cores.
||Meaning of “Multicore Ready”
||Support provided on the operating system of choice; tool facilitates correct threading and optimization
||Example: Multithreaded nature of LabVIEW and structures that allow for optimization
||Thread-safe, reentrant libraries
||Example: Analysis libraries
||Drivers architected for optimal multithreaded performance
||Example: NI-DAQmx driver software
||Operating system supports multithreading and multitasking and can load balance tasks
||Example: Support for Windows, Mac OS, Linux, and real-time operating systems
Figure 6. Description of a “Multicore Ready” Software Stack
An example at the device driver software layer is NI-DAQmx driver software. Traditional NI-DAQ (Legacy) is thread-safe, meaning the entire library blocks other threads from calling into it when an NI-DAQ function is called.
At first glance, this behavior may appear logical because NI-DAQ is used to control hardware, which is often thought of as a single resource. NI-DAQmx, the reengineered modern data acquisition driver, is reentrant – meaning multiple data acquisition tasks can execute in parallel without blocking threads.
With this approach, the driver can run multiple tasks independently, such as analog and digital I/O, in parallel on the same device.
At the lowest level of the software stack, the operating system, many of the leading real-time operating system (RTOS) vendors do not yet support automatic load-balancing of threads across multiple cores.
LabVIEW 8.5 brings the automatic multithreading scheduler from the desktop – known as symmetric multiprocessing (SMP) – to deterministic, real-time systems with enhancements to the LabVIEW Real-Time Module.