
  -- Electrical Engineering and Computer Science Department
  -- University of Tennessee
     __________ ____       _____    _________   _____      _____
     \______   \    |     /  _  \  /   _____/  /     \    /  _  \
      |     ___/    |    /  /_\  \ \_____  \  /  \ /  \  /  /_\  \
      |    |   |    |___/    |    \/        \/    Y    \/    |    \
      |____|   |_______ \____|__  /_______  /\____|__  /\____|__  /
                       \/       \/        \/         \/         \/

IMPORTANT INFORMATION ABOUT BLAS and LAPACK

  Optimized BLAS is Critical for Performance

  It is absolutely critical for performance to  use  PLASMA  in  conjunction
  with optimized implementation of  the  Basic  Linear  Algebra  Subroutines
  (BLAS) library. Such implementations are usually provided by the processor
  manufacturer. Examples include the Math Kernel Library  (MKL)  from  Intel,
  the AMD Core Math Library (ACML), the Engineering and Scientific  Software
  Library (ESSL) from IBM, etc.

  These libraries are likely to be provided free of  charge  for  non-profit
  use, such as  academic  research.  Alternatively,  GOTO  BLAS  from  Texas
  Advanced Computing  Center  (TACC)  can  be  used  or  ATLAS  from  Netlib
  (currently located at SourceForge). As the last resort, reference  FORTRAN
  implementation of BLAS from Netlib can be used. However, since Netlib BLAS
  is completely unoptimized, PLASMA with Netlib BLAS  will  deliver  correct
  numerical results, but NO PERFORMANCE WHATSOEVER!!!

  Multithreading within BLAS Must be Disabled

  PLASMA  relies  on  Basic  Linear  Algebra  Subroutines  (BLAS)  for  high
  performance  implementations  of  basic  single-core  operations  (kernels)
  and exploits parallelism at the algorithmic level above the level of  BLAS.
  For that reason, PLASMA must not be run with multithreading enabled within
  BLAS, as this is likely to create more execution threads than actual cores,
  what will annihilate PLASMA's performance.

  If the BLAS library used supports multithreading, it needs to be  disabled.
  Typically, this can be done by setting  appropriate  environment  variable
  from command prompt, for instance:

    > export OMP_NUM_THREADS=1
    > export MKL_NUM_THREADS=1
    > export GOTO_NUM_THREADS=1
    > export ATLAS_NUM_THREADS=1

  CBLAS Is Not Required

  PLASMA does not require the user  to  provide  the  BLAS  library  with  C
  language interface (CBLAS). Internally  PLASMA  calls  BLAS  through  both
  FORTRAN interface and C interface.  However,  PLASMA  includes  the  CBLAS
  implementation from Netlib and requires the user to only provide BLAS with
  FORTRAN 77 interface (sometimes referred to as legacy BLAS).

  LAPACK Is Not Required

  PLASMA does not require the user to provide the LAPACK library. Internally
  PLASMA calls a small subset of LAPACK  routines.  However,  all  necessary
  LAPACK routines are included in PLASMA.

LICENSE INFORMATION:

  PLASMA's license is a BSD-style permissive free software license (properly
  called modified BSD license). It allows proprietary  commercial  use,  and
  for the software released  under  the  license  to  be  incorporated  into
  proprietary commercial products.  Works  based  on  the  material  may  be
  released  under  a  proprietary  license  as  long  as  PLASMA's   license
  requirements are maintained (as stated in the COPYRIGHT file).

  In contrast to copyleft licences, like  the  GNU  General  Public  License,
  PLASMA's license allows for copies and derivatives of the source  code  to
  be made available on terms more restrictive than  those  of  the  original
  license.
