VNI is the short name for the company Visual Numerics. They write custom numerical libraries for performing various mathematical/statistical functions in a variety of languages for a variety of compilers.
What do I need to know before I start using these libraries?
You need to know which CPU technology you are using. You can run "uname -i" in a terminal window. If you get x86_64 back, then you are using a machine with a 64-bit processor. If you get i386 back, then you are using a 32-bit processor. To find out if your 64-bit processor is Opteron/AMD or EM64T, run "cat /proc/cpuinfo | grep vendor_id" If you get AuthenticAMD back, it is likely Opteron/AMD. If you get GenuineIntel back, it is likely EM64T.
You need to know which compiler you want to use. We have gcc version 4.1.2 (the default) and gcc version 3.4.6 (/usr/bin/gcc34). We also have the Intel 11.0 compilers.
Additionally, after you compile your code with IMSL libraries (instructions below), you'll need to set up your environment using the same instructions, before running the code.
Which libraries are installed and for which languages?
| Product | CPU architechture | Compiler | Path |
| C Numerical Library 7.0.0 | EM64T | gcc | /opt/vni/imsl/cnl700/rdhgc411e64 |
| C Numerical Library 7.0.0 | Opteron/AMD | gcc | /opt/vni/imsl/cnl700/rdhgc411x64 |
| C Numerical Library 7.0.0 | i386 | gcc | /opt/vni/imsl/cnl700/rdhgc412i32 |
| C Numerical Library 7.0.0 | EM64T | icc (Intel) | /opt/vni/imsl/cnl700/rdhin101e64 |
| C Numerical Library 5.5 | i386 | icc (Intel) | /opt/vni/CTT6.0/ |
| C Numerical Library 5.5 | i386 | gcc | /opt/vni/CTT6.0/ |
| Fortran Numerical Library 5.01 | i386 | ifort (Intel) | /opt/vni/CTT6.0/ |
| Java Numerical Library 5.0 | any | Java | /opt/vni/imsl/jmsl500 |
Where are documents describing how to get started with the libraries?
| Product | Doc Path |
| C Numerical Library 7.0.0 | /opt/vni/imsl/cnl700/README |
| C Numerical Library 5.5 | /opt/vni/CTT6.0/notes/cnl/ |
| Fortran Numerical Library 5.01 | /opt/vni/CTT6.0/notes/f90/ |
| Java Numerical Library 5.0.0 | /opt/vni/imsl/jmsl500/readme.html |
What are the commands to set the right environment variables?
Are there any gotchas in our environment?
Product |
Shell |
CPU type |
Compiler |
Command(s) |
CNL 7.0.0 |
tcsh/csh |
x86_64 |
icc 11.0 |
source /opt/intel-11/bin/iccvars.csh intel64source /opt/vni/imsl/cnl700/rdhin101e64/bin/cnlsetup.cshGotcha: none known |
CNL 7.0.0 |
tcsh/csh |
i386 |
gcc |
source /opt/vni/imsl/cnl700/rdhgc412i32/bin/cnlsetup.cshGotcha: If you want 32-bit libraries/executables on a 64-bit machine, you need to add "-m32" to the compile line. |
CNL 7.0.0 |
tcsh/csh |
x86_64 Opteron/AMD |
gcc |
source /opt/vni/imsl/cnl700/rdhgc411x64/bin/cnlsetup.cshGotcha: none known |
CNL 7.0.0 |
tcsh/csh |
x86_64 EM64T |
gcc |
source /opt/vni/imsl/cnl700/rdhgc411e64/bin/cnlsetup.cshGotcha: none known |
CNL5.5 |
tcsh/csh |
x86_64 |
icc 11.0 |
source /opt/intel-11/bin/iccvars.csh ia32source /opt/vni/CTT6.0/ctt/bin/cttsetup.cshsource /opt/vni/CTT6.0/ctt/bin/linux_icc.csh
Gotcha: Only the 32-bit libraries are installed, you must use the 32-bit intel compilers (which the first "source" line sets up). |
CNL5.5 |
tcsh/csh |
i386 |
icc 11.0 |
source /opt/intel-11/bin/iccvars.csh ia32source /opt/vni/CTT6.0/ctt/bin/cttsetup.cshsource /opt/vni/CTT6.0/ctt/bin/linux_icc.csh
|
CNL5.5 |
tcsh/csh |
x86_64 |
gcc |
source /opt/vni/CTT6.0/ctt/bin/cttsetup.cshsource /opt/vni/CTT6.0/ctt/bin/linux.cshsetenv CFLAGS "$CFLAGS -m32"Gotcha: only the 32-bit libraries work, so all of your code/included libraries must be 32-bit. Adding the -m32 to the compilation flags accomplishes this. |
CNL5.5 |
tcsh/csh |
i386 |
gcc |
source /opt/vni/CTT6.0/ctt/bin/cttsetup.cshGotcha: none known. |
FNL5.01 |
tcsh/csh |
x86_64 |
ifort 11.0 |
source /opt/intel-11/bin/ifortvars.csh intel64source /opt/vni/CTT6.0/ctt/bin/cttsetup.cshsource /opt/vni/CTT6.0/ctt/bin/intel64_9.csh
Gotcha: The shared libraries don't work since we aren't using the Intel 9.0 compilers. You have to compile statically (i.e. change instances of $LINK_F90 to $LINK_F90_STATIC and make sure all other libraries are statically linked as well). Alternatively, you can follow the instructions for i386 below (instead of these) to be able to do dynamic linking. |
FNL5.01 |
tcsh/csh |
i386 |
ifort 11.0 |
source /opt/intel-11/bin/ifortvars.csh ia32source /opt/vni/CTT6.0/ctt/bin/cttsetup.cshsource /opt/vni/CTT6.0/ctt/bin/intel32_9.csh
Gotcha: none known |




