Installing FMS

This page contains instructions on how to download and install FMSlib and supporting software.

1. Download FMSlib

The product that is right for you depends on the following 3 items: If you are unsure about your hardware and software, start with the first version in the list for your operating system (Linux or Windows).
Linux
Product Size/Updated OS CUDA CPU Processor
FMS7_Linux_CUDA80.tar.gz Size= 32M bytes
Updated Monday, 15-May-2017 14:26:39 MDT
64-bit Linux 8.0 64-bit X86 with SSE42 or newer instructions
FMS7_Linux_CUDA75.tar.gz Size= 23M bytes
Updated Monday, 15-May-2017 14:27:25 MDT
64-bit Linux 7.5 64-bit X86 with SSE42 or newer instructions
FMS7_Linux_CUDA65.tar.gz Size= 25M bytes
Updated Monday, 15-May-2017 14:29:21 MDT
64-bit Linux 6.5 64-bit X86 with SSE42 or newer instructions
Windows
Product Size/Updated OS CUDA CPU Processor
FMS7_W64_CUDA80.exe Size= 38M bytes, Updated Monday, 15-May-2017 11:11:22 MDT 64-bit Windows 8.0 64-bit X86 with SSE42 or newer instructions
FMS7_W64_CUDA75.exe Size= 28M bytes, Updated Monday, 15-May-2017 10:02:37 MDT 64-bit Windows 7.5 64-bit X86 with SSE42 or newer instructions
FMS7_W64_CUDA65.exe Size= 29M bytes, Updated Monday, 15-May-2017 10:08:15 MDT 64-bit Windows 6.5 64-bit X86 with SSE42 or newer instructions
FMS7_W64_CUDA65_SSE2.exe Size= 29M bytes, Updated Monday, 15-May-2017 11:18:59 MDT 64-bit Windows 6.5 64-bit X86 with SSE2 instructions
(For older machines)
FMS7_W32.exe Size= 21M bytes, Updated Monday, 15-May-2017 11:28:26 MDT 32-bit Windows 6.5 32 or 64-bit X86

NOTE: If you are using Windows to download and encounter any security messages, you may need to do one of the following:

2. Install FMSlib

Linux

gunzip FMS7_Linux_CUDA"CUDA version".tar.gz
tar -xvf FMS7_Linux_CUDA"CUDA version".tar
where "CUDA Version" is the version of the CUDA software (8.0, 7.5 or 6.5)

Windows

If you saved the files during the download, double-click on the product.
It will self-extract to C:\FMS. You will be given the option of changing this directory during the installation.

Build Date

Each release of the FMSlib software is time-stamped with the build date. If you have multiple releases of FMSlib on your system, you can use this tool to uniquely identify the software. To obtain the date, run the follwing command:

./FMSBuildDate

The output is in the form mmddyyyy.

3. Install GPU software

If you are not using GPUs, skip to Step 4.

Obtaining NVIDIA Software

You may obtain the latest NVIDIA drivers from their website at:

https://developer.nvidia.com/cuda-downloads

This link also includes instructions for installing the NVIDIA software.

The NVIDIA software consists of two components:

1. A Device Driver

This provides the low-level interface to the hardware. Its function is similar to other device drivers (printers, etc.) You may determine which driver is installed on your system by running the command
nvidia-smi -a .

If the program nvidia-smi is not in your PATH, you may need to include the PATH in the above command:

(Linux) /usr/bin/nvidia-smi -a
(Windows) "C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe -a"

The driver number listed must be equal to or greater than the version of FMSlib you are installing. FMSlib uses the following shared-object libraries provided by this driver installation:

NVIDIA Device Driver Software used by FMSlib
Operating System Default Install Directory Files Used
64-bit Linux /usr/lib64 libnvidia-ml.so
64-bit Windows C:\Program Files\NVIDIA Corporation\NVSMI NVML.DLL
32-bit Windows N/A N/A

2. Compute Unified Device Arcitecture (CUDA) libraries (CUDA Toolkit)

The CUDA Toolkit provides utilities for software development. All components from this toolkit required by FMSlib are included with this distribution.

On Linux systems, the necessary components are already linked into FMSlib, which is distributed as a single file.

On Windows systems, the CUBLAS library is provided as a separate file with the distribution. If GPUs are detected, this file is automatically loaded dynamically at runtime.

4. Define the FMS file system

FMS needs to know where you want to store the data on disk. FMS contains options for a file striping system which allows you complete control over where FMS stores the data. Section 6.5 of the FMS manual describes this file striping system in detail.

In the simplest case where only one disk is used, define FMSDISK to point to a directory on that disk. There is a slightly different procedure for performing this under Linux and Windows.

5. Define additional Environment variables.

The following environment variables define directories where files are located or generated.

6. Run MatrixWarrior

The FMS and optional NVIDIA software are now installed. You can now test the installation by running the MatrixWarrior application provided with the distribution. MatrixWarrior will build and solve a system of simultaneous equations. Instructions for running MatrixWarrior can be found in the Quick Start Guide, which is automatically displayed when MatrixWarrior starts, or in the MatrixWarrior section of the FMS manual.

7. Download and install the Intel compilers and Run Time Libraries

