NAG Fortran Library, Mark 25

FLLUX25DCL

Linux 32-bit, Intel Fortran, Double Precision

Supplementary Information



Contents

1. Introduction

This page is for supplementary information relating to the implementation described in Section 2.1 of the Installer's Note. It may be augmented over the life-time of the product if further pertinent information becomes available.

2. Applicability

This implementation is a compiled, tested, ready-to-use version of the NAG Fortran Library that is considered suitable for operation on the computer systems detailed below:

hardware:           x86-32 systems and compatible
operating system:   Linux 2.6.27.41 (glibc-2.9-3) and compatible
Fortran compiler:   Intel Fortran Compiler XE for applications running on IA-32
                    Version 15.0.3 and compatible

3. Test Platforms

Note: This list is not exhaustive; other combinations of hardware, operating system and compiler may also work.

This implementation has also been successfully tested using the following:

hardware:         Intel(R) Xeon(R) CPU E5405 2.00GHz
operating system: Linux 2.6.27.41 (Fedora release 10 (Cambridge))
                  with glibc-2.9-3
Fortran compiler: Intel Fortran Compiler XE for applications running on IA-32
                  Version 15.0.3.187
                  Build 20150407
									
hardware:         Intel(R) Xeon(R) CPU E5405  @ 2.00GHz
operating system: Linux 2.6.27.41-170.2.117.fc10 
                  Fedora release 10 (Cambridge) 
                  with glibc-2.9-3
Fortran compiler: Intel ifort Version 15.0.0.090 Build 20140723
                  Intel ifort Version 15.0.1.133 Build 20141023
                  Intel ifort Version 15.0.2.164 Build 20150121
                  Intel ifort Version 15.0.3.187 Build 20150407
                  Intel ifort Version 15.0.5.223 Build 20150805

hardware:         Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz
operating system: Linux 4.0.8-200.fc21 
                  Fedora release 21 (Twenty One)
                  with glibc-2.20-8.fc21
Fortran compiler: Intel ifort Version 15.0.2.164 Build 20150121

hardware:         Intel(R) Pentium(R) 4 CPU 2.80GHz
operating system: Linux 2.6.32-358.18.1.el6.i686
                  CentOS release 6.4 (Final)
                  with glibc-2.12-1.132.el6.i686
Fortran compiler: Intel ifort Version 15.0.2.164 Build 20150121
                  Intel ifort Version 16.0.0.109 Build 20150815
                  Intel ifort Version 16.0.1.150 Build 20151021

hardware:         Intel(R) Xeon(R) CPU E5310  @ 1.60GHz
operating system: Linux 2.6.26.8-57.fc8
                  Fedora release 8 (Werewolf)
                  with glibc-2.7-2
Fortran compiler: Intel ifort Version 15.0.3.187 Build 20150407

Note: This list is not exhaustive; other combinations of hardware, operating system and compiler may also work.

4. Compiling and Linking with GNU Fortran

The instructions in this section assume that the NAG Library product has been installed in
/opt/NAG/fllux25dcl

4.1 Recompiling interface blocks

