Improving the Performance of Your

Similar documents
EET 310 Programming Tools

LabVIEW Day 6: Saving Files and Making Sub vis

and Certification What Does It Take To Get Certified? Steven Hoenig NJ Business Unit Manager

Introduction to LabVIEW

Software Engineering Best Practices. Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer

Storing Measurement Data

LabVIEW DSP Test Integration Toolkit for TI DSP

DSP Laboratory: Analog to Digital and Digital to Analog Conversion

LabVIEW Report Generation Toolkit for Microsoft Office User Guide

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

Manage Software Development in LabVIEW with Professional Tools

Introduction to LabVIEW Design Patterns

Best Practises for LabVIEW FPGA Design Flow. uk.ni.com ireland.ni.com

HPC performance applications on Virtual Clusters

Multicore Programming with LabVIEW Technical Resource Guide

Data Acquisition Using NI-DAQmx

Getting Started with the LabVIEW Mobile Module Version 2009

Unit two is about the components for cloud computing.

LabVIEW Advanced Programming Techniques

LabVIEW Day 1 Basics. Vern Lindberg. 1 The Look of LabVIEW

GPU File System Encryption Kartik Kulkarni and Eugene Linkov

Medical Device Design: Shorten Prototype and Deployment Time with NI Tools. NI Technical Symposium 2008

PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0

LabVIEW Lesson 5 Clusters

Introduction to the NI Real-Time Hypervisor

Objectives. At the end of this chapter students should be able to:

Lab View with crio Tutorial. Control System Design Feb. 14, 2006

Buffer Management 5. Buffer Management

Practical Performance Understanding the Performance of Your Application

LabVIEW Report Generation Toolkit for Microsoft Office

