| Gmm++is a C++ class library, based on templates, for high-efficiency matrix and vector arithmetic, matrix decompositions, and linear solvers. It is a header file only library (no .cpp, .a, .so, or .lib files). I settled on Gmm++ after considerable research and experimentation extending over more than a few years -- including writing my own complete C++ template library for this purpose.
Currently, Csound uses Gmm++ to implement the linear algebra opcodes.
I may change the ublas stuff in CsoundAC to gmm, or ublas may evolve to incorporate more decompositions and solvers (that would be lovely). We will see.
I explained the choice of Gmm++ before, but I will recapitulate:
-- The gold standard in linear algebra routines is the BLAS (matrix and vector arithmetic) and LAPACK (decompositions and solvers) Fortran libraries. These are what we use to fight with, go into space with, or probe quarks with. They are 29 years old, bug free by now, well designed, and very widely used.
-- High-performance versions of BLAS and LAPACK are available in the following forms, collectively known as "vendor-tuned" (i.e., the code is heavily optimized to take advantage of every special instruction offered by a vendor's CPU):
o Commercial (Intel Performance Libraries, for example). These are presumably used by commercial audio software developers.
o GOTO BLAS, which is not open source.
o ATLAS, which is open source, but does not have a build system for MinGW/MSys. Used by many scientists.
It is a problem for Csound that ATLAS, the natural choice, does not easily build on Windows. ATLAS would also impose several additional dependencies on Csound: a Fortran compiler, and building both the BLAS library and the LAPACK library.
-- For the small, dense matrices used in signal processing, there are C++ libraries that perform almost as well as vendor-tuned BLAS. All of these C++ libraries are cross-platform and open source, therefore they are viable alternatives to BLAS and LAPACK for signal processing and for Csound.
o Matrix Template Library (MTL)
o boost::numeric::ublas
o Gmm++
o Template Numerical Toolkit (the library I wrote myself was essentially equivalent to TNT in functionality).
o There are several others...
-- I tried most of the C++ alternatives, and Gmm++ is best for our purposes. MTL is big code and didn't all build for me. ublas is very good, but has only a few decomposition and solvers (i.e., ublas can substitute for BLAS, but not for LAPACK). TNT is not widely used and is not really as efficient. Gmm++ is about as fast as ublas, has enough of the LAPACK decompositions and solvers, is header files only, and comprises a reasonably small amount of code.
So, Csound now has opcodes that provide almost all of the functionality of BLAS and LAPACK, and for small matrices and vectors ("small" is actually hundreds of elements) the opcodes should be just about as efficient as vendor-tuned BLAS.
As far as I know, other software sound synthesis systems don't provide this comprehensive functionality. We should, literally, now be able to write MATLAB like code in the Csound orchestra language.
Hope this helps,
Mike
-----Original Message-----
>From: Erik de Castro Lopo
>Sent: Sep 17, 2008 5:02 AM
>To: csound-devel@lists.sourceforge.net
>Subject: Re: [Cs-dev] What is gmm.h?
>
>jpff wrote:
>
>> I cannot find any reference to it in my distro packages and I do not
>> know what name to seek.
>
>If you are on Debian or Ubuntu, do the following:
>
> 0) Install the apt-file program:
>
> sudo apt-get install apt-file
>
> 1) Install apt-file's database.
>
> sudo apt-file update
>
> 2) Search for the file:
>
> apt-file search gmm.h
>
>On my system that results in:
>
> libgmm-dev: /usr/include/gmm/gmm.h
> libitpp-dev: /usr/include/itpp/srccode/gmm.h
>
>Not sure what those packages do?
>
> apt-cache search libgmm
>
>results in:
>
> libgmm-dev - generic C++ template library for sparse, dense and skyline matrices
>
>and
>
> apt-cache search libitpp
>
>results in:
>
> libitpp6 - C++ signal processing and communication library
>
>Hope this helps,
>Erik
>--
>-----------------------------------------------------------------
>Erik de Castro Lopo
>-----------------------------------------------------------------
>"I want to make sure (a user) can't get through ... an online
>experience without hitting a Microsoft ad."
> - Microsoft CEO, Steve Ballmer on the Microsoft search engine.
>
>-------------------------------------------------------------------------
>This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
>Build the coolest Linux based applications with Moblin SDK & win great prizes
>Grand prize is a trip for two to an Open Source event anywhere in the world
>http://moblin-contest.org/redirect.php?banner_id=100&url=/
>_______________________________________________
>Csound-devel mailing list
>Csound-devel@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/csound-devel
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Csound-devel mailing list
Csound-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/csound-devel |