Under the install directory of the NAG Library product there is a subdirectory named
nag_interface_blocks
containing modules that have been precompiled using an Intel compiler.
A separate directory is required to contain the same modules compiled with gfortran.
For example:
  sudo mkdir [INSTALL_DIR]/gfortran_interface_blocks
  sudo chmod 755 [INSTALL_DIR]/gfortran_interface_blocks
  sudo cp [INSTALL_DIR]/nag_interface_blocks/*.f90 [INSTALL_DIR]/gfortran_interface_blocks
  cd  [INSTALL_DIR]/gfortran_interface_blocks
  sudo gfortran -c nag_precisions.f90
  sudo gfortran -c nag_blas_consts.f90
  sudo gfortran -c nag_a_ib.f90
  sudo gfortran -c nag_blas_ib.f90
  sudo gfortran -c nag_blast_ib.f90
  sudo gfortran -c nag_c_ib.f90
  sudo gfortran -c nag_d_ib.f90
  sudo gfortran -c nag_e_ib.f90
  sudo gfortran -c nag_f_ib.f90
  sudo gfortran -c nag_g_ib.f90
  sudo gfortran -c nag_h_ib.f90
  sudo gfortran -c nag_m_ib.f90
  sudo gfortran -c nag_s_ib.f90
  sudo gfortran -c nag_x_ib.f90
  sudo gfortran -c nag_lapack_ib.f90
  sudo gfortran -c nag_long_names.f90
  sudo gfortran -c nag_library.f90
  sudo chmod 644 *.mod
The order of compilation is important since some modules depend on others, so a wildcard compilation will not work.

4.2 Linking against static libraries

To compile and link against the self-contained static library libnag_nag.a:
  gfortran -m32 -I[INSTALL_DIR]/gfortran_interface_blocks driver.f90 \
           [INSTALL_DIR]/lib/libnag_nag.a \
           -Wl,--start-group \
               [INSTALL_DIR]/rtl/ia32/libsvml.a \
               [INSTALL_DIR]/rtl/ia32/libirc.a \
               [INSTALL_DIR]/rtl/ia32/libifcore.a \
               [INSTALL_DIR]/rtl/ia32/libimf.a \
               [INSTALL_DIR]/rtl/ia32/libifcoremt.a \
               -openmp -ldl -lpthread -lm \
           -Wl,--end-group -o driver.exe
Note that this requires the static linkage of a number of Intel compiler run-time libraries.

To compile and link against the static library libnag_mkl.a:

  gfortran -m32 -I[INSTALL_DIR]/gfortran_interface_blocks driver.f90 \
           [INSTALL_DIR]/lib/libnag_mkl.a \
           -Wl,--start-group \
               [INSTALL_DIR]/mkl_ia32_11.2.3/lib/libmkl_intel.a \
               [INSTALL_DIR]/mkl_ia32_11.2.3/lib/libmkl_intel_thread.a \
               [INSTALL_DIR]/mkl_ia32_11.2.3/lib/libmkl_core.a \
               [INSTALL_DIR]/rtl/ia32/libsvml.a \
               [INSTALL_DIR]/rtl/ia32/libifcore.a \
               [INSTALL_DIR]/rtl/ia32/libimf.a \
               [INSTALL_DIR]/rtl/ia32/libifcoremt.a \
               [INSTALL_DIR]/rtl/ia32/libirc.a \
               [INSTALL_DIR]/rtl/ia32/libiomp5.a \
               -ldl -lpthread -lm
           -Wl,--end-group -o driver.exe

4.3 Linking against shared libraries

Note: additional Intel compiler run-time libraries may be required for this (libintlc.so and libintlc.so.5).
Please contact NAG (support@nag.co.uk) if these are required.

To compile and link against the self-contained shared library libnag_nag.so:

  export LD_LIBRARY_PATH=[INSTALL_DIR]/lib:[INSTALL_DIR]/rtl/ia32
or
  setenv LD_LIBRARY_PATH [INSTALL_DIR]/lib:[INSTALL_DIR]/rtl/ia32
then
  gfortran -m32 -I/[INSTALL_DIR]/gfortran_interface_blocks driver.f90 \
           [INSTALL_DIR]/lib/libnag_nag.so \
           [INSTALL_DIR]/rtl/ia32/libsvml.so \
           [INSTALL_DIR]/rtl/ia32/libifcore.so.5 \
           [INSTALL_DIR]/rtl/ia32/libimf.so \
           [INSTALL_DIR]/rtl/ia32/libifcoremt.so.5 \
           [INSTALL_DIR]/rtl/ia32/libirc.so \
           -ldl -lpthread -lm -o driver.exe

To compile and link against the shared library libnag_mkl.so:

  export LD_LIBRARY_PATH=[INSTALL_DIR]/lib:[INSTALL_DIR]/mkl_ia32_11.2.3/lib:[INSTALL_DIR]/rtl/ia32
or
  setenv LD_LIBRARY_PATH [INSTALL_DIR]/lib:[INSTALL_DIR]/mkl_ia32_11.2.3/lib:[INSTALL_DIR]/rtl/ia32
then
  gfortran -m32 -I/[INSTALL_DIR]/gfortran_interface_blocks driver.f90 \
             [INSTALL_DIR]/lib/libnag_mkl.so \
           -L[INSTALL_DIR]/mkl_ia32_11.2.3/lib \
           -Wl,--start-group \
               -lmkl_intel -lmkl_intel_thread -lmkl_core \
               [INSTALL_DIR]/rtl/ia32/libsvml.so \
               [INSTALL_DIR]/rtl/ia32/libifcore.so.5 \
               [INSTALL_DIR]/rtl/ia32/libimf.so \
               [INSTALL_DIR]/rtl/ia32/libifcoremt.so.5 \
               [INSTALL_DIR]/rtl/ia32/libirc.so \
                -ldl -lpthread -lm \
           -Wl,--end-group -o driver.exe

4.4 Limitations when calling FLLUX25DCL libraries from GNU Fortran

Due to incompatibilities between the Intel Fortran compiler and the GNU Fortran compiler, specifically in the Complex and Logical function return types there are problems with those few routines which use these two types.

The following are Complex functions and will not work when called from applications compiled and linked with the GNU Fortran Compiler as above:

s01eaf and s15ddf

Similarly, c06lbf contains, as argument, a complex function and will not work.

The licence checking routine a00acf is a Logical function which can be used correctly when tested in the positive sense:

     If (a00acf) then
        ! It works
     Else
        ! No licence
     End If
However the expression
 
     .Not. a00acf
will evaluate to true when a valid licence has been found.

This affects example programs for:

g01etf, g01mbf, g01mtf, g01ptf, g01qtf and g01rtf

.Not. expressions are also used in example programs for

d02qff, d03rbf and g02eef
affecting printing of results. When testing postively as above, the results print correctly.

In addition, the example programs for the following routines do not print results in the correct order:

f01enf
f01epf
f01fnf
f01fpf
f01jdf
f01jjf
f01kdf
f01kjf

f02jcf

f08raf
f08rnf

g01lbf

g02bzf

g05zpf
g05zsf
g05ztf

h02daf

Tested with GNU Fortran (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6).