University of Iowa College of Liberal Arts & Sciences

  Computer Science | Mathematics | Statistics and Actuarial Science | Applied Mathematical and Computational Sciences | Informatics

Mathematical Sciences Computer Support Group

Notes about using VNI's IMSL



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?

ProductCPU architechtureCompilerPath
C Numerical Library 7.0.0EM64Tgcc/opt/vni/imsl/cnl700/rdhgc411e64
C Numerical Library 7.0.0Opteron/AMDgcc/opt/vni/imsl/cnl700/rdhgc411x64
C Numerical Library 7.0.0i386gcc/opt/vni/imsl/cnl700/rdhgc412i32
C Numerical Library 7.0.0EM64Ticc (Intel)/opt/vni/imsl/cnl700/rdhin101e64
C Numerical Library 5.5i386icc (Intel)/opt/vni/CTT6.0/
C Numerical Library 5.5i386gcc/opt/vni/CTT6.0/
Fortran Numerical Library 5.01i386ifort (Intel)/opt/vni/CTT6.0/
Java Numerical Library 5.0anyJava/opt/vni/imsl/jmsl500


Where are documents describing how to get started with the libraries?

ProductDoc 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 intel64
source /opt/vni/imsl/cnl700/rdhin101e64/bin/cnlsetup.csh
Gotcha: none known
CNL 7.0.0
tcsh/csh
i386
gcc
source /opt/vni/imsl/cnl700/rdhgc412i32/bin/cnlsetup.csh
Gotcha: 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.csh
Gotcha: none known
CNL 7.0.0
tcsh/csh
x86_64 EM64T
gcc
source /opt/vni/imsl/cnl700/rdhgc411e64/bin/cnlsetup.csh
Gotcha: none known
CNL5.5
tcsh/csh
x86_64
icc 11.0
source /opt/intel-11/bin/iccvars.csh ia32
source /opt/vni/CTT6.0/ctt/bin/cttsetup.csh
source /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 ia32
source /opt/vni/CTT6.0/ctt/bin/cttsetup.csh
source /opt/vni/CTT6.0/ctt/bin/linux_icc.csh
CNL5.5
tcsh/csh
x86_64
gcc
source /opt/vni/CTT6.0/ctt/bin/cttsetup.csh
source /opt/vni/CTT6.0/ctt/bin/linux.csh
setenv 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.csh
Gotcha: none known.
FNL5.01
tcsh/csh
x86_64
ifort 11.0
source /opt/intel-11/bin/ifortvars.csh intel64
source /opt/vni/CTT6.0/ctt/bin/cttsetup.csh
source /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 ia32
source /opt/vni/CTT6.0/ctt/bin/cttsetup.csh
source /opt/vni/CTT6.0/ctt/bin/intel32_9.csh
Gotcha: none known