Latest release of graphical development environment supports multithreading, SMP
EDN Europe, 06 Aug 2007
6th August 2007 – Release 8.5 of National Instruments’ Labview graphical programming environment embodies a number of upgrades to support multicore processing. There are three separate strands to the multicore announcement: firstly, there is increased support for running multithreaded applications on multi-core processors, to take advantage of the increased power that is available. Then, there is a capability to implement real-time symmetric multiprocessing, balancing tasks across multiple processor cores while maintaining determinism. Designers using this facility can “ring-fence” mission-critical sections of code, assigning them to a dedicated core. Finally, there is a high-level tool to simulate event-based system behaviour using statechart notation: the statechart module is underpinned by UML. Engineers using current PC technology for control and measurement tasks have available multi-core processors. In an IT context, the operating systems will conventionally allocated different tasks to the separate cores. In a test and measurement or data acquisition context, there may be only one main application running – to take advantage of the multicore cpu that application itself must be multithreaded. NI says that Labview has always had an inherently parallel programming view: with release 8.5, it extends this to automatically divide applications into multiple threads, inspect the target system for available cores, and scale the application accordingly, scheduling threads on to the discrete CPUs. Underlying this capability is a matching release of device drivers, which with 8.5 become “thread-aware”. Using Labview, NI says, you are shielded from much of the detailed work of setting up and closing down threads, organising communication synchronisation between threads, and handling multithreaded debug. This, broadly speaking, is task-parallelism: also handled in release 8.5 is data parallelism: when multiple elements of a data set are available at the same time, in the Labview graphical environment you can set up multiple instances of, say, a signal processing block to operate on several data elements at the same time. In 8.5, these become real processing threads running in parallel on separate cores. If the target system is FPGA-based, Labview can invoke multiple instances of signal processing blocks, and organise the data flow through them. Pipelined processing structures with data flows overlapped in time are also handled in release 8.5. The company also lists a number of other updates in this release of Labview: there is support for Freescale ColdFire processors and an evaluation bundle with QNX operating system support; updated project file management tools and graphical code merging for team-based development; tools to optimise memory-management performance with a detailed level of control; and optimised BLAS linear algebra libraries. Video system design is enhanced with improved edge detection for image processing and optimised algorithms for various demodulators and channel coding schemes: design and simulation tools for control systems now include Model Predictive Control (MPC) and analytical PID controller design. For existing supported Real-Time Labview customers, most of these features are included as part of the 8.5 release; the exception is the Statechart design module, which is a new completely new product.