FMS is compatible with the following list of compiler options. For convenience, you may want to define the environment variables in the following table.

FMS Environment Variables
64-bit Linux 64-bit Windows 32-bit Windows
FMS_FORTRAN_COMPILER
ifort ifort ifort
FMS_FORTRAN_FLAGS
(required)
-real_size 64
-integer_size 64
-align:dcommons,rec16byte,sequence
-auto
-reentrancy threaded
-fpic
-c

(optimization)
-xSSE2(1)
-axCORE-AVX2,AVX,SSE4.2(1)
-O3

(optional)
-nologo

(linking)
-threads
-static
-nofor-main(2)
(required)
/real_size:64
/integer_size:64
/align:dcommons,rec16byte,sequence
/auto
/reentrancy:threaded
/iface:cref,nomixed_str_len_arg
/c

(optimization)
/arch:SSE2(1)
/Qax:CORE-AVX2,AVX,SSE4.2(1)
/O3

(optional)
/nologo

(linking)
/threads
/static

(required)
/real_size:64
/integer_size:32
/align:dcommons,rec16byte,sequence
/auto
/reentrancy:threaded
/iface:cref,nomixed_str_len_arg
/c

(optimization)
/arch:IA32(1)
/Qax:AVX,SSE4.2,SSE2(1)
/O3

(optional)
/nologo

(linking)
/threads
/static

FMS_C_COMPILER
icc icl icl
FMS_C_FLAGS
(required)
-c
-align
-fpic

(optimization)
-xSSE2(1)
-axCORE-AVX2,AVX,SSE4.2(1)
-O3

(optional)
-nologo

(linking)
-threads
-static
-nofor-main(2)
(required)
/c



(optimization)
/arch:SSE2(1)
/Qax:CORE-AVX2,AVX,SSE4.2(1)
/O3

(optional)
/nologo

(linking)
/threads
/static
/MT

(required)
/c



(optimization)
/arch:IA32(1)
/Qax:AVX,SSE4.2,SSE2(1)
/O3

(optional)
/nologo

(linking)
/threads
/static
/MT

FMS_ARCHIVE
ar lib lib
FMS_ARCHIVE_FLAGS
-r /nologo /nologo
NOTES:
(1) Options include CORE-AVX2, CORE-AVX-I, AVX, SSE4.2, SSE4.1, SSSE3, SSE3, SSE2, IA32
-x(Linux) and /Qx(Wndows) set the minimum level of processor. When these options are used the code may not run on processors that do not support these features.
-ax(Linux) and /QAx(Windows) set additional architectures that may be used if present. Code will still run if they are not present.
(2) Use this option if the main program was not written in FORTRAN

The FMS Linux distribution includes a ksh script setfmsenv.ksh which defines these variables, based on the values of the following input environment variables:

8. Link Example Problems and Program DEMO

FMS includes a large number of example problems. One of these is probably close to your application. A description and source code is contained in Chapter 5 of the manual. FMS also contains program DEMO, which is described in Appendix F of the manual. To link the examples and program DEMO using the software installed above, execute the following script provided with the distribution:

NOTE: Starting with the Intel compiler 2013_SP1 the architecture flag changed from

__intel_new_proc_init

to

__intel_new_feature_proc_init

This symbol is defined in the file libirc.a. If you get an unsatisfied external __intel_new_feature_proc_init when linking and your compiler libraries are before SP1, download the new libirc.a and include it in the link.

File Size/Updated OS Processor
libirc.a Size= 605K bytes, Updated Tuesday, 04-Feb-2014 08:21:59 MST 64-bit Linux 64-bit X86 with SSE42 or newer instructions

9. Link Your Application

The following table shows the libraries and options required to link your application with FMSlib:
Linker Options and Libraries
Variable 64-bit Linux 64-bit Windows 32-bit Windows
FMS_LINKER ifort link link
FMS_LINKER_FLAGS -auto
-threads
-reentrancy threaded
-fpic
-ftz
/ENTRY:mainCRTStartup
/LARGEADDRESSAWARE
/MACHINE:X64
/NODEFAULTLIB:MSVCRT
/ENTRY:mainCRTStartup
/LARGEADDRESSAWARE
/MACHINE:X86
/NODEFAULTLIB:MSVCRT
FMS_LIBRARY fmsnoshr.a
fmsshr.so
fmsnoshr.lib
fmsshr.lib
fmsnoshr.lib
fmsshr.lib
FMS Shared Object fmsshr.so fmsshr.dll fmsshr.dll

10. License Files

FMSlib uses a .txt license file for authorizaton and to set Parameter values at startup. The following license files are automatically generated when the corresponding applications are run for the first time:

If a license file by that name does not exist, it will automatically be generated. If one exists, the existing file will be used.

To use FMS in your application requires a commercial license file fmslic.txt.

FMS is licensed on an annual basis. The license fee includes the following:

11. FMS Manual

The manual for FMS is available in HTML and PDF formats. Either version may be viewed online or downloaded. To obtain information on viewing or downloading the manual, click on the FMS Manual link at the top of this page.

12. Getting Help

For additional information, or to obtain a quotation,
mailbox
E-mail: rcy@fmslib.com