04-14-2014 05:11 AM
Hey guys,
So while ago, I was just curious whether you could call 64bit VIs from 32bit LabVIEW.
So I created some VIs and indeed it seemed possible. I thought it was a great feature of LabVIEW but
I couldnt find any KBs or posts regarding this matter.
Does anyone know any caveats to this feature( like should do and shouldnt do) ?
I will post the VIs if anyone else is curious about this matter.
You need to have both 32bit LabVIEW and 64bit LabVIEW running.
and the VI server must be accessible using TCP/IP protocol.
I just had my 64bit LabVIEW port set to 3364 and 32bit LabVIEW port set to 3363
04-14-2014 10:55 AM
The network doesn't care whether the clients are 32- or 64-bit (if it did, you might not be able to access web sites on a 32-bit operating system that were served by a 64-bit one). You're making the VI Server calls over TCP (over the network, even if it's just the loopback interface on your local computer), so no, it doesn't matter whether they're running a 32- or 64-bit version of LabVIEW. I haven't tried this, but I'm pretty sure you don't even need the two copies of LabVIEW to be running on the same operating system, so long as they're the same version number of LabVIEW.
04-14-2014 02:14 PM - edited 04-14-2014 02:15 PM
@nathand wrote:
The network doesn't care whether the clients are 32- or 64-bit (if it did, you might not be able to access web sites on a 32-bit operating system that were served by a 64-bit one). You're making the VI Server calls over TCP (over the network, even if it's just the loopback interface on your local computer), so no, it doesn't matter whether they're running a 32- or 64-bit version of LabVIEW. I haven't tried this, but I'm pretty sure you don't even need the two copies of LabVIEW to be running on the same operating system, so long as they're the same version number of LabVIEW.
Actually te VI server protocol works even across LabVIEW versions for most of the part. Obviously you can not call features (properties, methods, etc. in a lower version when they got only added in never versions, but other than that there are little trouble to execute properties and methods even across LabVIEW versions.
However you won't be able to upload a compiled VI to the remote machine and execute it there if it is not exactly the same LabVIEW version and platform if you don't have a full development system installed on the remote system. LabVIEW VIs contain compiled code that is LabVIEW version and platform specific. Only the development system can recompile the VI code to work on a different LabVIEW version and/or platform (for version differences only really upwards compatible without going explicitedly through a Save for Previous version first).
04-14-2014 04:15 PM
Just to be clear, my original question was calling 64bit LabVIEW VIs from 32bit LabVIEW VI.
When I tested it, 64bit LabVIEW had to be open. I guess VI server doesnt automatically start up LabVIEW for you.
Of course, you can programmatically start up LabVIEW but that's besides the point.
I just had this question because there seemed to be some questions and concerns on the forum
regarding how an applicaiton should be made since most LabVIEW toolkits and modules arent supported on 64bit LabVIEW.
But when I was playing around with the two versions of LabVIEW, it seemed pretty easy to call VIs from each other.
So one could always have both LabVIEWs open, and do the memory intensive operations(image analysis, RF stuff,etc) on 64bit LabVIEW and then do the rest on the 32bit LabVIEW.
However, I couldnt find any resources on this matter, so I thought it was a bit weird.
I'm not a computer expert but can it be that simple to pass data from a 32bit app to 64bit app?
04-14-2014 04:35 PM - edited 04-14-2014 04:38 PM
doradorachan wrote:
However, I couldnt find any resources on this matter, so I thought it was a bit weird.
I'm not a computer expert but can it be that simple to pass data from a 32bit app to 64bit app?
Simple? If you consider that the entire data has to be flattened, funneled throught he TCP/IP socket layer, and then unflattened again I wouldn't exactly call this simple.
Of course everything is more or less done transparently for you, but I would be rather reluctant to try to transfer Gigabytes of data that way as it for sure will be a bit of a bottleneck to push through.
If you can however keep the entire huge data processing in the 64 Bit version, and only need to transfer the actual control data and possibley some status information back and forth, then by all means yes it is that simple.
As far as the 64 Bit versions of the Toolkits are concerned, most of them are fully VI based and so can be copied from a 32 Bit installation to a 64 Bit installation. They just haven't created installers for most of the toolkits that can handle both 32 bit and 64 bit LabVIEW installations.
04-14-2014 05:27 PM - edited 04-14-2014 05:28 PM
The way I understand it, VI's themselves are "architecture-agnostic." They aren't 64-bit. They aren't 32-bit. They just get compiled with whatever version of LV you have. You should be able to switch between environments as long as any drivers you may be using have 64-bit counterparts.