Compilation guide for INMOST with Trilinos linear algebra packages on Windows
INMOST may be configured with optional Trilinos support. In this case INMOST will support calling linear solvers from Trilinos package, i.e. you will be able to activate Solver::Trilinos_Aztec, Solver::Trilinos_ML, Solver::Trilinos_Ifpack, Solver::Trilinos_Belos packages in Solver::Solver constructor.
This guide requires you to have CMake and Microsoft Visual Stuido. Tested with Epetra, AztecOO, Ifpack, Belos and ML packages from Trilinos 11.12.1.
In order to compile trilinos linear algebra packages you would need to provide it BLAS and LAPACK.
Go to http://icl.cs.utk.edu/lapack-for-windows/clapack/index.html and download an archive ending with CMAKE. You can try CLAPACK from official site http://www.netlib.org/clapack/ as well, but at the time it had no installation script which is necessery.
Unarchive CLAPACK into "clapack_source_path" and create "clapack_build_path". Open cmake-gui application and enter clapack_source_path into the field to the right from "Where is the source code" text and clapack_build_path into the field to the right from "Where to build the binaries".
Click "Configure" and select Visual Studio as your compiler, compiler should be the same as was for INMOST and would be for Trilinos.
Create folder clapack_build_path/install for the place where libraries and headers will be installed later and in CMake click "Add Entry" button and enter:
CMAKE_INSTALL_PREFIX
of type PATH
with clapack_build_path/install
Click "Configure" again and then click "Generate". Search for CLAPACK.sln file in clapack_build_path and open it.
Once Visual Studio is open go to "Build/Configuration Manager".
And change "Debug" mode to "Release" mode.
Now hit F7 button to compile CLAPACK library. After successful compilation go to "View/Solution Explorer".
In "Solution Explorer" right click on "INSTALL" project and click "Build".
Now you are ready to compile Trilinos.
You can download Trilinos package from http://trilinos.org/download/. Please note that in order to download it you have to provide some basic information about yourself.
After you have downloaded and unarchived Trilinos into "trilinos_source_path" create "trilinos_build_path". Open cmake-gui application and enter trilinos_source_path into the field to the right from "Where is the source code" text and trilinos_build_path into the field to the right from "Where to build the binaries".
Then hit "Configure" button, after some time CMake will provide you all the options that Trilinos offers.
You will need to click "Add Entry" button and add three entries one after another:
CLAPACK_DIR
of type PATH
and provide path to clapack_build_path/install
TPL_BLAS_LIBRARIES
type PATH
and provide path to clapack_build_path/install/lib/blas.lib;clapack_build_path/install/lib/libf2c.lib
TPL_LAPACK_LIBRARIES
type PATH
and provide path to clapack_build_path/install/lib/lapack.lib
After that if you want to use Trilinos solver in parallel you should
enter into search field TPL_ENABLE_MPI
and set the checkbox.
If your MPI library cannot be detected automatically by CMake you should also click "Add Entry" button and provide
MPI_INCLUDE_DIR
of type PATH with path to include directory of your MPI library
By default usage of Fortran compiler should be prohibited, but for any case search for Trilinos_ENABLE_Fortran
and unset checkbox if it is set.
Then you should search for the following fields and switch them to ON:
Trilinos_ENABLE_Epetra
Trilinos_ENABLE_AztecOO
Trilinos_ENABLE_Belos
Trilinos_ENABLE_ML
Trilinos_ENABLE_Ifpack
Then click "Configure". After some time you should see that configuration completed successfully.
Then click "Generate" and look for Trilinos.sln file in trilinos_build_path.
Open it, then go to "Build/Configuration Manager".
And switch from "Debug" mode to "Release" mode.
Then Hit F7 button to compile Trilinos libraries.
After some time you should see that compilation was almost successful but one project have failed.
This may happen due to some bug in the tested version of Trilinos. Go to "View/Error List" in menu bar.
Then double click on the first error illustrated on picture below (The second error does not prevent compilation, ignore it).
Teuchos_as.hpp file should open up on line 614. Replace "t" variable with "in" variable and hit F7 again.
After some continuous time compilation will end successfully for all the projects.
If you will look into trilinos_build_path/packages directory you will see a lot of libraries located separately.
Since it wouldn't be comfortable to supply all this libraries one at a time, we should run installation script.
In order to do that create trilinos_build_path/install directory. Then open CMake and fill two fields
CMAKE_INSTALL_PREFIX
of type PATH
with trilinos_build_path/install
Trilinos_INSTALLATION_DIR
of type PATH
with trilinos_build_path/install
Then click "Configure" and "Generate".
Return to Visual Studio. There click "View/Solution Explorer".
In "Solution Explorer" right click on "INSTALL" project and click "Build".
In output you should see that all required header files and libraries were copied to trilinos_build_path/install directory.
Now you have to provide information about Trilinos to INMOST library. Open CMake again and by clicking to black triangle at the right end of the field after "Where to build the binaries" and choose your build directory for INMOST.
Find and activate USE_SOLVER_TRILINOS
checkbox, then click "Add Entry" and enter the following:
TRILINOS_PATH
of type PATH
with trilinos_build_path/install
Then when you click "Configure" CMake should provide you with information on Trilinos:
Click "Generate" and now you can compile INMOST with Trilinos. In later times it may happen that you compile INMOST and encounter unresolved externals related to Trilinos. This happens due to some misconfiguration of Trilinos by CMake that results in all *.c files not being compiled. In order to fix it just wipe out all the trilinos_build_path directory and try to build everything from scratch.