.. index:: ScaLAPACK .. _ScaLAPACK: ScaLAPACK ========= Description ----------- ScaLAPACK is a library of high-performance linear algebra routines for parallel distributed memory machines (think parallel LAPACK). User instructions ----------------- ScaLAPACK is available via the modules system. To add it to your environment run: .. code-block:: bash $ module load scalapack/2.0.2 A relevant OpenMPI module must also be loaded. ScaLAPACK is trickier to use than LAPACK but extensive documentation is available on the `netlib website `_. To link ScaLAPACK, add '-lscalapack' to the link command. Note that a LAPACK implementation must also be linked (e.g. :ref:`MKL ` or :ref:`LAPACK`). The :ref:`MKL ` also contains an (optimised) implementation of ScaLAPACK. Source ------ http://www.netlib.org/scalapack/ License ------- Modified BSD license. Admin notes ----------- .. code-block:: bash # Intel version ml intel openmpi lapack CMAKE_PREFIX_PATH=$OPENMPI_ROOT CC=icc CXX=icpc cmake ../scalapack-2.0.2 -DCMAKE_INSTALL_PREFIX=/common/debian/9.1/MPI/intel/2017.4/openmpi/2.1/scalapack/scalapack-2.0.2 -DBUILD_TESTING=ON -DBLAS_LIBRARIES:STRING=-lblas -DLAPACK_LIBRARIES:STRING=-llapack make make test # GCC version ml purge ml gcc openmpi lapack CMAKE_PREFIX_PATH=$OPENMPI_ROOT cmake ../scalapack-2.0.2 -DCMAKE_INSTALL_PREFIX=/common/debian/9.1/MPI/gcc/6.3/openmpi/2.1/scalapack/scalapack-2.0.2 -DBUILD_TESTING=ON -DBLAS_LIBRARIES:STRING=-lblas -DLAPACK_LIBRARIES:STRING=-llapack make make test BLAS and LAPACK implementations are required to compile the library but these need not be the ones linked to when compiling applications. For simplicity I chose the netlib reference implementations. The resultant library (lib/libscalapack.a) can then be just copied to the appropriate directory on the NFS server.