Intel Fortran Compiler
IMPORTANT: Use the default
installation directory to install the Intel Fortran
Compiler (any version). |
Intel Fortran Compiler versions 7.1 and 8.1 compile
the XBC option tree and other X-Midas host primitives
written in Fortran (see X-Midas Backwards
Compatibility (XBC) for details on X-Midas
host primitives in NeXtMidas).
Because of significant changes made between Intel Fortran Compiler
versions 7.1 and 8.1, different configuration
options are required. Refer to the appropriate section for instructions:
Intel Fortran Compiler 7.1
Intel Fortran Compiler 7.1 (ifc ) is the default
Fortran compiler for NeXtMidas 2.0.X (and earlier). To use this compiler
with later versions of NeXtMidas, change the
native.lin.for.comp and native.lin.for.link
build properties in $NMROOT/nxm/sys/cfg/build.props :
Intel Fortran Compiler 7.1 |
Intel Fortran Compiler 8.1 |
native.lin.for.comp = ${ifc.comp} native.lin.for.link = ${ifc.link} |
native.lin.for.comp = ${ifort.comp} native.lin.for.link = ${ifort.link} |
Intel Fortran Compiler for 32-bit applications 8.1
Intel Fortran Compiler for 32-bit applications 8.1
(ifort ) is the default Fortran compiler for NeXtMidas 2.1.X
(and later). To use this compiler with earlier versions of NeXtMidas,
change the
native.lin.for.comp and native.lin.for.link
build properties in $NMROOT/nxm/sys/cfg/build.props :
Intel Fortran Compiler 7.1 |
Intel Fortran Compiler 8.1 |
native.lin.for.comp = ${ifc.comp} native.lin.for.link = ${ifc.link} |
native.lin.for.comp = ${ifort.comp} native.lin.for.link = ${ifort.link} |
Some Linux installations cannot find the ifort
shared libraries until they are manually added to the /lib
directory. The following steps verify this particular system problem:
- Start NeXtMidas.
- Add
XBC to the NeXtMidas path
(use PATH ADD XBC ).
- Re-build all of the code in
XBC
(use BLD ALL ALL XBC ).
- Run the
SD360 primitive (use SD360 1e20 ).
If the libraries are not found the primitive locks up and an
error message similar to this appears:
Shell.loadLibrary err: java.lang.UnsatisfiedLinkError:
/home/smith/nxm210/nxm/xbc/lib/libHPrimitive_lin.so:
libifcore.so.5 cannot open shared object file: No such
file or directory
(If this happens, use Control-C to kill the current
Java session.)
The following steps add the ifort runtime
libraries to /lib (where /opt/intel_fc_80 is the
installation directory for ifort ):
$ cd /lib
$ ln -s /opt/intel_fc_80/lib/libcprts.so.5
$ ln -s /opt/intel_fc_80/lib/libcxa.so.5
$ ln -s /opt/intel_fc_80/lib/libcxaguard.so.5
$ ln -s /opt/intel_fc_80/lib/libguide.so
$ ln -s /opt/intel_fc_80/lib/libguide_stats.so
$ ln -s /opt/intel_fc_80/lib/libifcore.so.5
$ ln -s /opt/intel_fc_80/lib/libifcoremt.so.5
$ ln -s /opt/intel_fc_80/lib/libifport.so.5
$ ln -s /opt/intel_fc_80/lib/libimf.so
$ ln -s /opt/intel_fc_80/lib/libsvml.so
$ ln -s /opt/intel_fc_80/lib/libunwind.so.5
Using OpenMP for the Intel Compiler
OpenMP is an API that supports multi-platform shared memory multiprocessing programming.
The following configuration is an example of using OpenMP with an X-Midas Fortran primitive.
- Update the SYS build.props ($NMROOT/nxm/sys/cfg/build.props)
- Update and uncomment the location for the Intel compiler directory (e.g.):
- ifort.libs.dir = /opt/intel/Compiler/11.1/075/lib/intel64/
(ifort version 11.1.x and prior)
- ifort.libs.dir = /opt/intel/composerxe-2011.1.107/compiler/lib/intel64 (ifort version 12.x and later)
- Update and uncomment the following line. The library reference adjusts as appropriate to the compiler version.
- ifort.link.append = -L${fflags.fortlibs} -lguide -Wl,-rpath=${fflags.fortlibs} (ifort version 11.1.x and prior)
- ifort.link.append = -L${fflags.fortlibs} -liomp5 -Wl,-rpath=${fflags.fortlibs} (ifort version 12.x and later)
- Add a line to your primitive to prior to running the M$CHECKIN
call setenvqq("KMP_HANDLE_SIGNALS=false")
OR
In the OS shell prior to running nmstart
setenv KMP_HANDLE_SIGNALS false
- Add a line to the cfg/primitives.cfg file in the option tree (PUT CREATE SOMETHING HERE).
See the
$NMROOT/nxm/sys/hlp/using_libraries.doc for a copy of X-Midas's docs for
a detailed description, syntax, and examples usages of primitives.cfg or
the primitives.cfg section of the BUILD explain file.
Add the -openmp compile flag to enable to OpenMP directive(s) for the primitive.
openmp_example:
cflags + -openmp
openmp_cpp_example:
cflags + -openmp
- An example can be found in the XBCTESTOPT2 option tree at $NMROOT/nxm/xbc/test/nmopts/nxm/xbctestopt2
|