Jump to content

Grampa_of_Oliva_n_Eden

Members
  • Posts

    2,767
  • Joined

  • Last visited

  • Days Won

    17

Posts posted by Grampa_of_Oliva_n_Eden

  1. QUOTE (gmart @ May 6 2009, 09:40 AM)

    The trailer tease about Uhura and Kirk sure made their kiss back in the original series look like Sunday school.

    I'm not going to the movie but the Burger King comercial invoked a reboot as soon as I saw the "Kingons". My buddy commented on the comercial and I had to ask them what it was they were talking about.

    Ben

  2. QUOTE (shoneill @ May 6 2009, 07:32 AM)

    The problem lies partly in the question formulation and partly on the definition of the "right" answer.

    The certification os geared towards fuelling the NI certification program. There, you learn the "correct" answers.

    If I wanted to be nasty I'd say it reminds me of scientology.....

    Shane.

    :thumbup:

    Ben

  3. QUOTE (Gabi1 @ May 5 2009, 02:54 PM)

    ... I cannot agree more!

    those amateur engineers who thinks ...., should be shot on spot!

    Put the mouse down and slide away from the keyobard. We don't want anyone getting hurt! Have you ever tried to clean blood out of a keyboard?

    Ben

  4. QUOTE (sachsm @ May 4 2009, 09:53 AM)

    Yes, all the methods mentioned do indeed work with cRIO targets. In my system I have 2 9074 targets each with 9144 extension chassis. I am using the scan engine IO Variables which I can read programatically

    using Data Socket (DS) and then filter and scale then transfer to my version of the Current Value Table (Fancy shift register based storage) and from there the data is written to a proper NSV library which has a binding to a 'mirror' library on the windows side. From there I cannot via the DSC toolkit to my citadel database.

    Thanks sachsm!

    I think that app would qualify under the "oil and water" catagory fore getting RT (has to be done now!) and DSC (yes, yes I'll get around to it sooner or later) into the same app.

    Ben

  5. QUOTE (sachsm @ May 3 2009, 10:55 AM)

    You can also bind one library (say RT target) to a 'mirror' library on another RT or Windows target. LV 8.6 has some nice tools to

    help you bind entire libraries. You can also programmatically transfer Network Shared Variable data using Datasocket.

    can those methods be used in cRIO?

    Ben

  6. QUOTE (Gary Rubin @ May 1 2009, 11:27 AM)

    But the parallel one doesn't get nearly as big as the sequential one, because it's flushed periodically. The sequential one just keeps growing.

    I was just grasping at straws to explain the apperent interaction when they run in parallel. Calls to the OS memory manager is just a guess at how the two loops could slow each other down when run at the same time.

    Ben

  7. QUOTE (Gary Rubin @ May 1 2009, 11:12 AM)

    I think you're onto something there, Ben, but I'm not sure what to make of it.

    I modified my test code as follows, and enforced the parallel vs. sequential loops by the addition/subtraction of the wire going from the Enqueue Time indicator to the while loop. I had to decrease my number of iterations to 10k to keep the queue from growing to an unmanageable size in the sequential case.

    post-4344-1241190054.png?width=400

    Here are the results:

    post-4344-1241190363.png?width=400

    I guess the sequential results are more like what I'd expect; LV8.6 is more efficient at allocating memory for the growing queue.

    I am surprised at the parallel results. Am I really to understand that a version of LabVIEW that was written back when everyone was on a single CPU is better at parallel tasks than one that's been developed in the world of multi-processors?

    Incidentally, the 25% difference between the two is consistent with what the profiler was saying.

    Ok still wandering in the dark looking for the door...

    Both of your loops require allocating memory for the queue elements or for the array you are building.

    If you pre-allocate and repalce the array instead of building it, then we can stop thinking about call to the OS to allocate memory being a common bottle kneck.

    Please see Q below my avatar.

    Ben

  8. QUOTE (Gary Rubin @ May 1 2009, 09:45 AM)

    One of the reasons I'm wondering whether it's a red herring coming out of the profiler is that both versions report that the dequeue subVI takes 0.0ms. In fact, changing the display in the profiler to microseconds, LV8.6 claims the dequeue subVI takes 0us. Not sure I believe that.

    I have had many questions about what the profiler shows me in recent version as well.

    Run some benchmark tests to see if they confirm what the profile is showing.

    Ben

  9. QUOTE (Gary Rubin @ May 1 2009, 08:43 AM)

    Hello all,

    As I indicated an a post last night, I am working on transitioning some code from LabVIEW 7.1.1 to LabVIEW 8.6. Because performance is very important in this application, the first thing I did was benchmark the execution times for the two versions using profile. I found something surprising that I'm hoping someone can corroborate and/or explain. I noticed that a lot (but not all) of my subVIs were faster in LV8.6, but that those involving queues were quite a bit slower. To check this out, I did the test shown in the attached picture.

    The reason I wrapped the enqueue and flush queue in subVIs was just so I could use the profiler on them. Both the subVIs are running in Time Critical Priority with debugging and auto error handling turned off. The Top Level VI is normal priority, but also with debugging and error handling turned off.

    These results are typical of what I saw for my real code; The top-level VI is MUCH faster in 8.6, but the enqueue is considerably slower.

    So, what's going on? Is this speed difference real, or a by-product of using Profile? Are 8.6 queues really slower than 7.1 queues?

    http://lavag.org/old_files/monthly_05_2009/post-4344-1241181115.png' target="_blank">post-4344-1241181115.png?width=400

    Thanks,

    I'm sure I'll be posting more as I explore the 8.6.

    HI Gary,

    I don't know the answer to your Q but I am curious. If you changed your code such that all of the enqueues happened and then all of the dequeues, I wonder if it would change the numbers. My thoughts for this are due to the scheduling of paralllel tasks may be different so the dequeue maybe taking loanger since it is waiting for something to show up in the queue. I just wonder if there is some interaction between the two loops.

    So no answer here, just more Q's.

    Ben

  10. QUOTE (drake27 @ Apr 29 2009, 09:28 AM)

    Hello

    I have to get the name of the author of a VI but I don't know how to do this using Labview.

    If someone can help me

    I confess, I don't know what you are trying to do.

    Do you have a VI and you need to know who was the orignal author? If so post and maybe one of us can recognize it.

    Otherwise, please clairfy your question.

    Ben

  11. QUOTE (Gary Rubin @ Apr 23 2009, 10:22 AM)

    If the loop is indexed, there sure is a way for the loop to know. I'm sure I've read an app note for 7.1 that concurs with Ben's statement. Trying to find it now.

    EDIT:

    Here we go - app note 168:

    I don't know if something under the hood in LV has changed since then that makes the preallocate and replace faster.

    Thank you Gary!

    Since we have wondered to the topic of performance I'll share my list of code construct choice from fastest to slowest where in/out arrays are the same size.

    LV Primative - Like the Multiply Array.

    For Loop - LV pre-allocates and replaces

    While Loop with Pre-allocated array - Fater because of no need to re-allocate more momory.

    While Loop no pre-allocate

    I am not usre about the For Loop with condition terminal but I'd gues it fits in after the For Loop but before the While Loop with pre-allocated buffer.

    Ben

  12. As an old hardware guy I have to make a point.

    Interupts and traps are similar but differ in their origin and their timing. Interupts are asyncronous while traps are syncronous.

    Interupts can at any time regardless of what is happening in the code. An example of this is you move the mouse and an interupt is fired (a signal is asserted on a bus) reuslting in the current code being pushed on to the satack and the code located at the associated interupt vector is executed.

    A software trap differs in that it occurs as a result of some code event example, a mutex is released so the code servicing the release can check if other are waiting and if so fire the trap which can call the OS scheduler to change a thread from a resource wait state to runable and schedule same.

    So interupts are hardware, and traps are software. Since LV is platform independent, the reliance of the hardware interupts to implement all of the syncronizations functions would be very challenging.

    We now return you to your normally scheduled program.

    Ben

  13. QUOTE (crelf @ Apr 22 2009, 06:24 PM)

    You mean "created an array with the appropriate number of elements outside a for loop, then replaced it's values", right?

    In modern versions* of LV that is a waste of time. The for loop does that "for" you behind the scenes. Yes I have tested it. No, I don't have the benchmarks handy to prove it. :shifty:

    Ben

    * I think this came in at version 6 with all of the "optimization" that came with that release.

  14. QUOTE (bradjb911 @ Apr 22 2009, 03:28 PM)

    Hello,

    I am working to build a data analysis system and having a little trouble with the arrays. I just want to reduce the data like below.

    Example 2D array:

    [ 1 3 5 7

    2 4 6 8

    1 3 5 7 ]

    Into 1D Array:

    [ 1 3 5 7 2 4 6 8 1 3 5 7 ]

    I've been working on this for a couple of hours and it seems like a simple problem, but I'm not beating it yet.

    Thanks,

    Brad

    Use re-shape array?

    Multiple the dimensions of your 2d and use that value to spec the size of the 1-d array.

    Ben

  15. QUOTE (Kevin Payne @ Apr 21 2009, 04:33 AM)

    I have my own museum of calculators that includes a slide rule (with slider and original instructions!) and what I concider the oldest "Pocket Calculator" since that is what its label says. It is a pocket book titled "Pocket Calculator" filled with tables of sums and products. Need to multiply two numbers?, look up the two numbers and adjust the decimal place.

    Ben

  16. QUOTE (ShaunR @ Apr 17 2009, 04:38 PM)

    Because our IT is analy retentive.If I connect it to "THEIR" network then they have to have ownership which means the following:

    1. Cannot take the lid off to install cards. Have to send a support request to get the card installed which may be in 2-3 days time if I'm lucky. If found "tamperig with company property"....written warning :o

    2. No administrator priveleges. If software needs to be installed...Yup..you guessed it..Support ticket...2-3 days.

    3. Must have a defacto desktop/laptop PC with all the their crap and must use XP even if the customer wants Vista.

    4. The licence would have to be in one of their names (as you know...NI only supply support to the name on the license) so they can provide me with support <img> which means that yet again I would have to send a support ticket to get them to phone NI to asks a question which they know didly squat about.

    I will just point out though that I do have number 3 also. They decided that a dual core (not even core2) 1.6 GHz Toshba laptop with 512MB ram and a 20 Gig hard-drive is an adequate Labview development platform. It takes 20 minutes to boot in the morning if connected to the network because of their policies.

    Because of that, I run Labview, labwindows, test stand and all the toolkits on an industrial PC on it's own network where I can do what needs to be done. When it needs to be done.

    We actually rate our IT department as a project risk. The less involvement...the better.

    So. It is a real pain but the alternative is worse!

    I swear I have you guys as a customer. I think my contact brings me in just to deal with talk IT at them. :headbang:

    Ben

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.