-
Posts
4,848 -
Joined
-
Days Won
291
ShaunR last won the day on April 4
ShaunR had the most liked content!
Profile Information
-
Gender
Male
LabVIEW Information
-
Version
LabVIEW 2009
-
Since
1994
Recent Profile Visitors
34,008 profile views
ShaunR's Achievements
-
Optimization of reshape 1d array to 4 2d arrays function
ShaunR replied to Bruniii's topic in LabVIEW General
There is a GPU Toolkit if you want to try it. No need to write wrapper DLL's. It's in VIPM so you can just install it and try. Don't bother with the download button on the website-it's just a launch link for VIPM and you'd have to log in. One afterthought. When benchmarking you must never leave outputs unwired (like the 2d arrays in your benchmark). LabVIEW will know that the data isn't used anywhere and optimise to give different results than when in production. So you should at least do something like this: On my machine your original executed in ~10ms. With the above it was ~30ms. -
Optimization of reshape 1d array to 4 2d arrays function
ShaunR replied to Bruniii's topic in LabVIEW General
Nope. I can't beat it. To get better performance i expect you would probably have to use different hardware (FPGA or GPU). Self auto-incrementing arrays in LabVIEW are extremely efficient and I've come across the situation previously where decimate is usually about 4 times slower. Your particular requirement requires deleting a subsection at the beginning and end of each acquisition so most optimisations aren't available. Just be aware that you have a fixed number of channels and hope the HW guys don't add more or make a cheaper version with only 2. -
Optimization of reshape 1d array to 4 2d arrays function
ShaunR replied to Bruniii's topic in LabVIEW General
Post the VI's rather than snippets (snippets don't work on Lavag.org) along with example data. It's also helpful if you have standard benchmarks that we can plug our implementation into (sequence structure with frames and getmillisecs) so we can compare and contrast. e.g -
OpenG LabVIEW Zip 5.0.0-1 - stuck at the readme
ShaunR replied to PA-Paul's topic in OpenG General Discussions
This is why it takes me hours to make an ECL build that works and is one of the many reasons only Windows is now supported (can load from same dir). Even then. I have to fight VIPM to get things in the right places. I refuse to do #2. -
Well. There's a few problems but the reason it's not showing the next image is because you increment the counter during acquisition until it's 300 and when you start the next acquisition it indexes into the path array at 300 (which yields Not A Path). You've confused your 30 second timer with the file index. Make a proper timer with a time function and increment the index on stop.
-
Parallel For Loop versus Async Call and Collect
ShaunR replied to Stagg54's topic in LabVIEW General
Yes but you'd need to define "reliably". I think there would be few milliseconds of jitter and probably a minimum of about 4ms. -
Parallel For Loop versus Async Call and Collect
ShaunR replied to Stagg54's topic in LabVIEW General
There are surprising few situations where a parallel for loop (pLoop) is the solution. There are so many caveats and foot-shooting opportunities even if you ignore the caveats imposed by the IDE dialogue. For example. For the pLoop to operate as you would imagine, Vi's that are called must be reentrant (and preferably preallocated clones). If a called VI is not reentrant then the loop will wait until it finishes before calling it in another parallel loop (that's just how dataflow works). If a called VI is set to reentrant shared clones then you get the same problems as with any shared clone that has memory but multiplied by the number of loop iterations. Another that you often come across with shared, connectionless resources (say, raw sockets) is that you cannot guarantee the order that the underlying resource is accessed in. If it is, say, a byte stream then you would have to add extra information in order to reconstruct the stream which may or may not be possible. I have actual experience of this and it is why the ECL Ping functionality cannot be called in a pLoop. -
What is the best way to handle errors for external DLL/C code,
ShaunR replied to Neon_Light's topic in Calling External Code
I'm a simple programmer. Catch them all where possible (try { /* */ } catch (...)) and pass errors back as a return value. That's my tuppence. -
It's the example from MDI Toolkit for LabVIEW
- 54 replies
-
If you put a Call By Reference Node in the case you've reinvented Dynamic Dispatch with extra steps.
-
Booh with bells on. Hello 7 hr build time.
-
Booooh!
-
Agreed. Even just 100 and UI updates become a bit flakey.
- 54 replies
-
They have fixed a bug, is my guess. Concatenating by using null char is a huge security smell. Multiple file types are [supposed to be] defined by using the semicolon separator. Does "*csv;*txt" not work?
-
Interfacing with digital x-ray plates?
ShaunR replied to grubin's topic in Machine Vision and Imaging
It's probably DICOM which is partially supported in the Biomedical Toolkit.