Xilinx SDAccel and NI LabVIEW Communications System Design Suite win a pair of EETimes/EDN ACE Ultimate Product Awards

Last night, EETimes and EDN presented a number of ACE Awards including twelve “Ultimate Product” awards. The Xilinx SDAccel Development Environment for C, C++, and OpenCL won the Ultimate Product Award in the Development Kits category.
EETimes/EDN 2015 ACE Awards
From the SDAccel entry form:
“The SDAccel development environment for OpenCL, C, and C++, enables up to 25X better performance/watt for data center application acceleration leveraging FPGAs and combines the industry’s first architecturally optimizing compiler supporting any combination of OpenCL, C, and C++ kernels, along with libraries, development boards, and the first complete CPU/GPU-like development and run-time experience for FPGAs. SDAccel streamlines the development and deployment of critical algorithms such as Deep Neural Networks used in machine learning.
SDAccel includes the industry’s first architecturally optimizing compiler that makes efficient use of on-chip FPGA resources along with a familiar software-development flow based on an Eclipse integrated design environment (IDE) for code development, profiling and debugging, providing a CPU/GPU-like work environment.
SDAccel leverages Xilinx’s dynamically reconfigurable technology to enable accelerator kernels optimized for different applications to be swapped in and out on the fly. The applications can have multiple kernels swapped in and out of the FPGA during run-time without disrupting the interface between the server CPU and the FPGA for nonstop application acceleration. This functionality is ideal for swapping applications during peak loading periods.”
(Note: For more information about the Xilinx SDAccel design environment, see “CPU/GPU-like software development environment for OpenCL, C, C++ delivers FPGA-based app acceleration with 25x better performance/W,” “and “Latest SDAccel release adds 4 new hardware dev platforms, 4 new libraries, 6 new design services firms.”)
Vinay Singh accepts an ACE Award for the SDAccel design environment from Max Maxfield
The LabVIEW Communications System Design Suite from National Instruments (NI) won the ACE Ultimate Product Award in the Software category. NI’s LabVIEW Communications System Design Suite combines software defined radio (SDR) hardware with a comprehensive, unified software design flow to help engineers prototype 5G systems. The package includes built-in application frameworks for WiFi and LTE that enable wireless developers to focus on creating specific components based on existing standards rather than designing new algorithms from scratch.
The LabView Communications System Design software is coupled with the company’s USRP software-defined radio development platform for 5G research, which is based on a Xilinx Kintex-7 All Programmable FPGA. Wireless engineers can use the NI USRP RIO and the NI LabVIEW Communications System Design software to rapidly prototype real-time wireless communications systems and test them under real-world conditions.
(Note: For more information about the NI LabVIEW Communications System Design Suite, see “LabVIEW Communications System Design Suite combines SDR hardware with a unified software design flow for 5G development.”)
Congratulations to all of the talented developers from both National Instruments and Xilinx who created these award-winning products.
 