How To Develop An Iterio Data Acquisition System For A Frustreo (Farc) (Iterio) (Fcfc) (For Aterio (Fpc) (Orterio).Org) (Ater

Exercise 10: Basic LabVIEW Programming

MCTS Guide to Microsoft Windows 7. Chapter 10 Performance Tuning

Software Synthesis from Dataflow Models for G and LabVIEW

Using Microsoft Performance Monitor. Guide

LABVIEW DSP TEST TOOLKIT FOR TI DSP

User's Guide - Beta 1 Draft

Lab 3: Introduction to Data Acquisition Cards

Operating System and Process Monitoring Tools

Holly Cummins IBM Hursley Labs. Java performance not so scary after all

Introweb Remote Backup Client for Mac OS X User Manual. Version 3.20

Understand Performance Monitoring

Central Processing Unit Simulation Version v2.5 (July 2005) Charles André University Nice-Sophia Antipolis

Architecture of Hitachi SR-8000

Introduction to GPU hardware and to CUDA

Virtuoso and Database Scalability

User Guide to LabVIEW & APT

IQ MORE / IQ MORE Professional

Web Server (Step 1) Processes request and sends query to SQL server via ADO/OLEDB. Web Server (Step 2) Creates HTML page dynamically from record set

10CS35: Data Structures Using C

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

COSC 6374 Parallel Computation. Parallel I/O (I) I/O basics. Concept of a clusters

Sample. LabVIEW TM Core 1 Course Manual. Course Software Version 2010 August 2010 Edition Part Number B-01

Contents. 2. cttctx Performance Test Utility Server Side Plug-In Index All Rights Reserved.

Hadoop EKG: Using Heartbeats to Propagate Resource Utilization Data

Chapter 1 Computer System Overview

Improved metrics collection and correlation for the CERN cloud storage test framework

In-Memory Databases Algorithms and Data Structures on Modern Hardware. Martin Faust David Schwalb Jens Krüger Jürgen Müller

User's Guide - Beta 1 Draft

RecoveryVault Express Client User Manual

Final Project Report. Trading Platform Server

Quiz for Chapter 6 Storage and Other I/O Topics 3.10

Software Engineering for LabVIEW Applications

Chapter 2 Installing ShareScope

TRACE PERFORMANCE TESTING APPROACH. Overview. Approach. Flow. Attributes

Controlling a Dot Matrix LED Display with a Microcontroller

Java Virtual Machine: the key for accurated memory prefetching

Cell Phone Vibration Experiment

Online Backup Linux Client User Manual

Introduction to LabVIEW for Control Design & Simulation Ricardo Dunia (NI), Eric Dean (NI), and Dr. Thomas Edgar (UT)

If you re the unofficial administrator of your home or small

Hands-On: Introduction to Object-Oriented Programming in LabVIEW

Online Backup Client User Manual

University of Pennsylvania Department of Electrical and Systems Engineering Digital Audio Basics

RevoScaleR Speed and Scalability

Tech Tip: Understanding Server Memory Counters

EE8205: Embedded Computer System Electrical and Computer Engineering, Ryerson University. Multitasking ARM-Applications with uvision and RTX

Online Backup Client User Manual

Working with sections in Word

Stream Processing on GPUs Using Distributed Multimedia Middleware

NetBeans Profiler is an

Virtualization Technologies and Blackboard: The Future of Blackboard Software on Multi-Core Technologies

WINDOWS PROCESSES AND SERVICES

PERFORMANCE TUNING IN MICROSOFT SQL SERVER DBMS

System performance monitoring in RTMT

The Essentials of File Management with LabVIEW

Troubleshooting SQL Server Enterprise Geodatabase Performance Issues. Matthew Ziebarth and Ben Lin

CSC 2405: Computer Systems II

EFFICIENT EXTERNAL SORTING ON FLASH MEMORY EMBEDDED DEVICES

1. Product Information

HPC Wales Skills Academy Course Catalogue 2015

Online Backup Client User Manual Linux

Fiery E100 Color Server. Welcome

Getting Started with the LabVIEW Mobile Module

Bringing Big Data Modelling into the Hands of Domain Experts

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v Steps to Developing a QNX Program Quickstart Guide

Imaging Computing Server User Guide

Assignment One. ITN534 Network Management. Title: Report on an Integrated Network Management Product (Solar winds 2001 Engineer s Edition)

VI Performance Monitoring

Lesson Objectives. To provide a grand tour of the major operating systems components To provide coverage of basic computer system organization

Transcription:

Improving the Performance of Your NI LabVIEW Applications

Improving Performance in LabVIEW Purpose of Profiling Memory Optimization Tools Optimization

Optimization Cycle Benchmark Evaluate performance Identify problem areas Optimize Improve efficiency Improve speed

Why Should You Profile Your VIs? The 80/20 rule of software performance 80 percent of the execution time is spent in 20 percent of the code Performance improvements are most effective in the 20 percent Guessing which 20 percent is difficult

Improving Performance in LabVIEW Purpose of Profiling Memory Optimization Tools Optimization

Windows Task Manager Gives user a rough idea of whether memory or CPU is the bottleneck Can be helpful in identifying memory leaks View»Select Columns allows you to add additional stats

Perfmon Allows you to monitor Processors Disk I/O Network Tx/Rx Memory/Paging Access by typing perfmon into the Windows Run dialog

Benchmarking Code Execution Timing Template (data dep) LabVIEW Shipping Example

Benchmarking Code Execution Code Calibration Analysis Benchmark Project LabVIEW Real-Time Shipping Example

VI Profiler Timing and memory statistics for VIs Tools»Profile»Performance and Memory

Demo VI Profiling

LabVIEW Desktop Execution Trace Toolkit Detailed execution traces Thread and VI information Measurement of execution time Multiple Sessions Threads, CPU and Memory VIs

Benchmarking Summary OS Level Task Manager, Perfmon LabVIEW Level VI Profiler, Benchmark VIs VI Level LabVIEW Desktop Execution Trace Toolkit

Improving Performance in LabVIEW Purpose of Profiling Memory Optimization Tools Optimization

Panel Diagram Code VI Components Diagram compiled into machine code Data Control/indicator values Default data Block diagram constant data

VIs in Memory When a VI is loaded into memory We always load the data We load the code if it matches our platform (x86 Windows, x86 Linux, x86 Mac, PowerPC Mac) We load the panel and diagram only if we need to (for instance, we need to recompile the VI)

Panel and Diagram Data Front panel controls and indicators need their own copy of the data to display, called operate data This VI uses about 8 KB of data if the panel is open, and about 4 KB otherwise

LabVIEW Terminology Panel data is called Operate Data Controls and indicators have their own copy of the data, so that front panel editing of data does not interfere with computations in the diagram Diagram data is called Execution Data Every wire represents a buffer of data Transfer Data is used to copy between them Avoids multithreading issues

Memory Performance The following features affect the impact memory allocation has on your application: Wire Semantics and In Placeness Type coercion Passing values to subvis Shift registers Front panel indicators

Every wire is a buffer Wire Semantics Branches typically create copies

Optimizations by LabVIEW The theoretical 5 copies become 1 copy operation Copy Output is in place with input

The In Place Algorithm Determines when a copy needs to be made Weighs arrays and clusters higher than other types Algorithm runs before execution Does not know the size of an array or cluster Relies on the sequential aspects of the program Branches may require copies

Bottom Up In-place information is propagated bottom up Branched wire Copy because of increment No copies required Increments array in place

Showing Buffer Allocations

The In-Place Element Structure Allows you to explicitly modify data in place

Types of Border Nodes Array index/replace element Array split/replace subarray Unbundle/bundle Waveform unbundle/bundle Variant to/from G data Simple in place relationship Data value reference read/write

Example of In Place Optimization Operate on each element of an array of waveforms

Make the First SubVI In Place changes into

SubVI 2 Is Made In Place Changes into

SubVI 3 Is Made In Place Changes into

Final Result: Dots Are Hidden

Type Coercion Changing the data type of a wire to match the required data type Dots indicate automatic coercion Requires a copy Coercion Dot

Passing Values to SubVIs SubVI does not always have to make a copy Best when Inputs are required Inputs and outputs are not in structures Inputs and outputs are in place

Passing Values to SubVIs Parameters within structures cause unnecessary copies Move

Shift Registers Single left input always in place with right output Even better when the body is in place In Place Always In Place

Building Arrays There are a number of ways to build arrays and some are better than others Bad Reallocates array memory on every loop iteration No compile time optimization

Building Arrays There are a number of ways to build arrays and some are better than others Better Memory allocated Keep graphics at load time Values populated below the text in place and to the right.

Building Arrays There are a number of ways to build arrays and some are better than others Best Memory preallocated Indexing tunnel eliminates need for copies

Build Array Ordering Appending to the end of an array is much more efficient than prepending to the beginning If you need to insert items at the beginning, insert at the end instead and use a single Reverse Array when finished

Demo Effects of Memory Optimization

Improving Performance in LabVIEW Purpose of Optimization Profiling Tools Memory Optimization Decrease memory usage, increase speed 80/20 Rule

Improving Performance in LabVIEW Purpose of Optimization Profiling Tools Memory Optimization Windows Tools (Task Manager, perfmon) VI Profiler Real-Time Execution Trace Toolkit

Improving Performance in LabVIEW Purpose of Optimization Profiling Tools Memory Optimization Hide the dots Take advantage of in placeness

Next Steps In LabVIEW LabVIEW Help On the Web ni.com/multicore ni.com/devzone

Next Steps Visit ni.com/training Identify your current expertise level and desired level Register for appropriate courses