README.md 2.07 KB
Newer Older
Fabiano Corsetti's avatar
Fabiano Corsetti committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
omm-bundle
==========

This repository is a bundle of four separate libraries:

*   pspBLAS: MPI parallel sparse matrix operations with 2D block-cyclic
             distribution
*   MatrixSwitch: multi-format matrix storage and operation
*   libOMM: Kohn-Sham solver using the orbital minimization method
*   tomato: test matrix generator for Kohn-Sham solvers

Each library has its own documentation and build systems, the details of which
you can find in the individual subdirectories.

Additionally, in this directory you will find two ways of installing the library
bundle as a whole. They are explained below.

Autotools build system
----------------------

The Autotools build system is available for pspBLAS, MatrixSwitch, and libOMM
(tomato coming soon). It can be accessed by running the `build-omm` script and
following the instructions. Note that external linear algebra libraries need to
be given either by modifying the script or by creating environmental variables
by typing:

`export LINALG_INCLUDES="path/to/headers"`
`export LINALG_LIBS="path/to/libraries"`

Manual build system
-------------------

The manual build system is available for all libraries, and makes use of the
file named Makefile.manual.

To install the libraries manually:

1.  Copy `make.inc.example` to `make.inc` and modify it to suit your needs.
    Available options for `FPPFLAGS` are:
    * `-DHAVE_MPI`: enable MPI parallel routines
    * `-DHAVE_LAPACK`: enable LAPACK routines
    * `-DHAVE_SCALAPACK`: enable ScaLAPACK routines (requires MPI)
    * `-DHAVE_PSPBLAS`: enable pspBLAS routines (requires MPI, LAPACK and
      ScaLAPACK)
45
46
    * `-DHAVE_MKL`: link the sequential sparse BLAS routines in Intel MKL to
      pspBLAS
Fabiano Corsetti's avatar
Fabiano Corsetti committed
47
48
49
50
51
52
53
    * `-DCONV`: enable automatic conversion of scalar types (real/complex) to
      agree with matrix definitions (real/complex). Needed for libOMM.
    * `-DNORAND`: fixed seed for the random number generator. Enable for testing
      purposes.
    * `-DCBIND`: use ISO_C_BINDING for LOGICAL inputs in the wrapper interfaces.
      Enable for linking to C.
3.  Type `make -f Makefile.manual`.