Similar Messages

  • Does the USRP SDR require LabVIEW Communications?

    I've recently installed LabVIEW 2013 on my machine, along with a whole bunch of toolkits:
    LabVIEW 2013 English
    VI Package Manager
    LabVIEW 2013 Control Design and Simulation Module
    LabVIEW 2013 Datalogging and Supervisory Control Module
    LabVIEW 2013 MathScript RT Module
    NI LabVIEW 2013 LEGO(R) MINDSTORMS(R) NXT Module (English)
    NI Vision Development Module 2013
    LabVIEW 2013 FPGA Module (English)
    Xilinx Compilation Tools 14.4
    LabVIEW 2013 Real-Time Module (English)
    LabVIEW 2013 Touch Panel Module
    LabVIEW 2013 Robotics Module
    NI SignalExpress 2013
    LabVIEW 2013 Sound and Vibration Measurement Suite
    LabVIEW 2013 Statechart Module
    LabVIEW 2013 for myRIO Module
    NI Real-Time Execution Trace Toolkit 2013
    LabVIEW 2013 System Identification Toolkit
    LabVIEW 2013 Digital Filter Design Toolkit
    LabVIEW Modulation Toolkit 4.3.4
    LabVIEW 2013 VI Analyzer Toolkit
    LabVIEW 2013 Database Connectivity Toolkit
    LabVIEW 2013 Report Generation Toolkit for Microsoft Office
    LabVIEW Spectral Measurements Toolkit 2.6.4
    LabVIEW 2013 Advanced Signal Processing Toolkit
    LabVIEW 2013 PID and Fuzzy Logic Toolkit
    LabVIEW 2013 Adaptive Filter Toolkit
    LabVIEW 2013 DataFinder Toolkit
    LabVIEW 2013 Desktop Execution Trace Toolkit
    LabVIEW 2013 Multicore Analysis and Sparse Matrix Toolkit
    LabVIEW 2013 Electrical Power Suite
    LabVIEW 2013 GPU Analysis Toolkit
    LabVIEW 2013 Biomedical Toolkit
    LabVIEW 2013 NI SoftMotion Module
    NI Motion Assistant 2013
    NI Vision Builder for Automated Inspection 2012 SP1
    NI DIAdem Professional 2012 SP1 (English)
    LabWindows/CVI 2013 Development System
    LabWindows/CVI 2013 Real-Time Module
    LabWindows/CVI Spectral Measurements Toolkit 2.6.4
    LabWindows/CVI Spectral Measurements Runtime 2.6.4
    LabWindows/CVI SQL Toolkit 2.2
    LabWindows/CVI Signal Processing Toolkit 7.0.2
    LabWindows/CVI PID Control Toolkit 2.1
    LabWindows/CVI Execution Profiler 1.0
    Measurement Studio 2013 Enterprise Edition for Visual Studio 2012
    NI General Security Patch Q2 2013
    NI TestStand 2013
    NI ELVISmx 4.5
    NI DAQmx 9.7.5
    Xilinx Compilation Tools 10.1 (Requires Additional Xilinx Compilation Tools DVD)
    NI Device Drivers - February 2013
    I wanted to follow this tutorial with the USRP 2932, which will arrive soon, but I later found out that I don't seem to have any of the LabVIEW Communications. Will not having those prevent me from using the USRP radio? If not, then are there any restrictions on what I can do with the radio without Communications?

    Hi BreadLB,
    The link to the tutorial that you posted is based on LabVIEW Communications System Design Suite, a new software environment designed to accelerate algorithm prototyping and over the air testing.  It is a completely separate and independent environment from LabVIEW.  See my post here for more details.  You can also download a free 30 day evaluation copy here.  Your hardware is supported with both LabVIEW and LabVIEW Communications.
    The NI 2932 is a network based USRP, and it has a small onboard FPGA.  Because of that, the FPGA on that specific product is not a LabVIEW FPGA target.  The NI 294x/5x family has a large Kintex 7 FPGA and can be programmed using LabVIEW FPGA or LabVIEW Communications, like in the tutorial that you posted.  The NI 2932 can be used with your host PC and LabVIEW for a wide variety of applications.  Unfortunately the tutorial that you linked in your post requires the NI 294x/5x hardware and LabVIEW Communications.  If you have questions about a specific application for your 2932, please post more details and we would be happy to help.

  • Load error in LabVIEW communications

    Hello Everyone,
    I am using LabVIEW Communications System Design suite. I connected USRP 2953R using PCI interface to the laptop. 802.11 WLAN framework is being used for the project. I had to check channel estiomation using antennas and it was done. Today, I am stuck with a load error while opening the project. It is saying that the project includes following featrues thta are not supported in this version of LabVIEW-
    LabVIEW FPGA SystemDesigner plugin
    USRP SystemDesigner plugin
    FlexRIO SystemDesigner plugin
    LabVIEW FPGA
    I attached a screenshot of it. Please have a look and help me in sorting this. 
    Best Regards,
    Ramya
     

    Hi Everyone,
    This was a problem due to communications suite license. I contacted the sales department and they gave me an activation key to extend the license(as I am using the suite on a trial period).  There was a loading error because LabVIEW communications software was loaded instead of Suite which is not suitable for the respective plugins. The issue is resolved when I used the activation key to reinitiate LabVIEW suite. And I thank everyone who tried to help me. 
    Best Regards,
    Ramya

  • Welcome to the LabVIEW Communications Discussion Forum!

    All,
    Welcome to the discussion forum for LabVIEW Communications System Design Suite! This is an open forum for users of LabVIEW Communications to share their product related questions and knowledge with each other. Like our other NI discussion forums, NI engineers will be active in helping to resolve questions and provide feedback.
    For getting started materials, tutorials and example code, try visiting the SDR Community. 
    Nick C | Staff LabVIEW Platform Product Support Engineer | National Instruments

    You are still posting in the wrong forum and in an unrelated thread. This forum here is about software defined radio (SDR).
    LabVIEW Champion . Do more with less code and in less time .

  • Fuzzy System Designer in Labview 8.5

    I am using LabView 8.5. My project requires me to use fuzzy logic. In the Labview manual, stated that, I need to click to Tools > Control Design and Simulation > Fuzzy System Designer to launch the Fuzzy System Designer. However, in LabView 8.5, I follwed the steps but it did not lead to Fuzzy System Designer as the intruction mentioned in the manual. How to find it?

    In addition, I strongly recommend to update your LabVIEW version to 2009 or later. We did a major improvement to the toolkit at that version.
    Barp - Control and Simulation Group - LabVIEW R&D - National Instruments

  • MATLAB and LabVIEW Communication Optimal Performance

    I have tried my own code,  searched through forums and examples to try and figure out best method to communicate between LabVIEW and MATLAB.  Most of the information I found was over a year old and I was wondering if there was a better current solution.  My goal is to work in LabVIEW to collect the data, process in MATLAB and return the results to LabVIEW.  I have encountered some difficulty in my search and before I delve even further in to one in particular, I was wondering if anybody had an optimal solution with this communication protocol or solutions to my errors encountered thus far.
    I have looked at the following methods.
    1)TCP/IP and a very good example found here: http://www.mathworks.com/matlabcentral/fileexchange/11802-matlab-tcp-ip-code-example
    When I try to adjust even the example and communicate for my own purposes I get the following errors
    Error 63 if MATLAB server not running
    Error 66 occurs if the TCP/IP connection is closed by the peer. In this case, Windows notices that no data is returned within a reasonable time, and it closes the TCP/IP connection. When LabVIEW attempts to communicate after Windows closes the connection, error 66 is the result. 
    However, the example itself works perfectly and does not get these errors
    2)Math Script Node, works but the post below states that MATLAB Node is faster.
    "computing fft of a 1024x1024 matrix ten times (attached code). Result is that Matlab node version takes 0.5s versus 1.6s for Mathscript node version."
     http://forums.ni.com/t5/LabVIEW/Why-are-mathscript-performances-much-below-matlab-s/m-p/2369760/high...
    3) MATLAB Node, which states it uses ActiveX Technology seemingly works well, but loses time for data transfer.
    4) Trying to use the ActiveX functions or if there is other Automation potential.
    5)Other solutions that I have not found that might be better suited.
    Thank you for any help or suggestions in advance. 

    Barp and Mikeporter,
    Thank you for your assistance:
    The reason I need to do the processing in matlab is as you mentioned the processing script is coming from another person who has already developed it in matlab.  I almost have to treat it as a black box.
    The TCP/IP method was interesting is that none of the errors show up when I run the example but if I try to modify it in a new VI I get the errors.
    I have attached a simple program that just has a basic butterworth low pass filter I am trying to confirm if it works in the Matlab node.  I have done other simple codes which work, and this one does not seem the implement  the appropriate filter.  The LabVIEW signal and LabVIEW filter seem to work at the default values (but not if I change sampling rate) for the Simulation of signal, Matlab signal and Matlab filter work, but the Labview signal processed in Matlab is not working...
    Ideally it would be bandpass filtered (0.1-30) at sampling rate of 256 Hz and further processed from there, but I can't even seem to get low pass to work in the matlab to labview communication.
    Any help would be greatly appreciated.  Once I have that working I will have more of an idea of the constraints of the actual processing Matlab Code I will be using.
    Thank you again.
    -cj18
    Attachments:
    labview_matlab_filter.vi ‏70 KB

  • More from Adam Taylor about Zynq and SDSoC: "Zynq is a device every embedded system designer should be familiar with"

    Adam Taylor publishes the MicroZed Chronicles weekly in the Xcell Daily blog so you are likely familiar with his writing. Adam has just published an article about SDSoC and Zynq titled “High-level synthesis comes of age with SDSoC” on the Embedded.com Web site. Here’s his motivation for writing this article:
    “…Zynq is a device every embedded system designer should be familiar with and considering for their application. At its heart the Zynq is not a FPGA with embedded processors -- like previous generations of FPGA with Power PCs -- but a true embedded processor with very flexible interfacing capabilities (DDR, CAN, UART, USB, Giga Bit Ethernet, SPI and I2C to name a few). What separates the Zynq from other embedded processors is the attached programmable logic, and with SDSoC embedded system developers can exploit this pretty simply…
    SDSoC takes the eclipse front end, Vivado HLS, Vivado and a lot of behind the scenes intelligence to create seamlessly the option to accelerate software functions in the attached programmable logic of the device.”
    What follows is a simple explanation of what SDSoC brings to the party from a design engineer’s perspective.
    Recommended reading.
     

    xisal wrote:
    Take a look into /etc/hal/fdi/policy/10-keymap.fdi. This works with portuguese layout:
    <snip>
    The file did not exist, so I created it and changed "pt" to "it". Thanks a bunch, that fixed it!
    Try SMPlayer.
    Ah, I'd rather not involve Qt. Besides, isn't SMPlayer simply a frontend to Mplayer (who already has GMplayer integrated into it, IIRC)?
    Mikko777 wrote:
    Why would you want to use 75Hz with lcd display?
    Does it make a difference?
    On my monitor, from my point of view, it appears to make a difference. It's that simple
    azleifel wrote:In gmplayer Preferences -> Audio -> (assuming alsa selected) -> Configure driver and change the mixer channel to something other than PCM, e.g. Master.
    For all the three combos, I have "driver default" selected. The other option is "default"; I tried to manually type "Master" into the mixer channel field, but then gmplayer's windows and my Xfce taskbar started blinking, so I knew I had just "crossed streams".
    Regarding NVIDIA X Server Settings, running "usr/bin/nvidia-settings --load-config-only" at login is the only way to apply the settings "automatically".
    I've slapped that on my ~/.xinitrc before "exec startxfce4". Thanks in advance, going to test it now!
    About the refresh and non-decorated windows issues (which *appears* to be solved after I've wiped the xfce-session cache), I've been thinking: could they somehow be related the login manager I've chosen, SLIM?
    P.S. New question: is there any way to enable the ALT+num126 for ~ keyboard behaviour I'm used to under M$ environments?
    Last edited by Akaraxle (2009-01-03 09:43:02)

  • I would like to know whether its possible to start running a vi automatically without user interaction after a system has booted up and launched labview?

    I would like to know whether its possible to start running a particular vi automatically without user interaction after a system has booted up and launched labview?

    > I would like to know whether its possible to start running a vi
    > automatically without user interaction after a system has booted up
    > and launched labview?
    >
    > I would like to know whether its possible to start running a
    > particular vi automatically without user interaction after a system
    > has booted up and launched labview?
    >
    LV doesn't have any sort of Startup folder as we are a little concerned
    about the security issues this brings about. You can specify VIs on the
    command line for LV to open. And VIs can be set to run when opened.
    Combining these features, you wind up using the system's Startup folder,
    placing either a batch file or a shortcut to LV with the command line
    options added to list out the VIs, and finally, set the VI properties
    so
    that the VIs run when opened.
    Greg McKaskle

  • LabView Control System Engineer Job Opening - Seattle

    LabView Control System Engineer Job Opening - Seattle
    Seattle Safety is looking for a qualified individual to fill an
    opening for Software Controls Engineer.  Seattle Safety designs,
    manufactures, and installs advanced crash test sled systems that are
    used in automotive and aeronautical industries.  The duties of the
    Controls Engineer include:
    Maintain existing control software code base, written in LabVIEW (including the Real-Time Module).
    Improve existing software based on requirements and requests from customers and colleagues.
    Troubleshoot and repair any functional software bugs that may arise.
    Continuously investigate opportunities for system improvement through new or alternative hardware or software approaches.
    Support installations of crash test equipment at on-site locations worldwide.
    Provide technical support for team members locally and abroad
    in subject matters concerning performance, installation, and
    maintenance of software and data acquisition hardware.
    Maintain professional relationships with suppliers and vendors in order to keep up with industry developments.
    Furthermore, the ideal candidate would possess the following skills:
    Beginner-to-intermediate knowledge of LabVIEW.
    Passing understanding of binary logic.
    Familiarity with at least one low-level programming language (Assembly, C, COBOL, etc)
    Ability to analyze empirical data against theoretical predictions to enhance and improve mathematical model of system.
    Familiarity with data acquisition concepts and hardware.
    Ability to troubleshoot electrical and electronic systems at the module and equipment level.
    Discipline and organization with respect to software
    maintenance and version management.  Experience with source
    configuration management tools a plus (CVS, ClearCase, Perforce, etc.)
    Experience with sophisticated high-speed feedback control systems
    General skills in areas such as frequency domain analysis,
    systems analysis, digital filtering, and both linear and non-linear
    signal processing.
    BSCS, BSEE, or BSCmpE are preferred but not required depending on experience.
    Ability to work both alone and with colleagues to solve problems and to weigh the merits of differing approaches.
    Pay is commensurate with skills and qualifications of the applicant.
    Contact:
    Seattle Safety
    John Covey
    (253)395-4321
    822 3rd Ave S
    Kent, WA  98032
    [email protected]

    Dear Sir / Madam,
    I am an experienced engineering professional skilled in Post Silicon Validation by Automating using LabVIEW, Power Measurements, Jitter Measurement & Analysis, Audio Characterizations, Silicon Validation Test Cases, Multi-Channel Data acquisition and Triggering using NI DAQ Cards, Control Systems, Serial Communications using VISA and Serial I/O Interface, Code Native Interfaces, Call Library functions to interface with third party and custom dlls, ATMEL and PIC Micro Controller programming, Temperature Controllers like Honeywell, ESPEC-641, TestEquity 115, Hand held terminal programming to drive servo motors, C/C++/VB Programming for developing embedded applications.
    Good experience on Windows API, protocol implementations, ARM11 & ARM7TDMI on-chip programming using Register Map and Pinout Specs using C/C++ Metrowerks Code Warrior and MULTI-ICE for ARM Debugger.
    Looking for L1/H1 Job
    Thank you for your time and consideration.
    Please find an attachment of my resume in MS-Word format.
    Sincerely yours,
    K.Sowjanya. B.Tech
    Message Edited by Support on 04-04-2008 08:39 AM

  • High-Level LabView Control System Engineer Job Opening - Seattle

    High-Level LabView Control System Engineer Job Opening - Seattle
    Seattle Safety is looking for a qualified individual to fill an opening for Senior Software Controls Engineer.  Seattle Safety designs, manufactures, and installs advanced crash test sled systems that are used in automotive and aeronautical industries.  The duties of the Controls Engineer include:
    Maintain existing control software code base, written in LabVIEW (including the Real-Time Module).
    Improve existing software based on requirements and requests from customers and colleagues.
    Troubleshoot and repair any functional software bugs that may arise.
    Continuously investigate opportunities for system improvement through new or alternative hardware or software approaches.
    Support installations of crash test equipment at on-site locations worldwide.
    Provide technical support for team members locally and abroad in subject matters concerning performance, installation, and maintenance of software and data acquisition hardware.
    Maintain professional relationships with suppliers and vendors in order to keep up with industry developments.
    Furthermore, the ideal candidate would possess the following skills:
    Intermediate-to-advanced knowledge of LabVIEW.
    Ability to analyze empirical data against theoretical predictions to enhance and improve mathematical model of system.
    Familiarity with data acquisition concepts and hardware.
    Ability to troubleshoot electrical and electronic systems at the module and equipment level.
    Discipline and organization with respect to software maintenance and version management.  Experience with source configuration management tools a plus (CVS, ClearCase, Perforce, etc.)
    Experience with sophisticated high-speed feedback control systems
    General skills in areas such as frequency domain analysis, systems analysis, digital filtering, and both linear and non-linear signal processing.
    BSEE, BSME or BS Physics may be a good fit, but not limited to these areas.
    Ability to work both alone and with colleagues to solve problems and to weigh the merits of differing approaches.
    Pay is commensurate with skills and qualifications of the applicant.
    Contact:
    Seattle Safety
    Tom Wittmann
    (253)395-4321
    1222 6th Av N
    Kent, WA  98032
    [email protected]
    Attachments:
    ServoSled Brochure.pdf ‏1215 KB

    Dear Sir / Madam,
    I am an experienced engineering professional skilled in Post Silicon Validation by Automating using LabVIEW, Power Measurements, Jitter Measurement & Analysis, Audio Characterizations, Silicon Validation Test Cases, Multi-Channel Data acquisition and Triggering using NI DAQ Cards, Control Systems, Serial Communications using VISA and Serial I/O Interface, Code Native Interfaces, Call Library functions to interface with third party and custom dlls, ATMEL and PIC Micro Controller programming, Temperature Controllers like Honeywell, ESPEC-641, TestEquity 115, Hand held terminal programming to drive servo motors, C/C++/VB Programming for developing embedded applications.
    Good experience on Windows API, protocol implementations, ARM11 & ARM7TDMI on-chip programming using Register Map and Pinout Specs using C/C++ Metrowerks Code Warrior and MULTI-ICE for ARM Debugger.
    Looking for L1/H1 Job
    Thank you for your time and consideration.
    Please find an attachment of my resume in MS-Word format.
    Sincerely yours,
    K.Sowjanya. B.Tech
    Message Edited by Support on 04-04-2008 08:39 AM

  • .vi files access using Labview Communication Suite

    Can't I access labview files from Comm Design suite?
    What I see is it has got all the functionality I would be needing to program a USRP which I other wise use to do with Labview.  Why .vi files are not being supported by cmm suite?
    2. If I want to design a system comm suite is enough or I still need to buy Labview Package?

    Hello Wired_,
    With regards to your second question, LabVIEW Communications will allow you to design, develop, and test your communication algorithms.  With this software, you will not be able to build your application into a executable format outside of LabVIEW Communications.
    Regards,

  • 5G Wireless Brings Ubiquitous Connectivity: BEEcube's BEE7 and NanoBEE 5G Emulation Systems

     
    By David Squires, Vice President of Business Development, BEEcube, A National Instruments Company
    As wireless operators continue their relentless march to be the first to provide consumers with new services and devices, additional bandwidth and service plans that yield higher profits, infrastructure companies are also racing to field the 5G equipment that will form the foundation of the next generation of wireless communications. To enable this 5G wireless infrastructure, BEEcube (recently acquired by National Instruments) leveraged Xilinx FPGAs and Zynq-7000 All Programmable SoCs to provide 5G equipment manufacturers with a new emulation system as well as a mobile-handset emulator. The BEE7 and nanoBEE are enabling design teams to be innovative and productive so they can bring 5G technologies to market ahead of the competition.
    BEE7 PLATFORM ARCHITECTURE: The BEE7 platform is a state-of-the-art architecture that BEEcube designed from the ground up to meet the above requirements of next-generation communications systems. The amount of data that must be moved quickly and efficiently is enormous. The heart of the BEE7 prototyping system is the Xilinx XC7VX690T. This device combines 80 serial transceivers with 3,600 DSP slices, making the 690T a world-class engine for advanced wireless applications (both to prototype and for early field trials).
     

  • Is this roughly how the labVIEW Execution Systems work?

    I've not taken a class in OS design, so I don't know the strategies used to implement multitasking, preemptive or cooperative. The description below is a rough guess.
    LabVIEW compiles Vis to execute within its own multitasking execution environment. This execution environment is composed of 6 execution systems. Each execution system has 5 priority queues (say priorities 0->4). Vis are compiled to one or more tasks which are posted for execution in these queues.
    An execution system may either have multiple threads assigned to execute tasks from each priority queue, or may have a single thread executing all tasks from all priority queues. The thread priorities associated with a multithreaded execution system are assigned according to the queue that they service. There are therefore 5 available thread priority levels, one for each of the 5 priority level queues.
    In addition to the execution queues, there are additional queues that are associated with tasks suspended in various wait states. (I don't know whether there are also threads associated with these queues. It seems there is.)
    According to app. note 114, the default execution environment provides 1 execution system with 1 thread having a priority level of 1, and 5 execution systems with 10 prioritized threads, 2 threads per priority queue. NI has titled the single threaded execution system "user interface" and also given names to the other 5. Here they will be called either "user interface" or "other".
    The "user interface" system is responsible for all GUI actions. It monitors the keyboard and mouse, as well as drawing the controls. It is also used to execute non-thread-safe tasks; tasks whose shared objects are not thread mutex protected.
    Vis are composed of a front panel and diagram. The front panel provides an interface between the vi diagram, the user, and the calling vi. The diagram provides programmatic data flow between various nodes and is compiled into one or more machine coded tasks. In addition to it own tasks, a diagram may also call other vis. A vi that calls another vi does not actually programmatically branch to that vi. Rather, in most cases the call to another vi posts the tasks associated with the subvi to the back of one of the labVIEW execution system�s queues.
    If a vi is non-reentrant, its tasks cannot run simultaneously on multiple threads. This implies a mutex like construction around the vi call to insure only one execution system is executing the vi. It doesn�t really matter where or how this happens, but somehow labVIEW has to protect an asynchronous vi from simultaneous execution, somehow that has to be performed without blocking an execution queue, and somehow a mutex suspended vi has to be returned to the execution queue when the mutex is freed. I assume this to be a strictly labVIEW mutex and does not involve the OS. If a vi is reentrant, it can be posted/ran multiple times simultaneously. If a vi is a subroutine, its task (I think there is always only one) will be posted to the front of the caller's queue rather than at the back of the queue (It actually probably never gets posted but is simply mutex tested at the call.) A reentrant-subroutine vi may be directly linked to its caller since it has no restrictions. (Whether in fact labVIEW does this, I don�t know. In any event, it would seem in general vis that can be identified as reentrant should be specified as such to avoid the overhead of mutexing. This would include vis that wrap reentrant dll calls.)
    The execution queue to which a vi's tasks are posted depends upon the vi execution settings and the caller's execution priority. If the caller's execution priority is less than or equal the callee's execution settings, then the callee's tasks are posted to the back of the callee's specified execution queue. If the caller's execution priority is greater than the callee's specifications, then the callee's tasks are posted to the back of the caller's queue. Under most conditions, the vi execution setting is set to "same as caller" in which case the callee�s tasks are always posted to the back of the caller's execution queue. This applies to cases where two vis are set to run either in the other execution systems or two vis are set to run in the user interface execution system. (It�s not clear what happens when one vi is in the �user interface� system and the other is not. If the rule is followed by thread priority, any background tasks in the �other� systems will be moved to the user interface system. Normal task in the �other� systems called by a vi in the �user interface� system will execute in their own systems and vice versa. And �user interface� vis will execute in the caller�s �other� system if the caller has a priority greater than normal.)
    Additionally, certain nodes must execute in the "user interface" execution system because their operations are not thread-safe. While the above generally specifies where a task will begin and end execution, a non-thread safe node can move a task to the �user interface� system. The task will continue to execute there until some unspecified event moves it back to its original execution system. Note, other task associated to the vi will be unaffected and will continue to execute in the original system.
    Normally, tasks associated with a diagram run in one of the �other� execution systems. The tasks associated with drawing the front panel and monitoring user input always execute in the user interface execution system. Changes made by a diagram to it own front panel are buffered (the diagram has its own copy of the data, the front panel has its own copy of the data, and there seems to be some kind of exchange buffer that is mutexed), and the front panel update is posted as a task to the user interface execution system. Front panel objects also have the advanced option of being updated sequentially; presumably this means the diagram task that modifies the front panel will be moved to the user interface execution system as well. What this does to the data exchanged configuration between the front panel and diagram is unclear as presumably both the front panel and diagram are executing in the same thread and the mutex and buffer would seem to be redundant. While the above is true for a control value it is not clear whether this is also true for the control properties. Since a referenced property node can only occur on the local diagram, it is not clear it forces the local diagram to execute in the user interface system or whether they too are buffered and mutexed with the front panel.
    If I were to hazard a guess, I would say that only the control values are buffered and mutexed. The control properties belong exclusively to the front panel and any changes made to them require execution in the �user interface� system. If diagram merely reads them, it probably doesn�t suffer a context switch.
    Other vis can also modify the data structure defining the control appearance and values remotely using un-reference property nodes. These nodes are required to run in the user interface system because the operation is not thread-safe and apparently the diagram-front-panel mutex is specifically between the user interface execution system and the local diagram thread. Relative to the local diagram, remote changes by other vis would appear to be user entries.
    It is not clear how front panels work with reentrant vis. Apparently every instance gets its own copy of the front panel values. If all front panel data structures were unique to an instance, and if I could get a vi reference to an instance of a reentrant vi, I could open multiple front panels, each displaying its own unique data. It might be handy, sort of like opening multiple Word documents, but I don�t think that it�s available.
    A note: It is said that the front panel data is not loaded unless the front panel is opened. Obviously the attributes required to draw an object are not required, nor the buffer that interfaces with the user. This rule doesn�t apply though that if property references are made to front panel objects, and/or local variables are used. In those cases at least part of the front panel data has to be present. Furthermore, since all data is available via a control reference, if used, the control�s entire data structure must be present.
    I use the vi server but haven�t really explored it yet, nor vi reference nodes, but obviously they too make modifications to unique data structures and hence are not thread-safe. And in general, any node that accesses a shared object is required to run in the user interface thread to protect the data associated with the object. LabVIEW, does not generally create OS level thread mutexes to protect objects probably because it becomes to cumbersome... Only a guess...
    Considering the extra overhead of dealing with preemptive threading, I�m wondering if my well-tuned single threaded application in LV4.1 won�t out perform my well-tuned multithreaded application in LV6.0, given a single processor environment�
    Please modify those parts that require it.
    Thanks�
    Kind Regards,
    Eric

    Ben,
    There are two types of memory which would be of concern. There is temporary and persistent. Generally, if a reentrant vi has persistent memory requirements, then it is being used specifically to retain those values at every instance. More generally, reentrant code requires no persistent memory. It is passed all the information it needs to perform its function, and nothing is retained. For this type of reentrant vi, memory concern to which you refer could become important if the vis are using several MBytes of temporary storage for intermediate results. In that case, as you could have several copies executing at once, your temporary storage requirements have multiplied by the number of simultaneous copies executing. Your max memory use is going to rise, and as labview allocates memory rather independently and freely, the memory use of making them reentrant might be a bit of a surprise.
    On the other hand, the whole idea of preemtive threading is to give those tasks which require execution in a timely fashion the ability to do so regardless of what other tasks might be doing. We are, after all, suffering the computational overhead of multithreading to accomplish this. If memory requirements are going to defeat the original objective, then we really are traversing a circle.
    Anyway, as Greg has advised, threads are supposed to be used judiciously. It isn't as though your going to have all 51 threads up at the same time. In general I think, overall coding stategy should be to minimize the number of threads while protecting those tasks that absolutely require timely execution.
    In that sense, it would have been nice if NI had retained two single threaded systems, one for the GUI and one for the GUI interface diagrams. I've noticed that control drawing is somewhat slower under LV6.0 than LV4.1. I cannot, for example, make a spreadsheet scroll smoothly anymore, even using buffered graphics. This makes me wonder how many of my open front panel diagrams are actually running on the GUI thread.
    And, I wonder if threads go to sleep when not in use, for example, on a wait, or wait multiple node. My high priority thread doesn't do a lot of work, but the work that it does is critical. I don't know what it's doing the rest of the time. From some of Greg's comments, my impression is it in some kind of idle mode: waking up and sleeping, waking up and sleeping,..., waking up, doing something and sleeping... etc. I suppose I should try to test this.
    Anyway that's all an aside...
    With regard to memory, your right, there are no free lunches... Thanks for reminding me. If I try this, I might be dismayed by the additional memory use, but I won't be shocked.
    Kind Regards,
    Eric

  • Sr. Electrical Engineer w/ 12 yrs experince in LV & 25+ years in DAQ systems design looking for new opportunities in Colorado

    Multifaceted, driven and highly motivated Sr. Electrical Engineer with extensive experience in hardware design and development, LabVIEW software development, project management, and controls systems seeks exciting opportunity as Design Engineer, Engineering Manager, or Test Engineer. Interested in opportunities designing BrushlessDC motors, robotics, controls systems, and motion systems in a Research and Development or production test environment. Also interested in development of computerized test equipment.

    First attempt failed download resume
    Attachments:
    John_Freeman1.doc ‏52 KB

  • IS CLIP supported by Xilinx Spartan3E driver for LabVIEW 8.6?

    IS CLIP supported by Xilinx Spartan3E driver for LabVIEW 8.6?
    For HDL interface node, the enable chain and multi clock domain is difficult to understand
    Solved!
    Go to Solution.

    Reidl,
    Thank you for your answer.  How do I uninstall my current version?  I have looked in "Add or Remove Programs," but I don't see anything under "Xilinx" or "Spartan."  I do see an entry for "National Instruments Software."  However, when I click "Change / Remove" I don't see any entries for the Spartan Board.
    I tried running the installation program, and I received the following message:
    The NI LabVIEW FPGA Support for Spartan-3E 1.1.0 installation has failed with the following error.
    You have a higher version of NI LabVIEW FPGA Support for Spartan-3E in your system.  You must uninstall it before installing this again.
    What is the latest version number?  How do I check what version I currently have?
    Thanks,
    James Carroll 

Maybe you are looking for

  • MOVED: X99S Gaming 7 No Gbit

    This topic has been moved to GAMING Motherboards. https://forum-en.msi.com/index.php?topic=253995.0

  • Checkboxes in PDF from Excel

    Windows XP; Acrobat XI Pro (11.0.06); Excel 2007. I created an Excel sheet (xlsx) that contains a checkbox at the beginning of each line.  I can check these boxes in Excel. When I create a PDF from it, the checkboxes are there, but I cannot check the

  • Howto Reinstall Win XP in an existing partition?

    Hi everybody, I want to reinstall Win xp but I have different partitions in the HD,because I have another OS installed, but the recovery cd will format the entire disk erasing my data. I know that there's the possibility to reinstall Win in an existi

  • Is it OK to cache home stubs in 6.1?

    I heard that caching home stubs may cause hot deployment issues in WebLogic server. Is this the case for 6.1? What about remote stubs (i.e. for a stateless session bean)? Thanks, Bob

  • IMovie '09 Corrupt Files

    We've noticed periodically that iMovie '09 will save as a corrupt file in the middle of a project and then we can't work any longer.  Has anyone else experienced this and if so, what have you done to resolve the issue?