Using NAG and LabView in a 64 bit environment
This is the latest in a series of blog posts about enhancing LabVIEW applications by using NAG methods and routines; previously, we've described in detail how to invoke methods from the NAG Library for .NET in LabVIEW, and how to call routines from the NAG Fortran and C libraries from within that programming environment. In addition, we supplemented those descriptions with an archive of examples which is available from the NAG LabVIEW page.
The examples we looked at previously were all in the 32 bit environment, but some users have asked whether all this works in the 64 bit world, being keen to take advantage of the larger address space of that architecture. Indeed it does, as we shall show here.
This screenshot shows the block diagram of a demo application, running within the 64 bit version of LabVIEW, in which we call the same routine three times - once from each of the NAG Libraries (this duplication is only used to illustrate that all of the libraries work in the 64 bit environment, and is clearly not necessary in a working application, which would only utilize one of the libraries). More specifically, we use LabVIEW 2011 SP1, version 11.0.1f1 (64 bit) under Windows 7, together with the following NAG Libraries:
- NAG Fortran Library [Mark 23] for x86-64 systems, Windows XP/Vista/7 DLL, Intel Fortran for 64-bit applications (FLW6I23DCL)
- NAG C Library [Mark 9] for Microsoft Windows XP/Vista/7, Intel C/C++ 64 or Microsoft 64-bit C/C++ (CLW6I09DAL)
- NAG Library for .NET [Release 1] for Windows XP/Vista/7, x86-32, x86-64 (DTW3A01DAL). It should be noted that this example uses the 64 bit assembly (NagLibrary64.dll) rather than the 32 bit one (which is also part of the NAG Library for .NET installation).
The NAG routine that we call is s01ba, an extremely simple one which calculates the shifted logarithm of its argument (once again, this was selected only for illustrative purposes: any of the more sophisticated routines in the Libraries could have been used in its place, albeit at the expense of added complexity).
This screenshot shows the front panel of our demo application, with the input value on the left and the output from the the three versions of the NAG routine on the right. As is to be expected, the outputs are identical.
This demo application has been incorporated into an upgraded version (1.1) of the archive of examples mentioned earlier. In addition, the examples in that archive that use the NAG C Library have been updated to use Mark 23 of that Library. The archive is freely downloadable from the NAG LabVIEW page; a README file (a copy of which is contained in the archive) provides more information about the examples and their software prerequisites.