[IPOL discuss] SVD for IPOL: which library, and how?

Nicolas Limare nicolas.limare at cmla.ens-cachan.fr
Fri Apr 1 10:40:36 CEST 2011


Hi all,

We have one existing IPOL algorithm and at least 2 future ones which
need to perform a singular value decomposition. Instead of writing
their own code to do that, it makes sense to use an external
library. The question is: which library, and how to use it? Some
possibilities are detailed hereafter, and we would like the opinion of
the editorial board.

We identified 3 potential candidates:

* LAPACK has some functions to perform a SVD.

  -> http://www.netlib.org/lapack/lug/node32.html
  LAPACK is already an "allowed library dependency" for IPOL
  implementations. The first IPOL article and demo using LAPACK
  (clapack) is already being tested

* The GNU Scientific Library (GSL) contains sone SVD functions. 

  -> http://www.gnu.org/software/gsl/manual/html_node/Singular-Value-Decomposition.html
  This library is not yet an "allowed library dependency", but the
  first discussion on this list was about allowing it. Maybe it's time
  to consider this possibility.
  -> http://tools.ipol.im/mailman/archive/discuss/2010-September/000000.html

* The Eigen library has some SVD classes.

  -> http://eigen.tuxfamily.org/dox/group__SVD__Module.html
  I don't know much about this library, but Pierre Moulon and Pascal
  Monasse say it is easy to use on both Unix and Windows platforms,
  well maintained and used in many projects.

Each of these libraries can either be included with the IPOL algorithm
source code, or we can suppose they are already installed and
available on the system.

I have almost no experience on Windows, but Pierre says installing
libraries is a problem. I identified some possible precompiled
packages for LAPACK anf GSL[1], but I have no idea of their quality. I
found no precompiled Eigen package for Windows. On Linux, these three
libraries are included in the major distributions. Lapack is provided
by Apple on MAC OSX, GSL and Eigen are available in the Macports and
Fink distributions.

If we choose to include the library code with the algorithm, Pierre
and Pascal say LAPACK and GSL are huge and hard top compile on
Windows, and they suggest to include Eigen with the algorithm source
code. Eigen seems to be easy to compile. Pascal suggests to use the
Eigen SVD implementation as a replaceable black box not submitted to
the IPOL review process, like what is currently done with the
(external) FFTW3 dependency.


So, what is your preferred solution? What should IPOL accept or promote?


[1]GSL: http://gnuwin32.sourceforge.net/packages/gsl.htm
   REFBLAS/LAPACK: http://www.netlib.org/clapack/
   BLAS/LAPACK in MKL: http://software.intel.com/en-us/articles/intel-mkl/#details

-- 
Nicolas LIMARE - CMLA - ENS Cachan    http://www.cmla.ens-cachan.fr/~limare/
IPOL - image processing on line                          http://www.ipol.im/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://tools.ipol.im/mailman/archive/discuss/attachments/20110401/84d3353e/attachment-0001.pgp>


More information about the discuss mailing list