This page describes how to install, and test version PLASMA 2.0.0, a linear algebra package for high-performance computers, on a Linux, Unix and MacOS X System. Windows installation instructions are not contained in this document.

This work was supported by NSF Grant No. CCF-0811642, NSF Grant No. CCF-0811520 and Microsoft.

1. Introduction

PLASMA is a linear algebra library for high-performance computers. The library includes Fortran 77 and C subroutines for the analysis and solution of systems of simultaneous linear algebraic equations, linear least-squares problems, and matrix eigenvalue problems.

The Parallel Linear Algebra for Scalable Multi-core Architectures (PLASMA) project aims to address the critical and highly disruptive situation that is facing the Linear Algebra and High Performance Computing community due to the introduction of multi-core architectures.

PLASMA’s ultimate goal is to create software frameworks that enable programmers to simplify the process of developing applications that can achieve both high performance and portability across a range of new architectures.

The development of programming models that enforce asynchronous, out of order scheduling of operations is the concept used as the basis for the definition of a scalable yet highly efficient software framework for Computational Linear Algebra applications.

This guide describes how to install, test, and time this release of PLASMA on a Linux, Unix and Mac OS/X System.

In order to install the PLASMA library, you require a C compiler, a Fortran Compiler, a BLAS library and the availability of the pthread library. Before PLASMA can be built, or the tested, you must define all machine-specific parameters for the architecture to which you are installing PLASMA. All machine-specific parameters are contained in the file make.inc. We provide you an installer to ease the installation process. Users are strongly encouraged to use it.

2. Getting the PLASMA Installer

The PLASMA installer is a set of python scripts developed to ease the installation of the PLASMA library. It can automatically download, configure and compile the PLASMA library including its BLAS dependency. It is available on PLASMA download page: http://icl.cs.utk.edu/plasma/software/

3. PLASMA Installer flags

Here’s a list of the flags that can be used to provide the installer information about the system like, for example, the C and Fortran compilers, the BLAS library that is already present on the system and need not be downloaded.

          -h or --help        : prints this message

          --prefix            : path where to create the libraries, build and log of the installer

          --cc=[CMD]          : the C compiler.

          --fc=[CMD]          : the Fortran compiler.

          --ccflags=[FLAGS]   : the flags for the C compiler
                                 (default -O3)

          --fcflags=[FLAGS]   : the flags for the Fortran compiler
                                 (default -O3)

          --ldflags_c=[flags] : loader flags when main program is in C. Some compilers (e.g. PGI) require
                                 different options when linking C main programs to Fortran subroutines
                                 and vice-versa

          --ldflags_fc=[flags]: loader flags when main program is in Fortran. Some compilers (e.g. PGI) require
                                 different options when linking Fortran main programs to C subroutines
                                 and vice-versa

          --makecmd=[CMD]     : the make command
                                 (make by default)

          --blaslib=[LIB]     : a BLAS library
                                 (path should be absolute if --prefix is used)

          --downblas          : if you do not want to provide a BLAS
                                 we can download and install it for you

          --nbcores           : The number of cores to be used by the testing.
                                 (2 by default)

          --notesting         : disables the PLASMA testing. The BLAS library is not
                                required in this case.

          --clean             : cleans up the installer directory.

The installer will set

OMP_NUM_THREADS=1
GOTO_NUM_THREADS=1
MKL_NUM_THREADS=1

to disable the multithreading within BLAS. Do not forget to set those environment variables for any further PLASMA testing you want to run

4. PLASMA Installer Usage

For an installation with gcc, gfortran and Reference BLAS

./setup.py --cc gcc --fc gfortran --downblas

For an installation with ifort, icc and MKL (em64t architecture)

./setup.py --cc icc --fc ifort --blaslib="-lmkl_em64t -lguide"

For an installation with gcc, gfortran and Veclib (Mac OS/X)

./setup.py --cc gcc --fc gfortran --blaslib="-framework veclib"

For an installation with gcc, gfortran, ATLAS

./setup.py --cc gcc --fc gfortran --blaslib="-lf77blas -lcblas -latlas"

For an installation with gcc, gfortran, goto BLAS and 4 cores

./setup.py --cc gcc --fc gfortran --blaslib="-lgoto" --nbcores=4

For an installation with xlc, xlf, essl and 8 cores

./setup.py --cc xlc --fc xlf --blaslib="-lessl" --nbcores=8

5. PLASMA Installer Support

Please note that this is an alpha version and, even if it has been tested on a wide set of systems, may not work. In case you encounter a problem, your feedback would be greatly appreciated and would be very useful to improve the quality of this installer. Please submit your complaints and suggestions to the PLASMA forum: http://icl.cs.utk.edu/plasma/forum/

6. Tips and Tricks

6.1. Testings are slow

Please note that, in the case where the installer is asked to automatically download and install the BLAS library, the reference BLAS is installed and, thus, very low performance is to be expected. It is strongly recommended that you use an highly optimized BLAS library (like ATLAS, MKL, GotoBLAS, ESSL etc.) and provide a path to its location through the –blaslib flag.

6.2. For Mac

Veclib is accessible if you install the Xcode/developer package provides with your Mac OS installation CD. On MAC OS/C you may be required to add --ccflags=’ -I/usr/include/sys/’

6.3. Processors with Hyper-threading

The plasma installer cannot detect if you have hyper-threading or not on your machine. We advice always to limit the number of core for the first testing of the PLASMA library to half the numbers of cores available if you do not know your exact architecture. Using hyper-threading will cause the PLASMA testings to hangs.

6.4. Problem with download

If the required packages cannot be automatically downloaded (for example, because no network connection is available on the system), you can take them any way you like from the following URLs and place them in the build directory (if the directory does not exist, create it):

BLAS : http://netlib.org/blas/blas.tgz PLASMA : http://icl.cs.utk.edu/projectsfiles/plasma/pubs/plasma.tar.gz