07-09-2017 03:16 PM
We have a large number of NI PCIe-6323 cards for production measurements. In the course of rewriting the software I figured that we might get better performance if we compiled the *.exe with 64 bit LabVIEW (2013 full). Not the case, takes twice as long to execute a timed loop. We are also using a NI PCIe-8430/8 (RS232) Interface.
Now, my NI-DAQmx Device Driver (v 16.0.1f0) is in the (x86) directory along with NI-488.2 (v3.1.2). NI-VISA (v 15.0) is in SysWOW64.
So, using 64 LabVIEW may be counter indicated if the NI cards and NI drivers for the NI cards are 32 bit. It takes extra time to process things through system WOW and translate between a 64 bit program and 32 bit hardware and drivers. I looked all over the NI site to learn if these cards are 32 or 64 bit.
07-10-2017 11:07 AM
Having 64-bit addressing does not guarantee that you will get twice the performance of 32-bit. It just means you can use more memory. In fact, because your addresses are now twice as wide, pointers to them occupy twice as much memory, and on certain workloads that can be worse. (x86-64 also adds some more registers, which can also help in some compute-heavy workloads.)
If you're running a 64-bit Windows operating system, you're using the 64-bit versions of the NI-DAQmx and NI Serial drivers. (Windows doesn't let you load drivers for the wrong bitness.) You can use either a 32-bit or 64-bit userland (in other words, 32-bit or 64-bit LabVIEW) with 64-bit kernel drivers. For 32-bit applications, it does take extra time to go through the WOW64 layer, but as per MSDN "this overhead is small compared to the NT kernel call itself".
(Windows does not let you run 64-bit applications on a 32-bit OS, so your statement about "a 64 bit program and 32 bit hardware and drivers" is a setup that can't occur.)