Mercurial > hg > segmenter-vamp-plugin
diff armadillo-3.900.4/README.txt @ 49:1ec0e2823891
Switch to using subrepo copies of qm-dsp, nnls-chroma, vamp-plugin-sdk; update Armadillo version; assume build without external BLAS/LAPACK
author | Chris Cannam |
---|---|
date | Thu, 13 Jun 2013 10:25:24 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/armadillo-3.900.4/README.txt Thu Jun 13 10:25:24 2013 +0100 @@ -0,0 +1,502 @@ +=== Contents === + +1: Introduction + +2: Citation Details + +3: Installation + 3.0: Preliminaries + 3.1: Installation on Linux and Mac OS X + 3.2: Manual Installation / Installation on Windows + +4: Compiling Programs and Linking + 4.0: Examples + 4.1: Compiling & Linking on Linux and Mac OS X + 4.2: Compiling & Linking on Windows + +5: Support for high-speed BLAS & LAPACK replacements + 5.0: Support for OpenBLAS, Intel MKL and AMD ACML + 5.1: Support for ATLAS + +6: Documentation / API Reference Manual + +7: FAQs and Bug Reports + +8: Developers and Contributors + +9: License + + + + +=== 1: Introduction === + +Armadillo is a C++ linear algebra library (matrix maths) +aiming towards a good balance between speed and ease of use. +The syntax is deliberately similar to Matlab. + +Integer, floating point and complex numbers are supported, +as well as a subset of trigonometric and statistics functions. +Various matrix decompositions are provided through optional +integration with LAPACK or high-performance LAPACK-compatible +libraries (such as Intel MKL or AMD ACML). + +A delayed evaluation approach is employed (during compile time) +to combine several operations into one and reduce (or eliminate) +the need for temporaries. This is accomplished through recursive +templates and template meta-programming. + +This library is useful for conversion of research code into +production environments, or if C++ has been decided as the +language of choice, due to speed and/or integration capabilities. + +The library is open-source software, and is distributed under a +license that is useful in both open-source and commercial/proprietary +contexts. + +Armadillo is primarily developed at NICTA (Australia), +with contributions from around the world. More information +about NICTA can be obtained from http://nicta.com.au + + + +=== 2: Citation Details === + +Please cite the following tech report if you use Armadillo in your +research and/or software. Citations are useful for the continued +development and maintenance of the library. + + Conrad Sanderson. + Armadillo: An Open Source C++ Linear Algebra Library for + Fast Prototyping and Computationally Intensive Experiments. + Technical Report, NICTA, 2010. + + + +=== 3.0: Installation: Preliminaries === + +Armadillo makes extensive use of template meta-programming, +recursive templates and template based function overloading. +As such, C++ compilers which do not fully implement the C++ +standard may not work correctly. + +The functionality of Armadillo is partly dependent on other +libraries: mainly LAPACK and BLAS. Armadillo can work without +LAPACK or BLAS, but its functionality will be reduced. +In particular, basic functionality will be available +(eg. matrix addition and multiplication), but things like +eigen decomposition or matrix inversion will not be. +Matrix multiplication (mainly for big matrices) may not be as fast. + +* For automatic installation on Linux and Mac OS X systems, + see section 3.1. This installation is also likely to work on + other Unix-like systems, such as FreeBSD, NetBSD, OpenBSD, + Solaris, CygWin, etc. + +* For manual installation and/or installation on Windows, + see section 3.2. + +* If you have a previous version of Armadillo already installed, + we recommend removing it before installing a newer version. + + + +=== 3.1: Installation on Linux and Mac OS X === + +You can use the manual installation process as described in +section 3.2, or the following CMake based automatic installation. + +* Step 1: + If CMake is not already be present on your system, download + it from http://www.cmake.org + + On major Linux systems (such as Fedora, Ubuntu, Debian, etc), + cmake is available as a pre-built package, though it may need + to be explicitly installed (using a tool such as PackageKit, + yum, rpm, apt, aptitude). + +* Step 2: + If you have BLAS and/or LAPACK, install them before installing + Armadillo. Under Mac OS X this is not necessary. + + On Linux systems it is recommended that the following libraries + are present: LAPACK, BLAS, ATLAS and Boost. LAPACK and BLAS are + the most important. If you have ATLAS and Boost, it's also necessary + to have the corresponding header files installed. + + For best performance, we recommend using the multi-threaded OpenBLAS + library instead of standard BLAS. See http://xianyi.github.com/OpenBLAS/ + +* Step 3: + Open a shell (command line), change into the directory that was + created by unpacking the armadillo archive, and type the following + commands: + + cmake . + make + + The full stop separated from "cmake" by a space is important. + CMake will figure out what other libraries are currently installed + and will modify Armadillo's configuration correspondingly. + CMake will also generate a run-time armadillo library, which is a + combined alias for all the relevant libraries present on your system + (eg. BLAS, LAPACK and ATLAS). + + If you need to re-run cmake, it's a good idea to first delete the + "CMakeCache.txt" file (not "CMakeLists.txt"). + +* Step 4: + If you have access to root/administrator/superuser privileges, + first enable the privileges (eg. through "su" or "sudo") + and then type the following command: + + make install + + If you don't have root/administrator/superuser privileges, + type the following command: + + make install DESTDIR=my_usr_dir + + where "my_usr_dir" is for storing C++ headers and library files. + Make sure your C++ compiler is configured to use the sub-directories + present within this directory. + + + +=== 3.2: Manual Installation / Installation on Windows === + +The manual installation is comprised of 3 steps: + +* Step 1: + Copy the entire "include" folder to a convenient location + and tell your compiler to use that location for header files + (in addition to the locations it uses already). + Alternatively, you can use the "include" folder directly. + +* Step 2: + Modify "include/armadillo_bits/config.hpp" to indicate + which libraries are currently available on your system. + For example, if you have LAPACK and BLAS (or OpenBLAS) present, + uncomment the following lines: + + #define ARMA_USE_LAPACK + #define ARMA_USE_BLAS + +* Step 3: + If you have LAPACK and/or BLAS present, configure your + compiler to link with these libraries. + + If using Linux, link using -llapack -lblas + If using Mac OS X, link using -framework Accelerate + If using Windows, see section 4.2. + + You can also link with high-speed replacements for LAPACK and BLAS, + such as OpenBLAS, or Intel MKL, or AMD ACML. See section 5 for more info. + + + +=== 4.0: Compiling Programs and Linking: Examples === + +The "examples" directory contains several quick example programs +that use the Armadillo library. If Armadillo was installed manually +(ie. according to section 3.2), you will also need to explicitly +link your programs with the libraries that were specified in +"include/armadillo_bits/config.hpp". + +"example1.cpp" may require the BLAS library or its equivalent. +"example2.cpp" requires the LAPACK library or its equivalent +(eg. the Accelerate framework on Mac OS X). + +You may get errors at compile or run time if BLAS and/or LAPACK +functions are not available. + +NOTE: As Armadillo is a template library, we recommended that + optimisation is enabled during compilation. For example, + for the GCC compiler use -O1 or -O2 + + + +=== 4.1: Compiling & Linking on Linux and Mac OS X === + +Please see "examples/Makefile", which may may need to be configured +for your system. If Armadillo header files were installed in a +non-standard location, you will need to modify "examples/Makefile" +to tell the compiler where they are. + +In general, programs which use Armadillo are compiled along these lines: + g++ example1.cpp -o example1 -O2 -larmadillo + +(you may also need to specify the include directory via the -I switch) + +If you get linking errors, or if Armadillo was installed manually +and you specified that LAPACK and BLAS are available, you will +need to explicitly link with LAPACK and BLAS (or their equivalents), +for example: + g++ example1.cpp -o example1 -O2 -llapack -lblas + +(you may also need to specify the library directory via the -L switch) + +Notes: + + * under most Linux systems, using "-llapack -lblas" should be enough; + however, on Ubuntu and Debian you may need to add "-lgfortran" + + * under Mac OS X, try "-framework Accelerate" or "-llapack -lblas" + (the Accelerate option is usually the fastest) + + * under the Sun Studio compiler, try "-library=sunperf" + + + +=== 4.2: Compiling & Linking on Windows === + +As a courtesy, we've provided pre-compiled 32 bit versions of +standard LAPACK and BLAS for Windows, as well as MSVC project +files to compile example1.cpp and example2.cpp. +The project files are stored in the following folders: + examples/example1_win32 + examples/example2_win32 + +The standard 32 bit versions of the LAPACK and BLAS libraries +are stored in: + examples/lib_win32 + +If you're getting messages such as "use of LAPACK needs to be enabled", +you will need to manually modify "include/armadillo_bits/config.hpp" +to enable the use of LAPACK. See section 3.2 for more information. + +Note that on 64 bit systems (such as Windows 7), dedicated +64 bit versions of BLAS and LAPACK are considerably faster. +If you don't have a 64 bit BLAS library, it's better to +explicitly disable the use of BLAS by defining ARMA_DONT_USE_BLAS +before including the armadillo header: + +#define ARMA_DONT_USE_BLAS +#include <armadillo> + +The MSCV project files were tested on 32 bit Windows XP with +Visual C++ 2008 (Express Edition). You may need to make adaptations +for 64 bit systems, later versions of Windows and/or the compiler. +For example, you may have to enable or disable the ARMA_BLAS_LONG +and ARMA_BLAS_UNDERSCORE macros in "armadillo_bits/config.hpp". + +The pre-compiled versions of LAPACK and BLAS were downloaded from: + http://www.fi.muni.cz/~xsvobod2/misc/lapack/ + +If the provided libraries don't work for you, or you want more speed, +try these versions: + http://software.intel.com/en-us/intel-mkl/ + http://developer.amd.com/tools-and-sdks/cpu-development/amd-core-math-library-acml/ + http://xianyi.github.com/OpenBLAS/ + http://www.stanford.edu/~vkl/code/libs.html + http://icl.cs.utk.edu/lapack-for-windows/lapack/ + +The OpenBLAS, MKL and ACML libraries are generally the fastest. +See section 5 for more info on making Armadillo use these libraries. + + +You can find the original sources for standard BLAS and LAPACK at: + http://www.netlib.org/blas/ + http://www.netlib.org/lapack/ + + +We recommend the following high-quality compilers: + + * GCC (part MinGW) + http://www.mingw.org/ + + * GCC (part of CygWin) + http://www.cygwin.com/ + + * Intel C++ compiler + http://software.intel.com/en-us/intel-compilers/ + +For the GCC compiler, use version 4.0 or later. +For the Intel compiler, use version 10.0 or later. + +For best results we also recommend using an operating system +that's more reliable and more suitable for heavy duty work, +such as Mac OS X or the various flavours of Linux, +eg. Scientific Linux: http://www.scientificlinux.org/ + + + +=== 5.0: Support for OpenBLAS, Intel MKL and AMD ACML === + +Armadillo can use OpenBLAS, or Intel Math Kernel Library (MKL), or the +AMD Core Math Library (ACML) as high-speed replacements for BLAS and LAPACK. +Generally this just involves linking with the replacement libraries +instead of BLAS and LAPACK. + +You may need to make minor modifications to "include/armadillo_bits/config.hpp" +in order to make sure Armadillo uses the same style of function names +as used by MKL or ACML. For example, the function names might be in capitals. + +On Linux systems, MKL and ACML might be installed in a non-standard +location, such as /opt, which can cause problems during linking. +Before installing Armadillo, the system should know where the MKL or ACML +libraries are located. For example, "/opt/intel/mkl/lib/intel64/". +This can be achieved by setting the LD_LIBRARY_PATH environment variable, +or for a more permanent solution, adding the directory locations +to "/etc/ld.so.conf". It may also be possible to store a text file +with the locations in the "/etc/ld.so.conf.d" directory. +For example, "/etc/ld.so.conf.d/mkl.conf". +If you modify "/etc/ld.so.conf" or create "/etc/ld.so.conf.d/mkl.conf", +you will need to run "/sbin/ldconfig" afterwards. + +Example of the contents of "/etc/ld.so.conf.d/mkl.conf" on a RHEL 6 system, +where Intel MKL version 11.0.3 is installed in "/opt/intel": + +/opt/intel/lib/intel64 +/opt/intel/mkl/lib/intel64 + +The default installations of ACML 4.4.0 and MKL 10.2.2.025 are known +to have issues with SELinux, which is turned on by default in Fedora +(and possibly RHEL). The problem may manifest itself during run-time, +where the run-time linker reports permission problems. +It is possible to work around the problem by applying an appropriate +SELinux type to all ACML and MKL libraries. + +If you have ACML or MKL installed and they are persistently giving +you problems during linking, you can disable the support for them +by editing the "CMakeLists.txt" file, deleting "CMakeCache.txt" and +re-running the CMake based installation. Specifically, comment out +the lines containing: + INCLUDE(ARMA_FindMKL) + INCLUDE(ARMA_FindACMLMP) + INCLUDE(ARMA_FindACML) + + + +=== 5.1: Support for ATLAS === + +Armadillo can use the ATLAS library for faster versions of +certain LAPACK and BLAS functions. Not all ATLAS functions are +currently used, and as such LAPACK should still be installed. + +The minimum recommended version of ATLAS is 3.8. +Old versions (eg. 3.6) can produce incorrect results +as well as corrupting memory, leading to random crashes. + +Users of Ubuntu and Debian based systems should explicitly +check that version 3.6 is not installed. It's better to +remove the old version and use the standard LAPACK library. + + + +=== 6: Documentation / API Reference Manual === + +A reference manual (documentation of APIs) is available at + + http://arma.sourceforge.net/docs.html + +and in the "docs.html" file in this archive, +which can be viewed with a web browser. + +The documentation explains how to use Armadillo's +classes and functions, with snippets of example code. + + + +=== 7: FAQs and Bug Reports === + +Answers to Frequently Asked Questions (FAQs) can be found at: + + http://arma.sourceforge.net/faq.html + +This library has gone through extensive testing and +has been successfully used in production environments. +However, as with almost all software, it's impossible +to guarantee 100% correct functionality. + +If you find a bug in the library (or the documentation), +we are interested in hearing about it. Please make a +_small_ _self-contained_ program which exposes the bug +and send the program source (as well as the bug description) +to the developers. The developers' contact details are at: + + http://arma.sourceforge.net/contact.html + + + +=== 8: Developers and Contributors === + +Main sponsoring organisation: +- NICTA + http://nicta.com.au + +Main developers: +- Conrad Sanderson - http://itee.uq.edu.au/~conrad/ +- Ryan Curtin +- Ian Cullinan +- Dimitrios Bouzas +- Stanislav Funiak + +Contributors: +- Matthew Amidon +- Eric R. Anderson +- Benoît Bayol +- Salim Bcoin +- Justin Bedo +- Evan Bollig +- Darius Braziunas +- Filip Bruman +- Ted Campbell +- James Cline +- Chris Cooper +- Clement Creusot +- Chris Davey +- Dirk Eddelbuettel +- Romain Francois +- Michael McNeil Forbes +- Piotr Gawron +- Charles Gretton +- Benjamin Herzog +- Edmund Highcock +- Szabolcs Horvat +- Friedrich Hust +- Kshitij Kulshreshtha +- Oka Kurniawan +- Simen Kvaal +- David Lawrence +- Jussi Lehtola +- Jeremy Mason +- Nikolay Mayorov +- Carlos Mendes +- Sergey Nenakhov +- Artem Novikov +- Martin Orlob +- Ken Panici +- Adam Piątyszek +- Jayden Platell +- Vikas Reddy +- Ola Rinta-Koski +- Boris Sabanin +- James Sanders +- Alexander Scherbatey +- Gerhard Schreiber +- Ruslan Shestopalyuk +- Shane Stainsby +- Petter Strandmark +- Eric Jon Sundstrom +- Paul Torfs +- Martin Uhrin +- Simon Urbanek +- Juergen Wiest +- Arnold Wiliem +- Yong Kang Wong +- Buote Xu +- Sean Young + + + +=== 9: License === + +Unless specified otherwise, the Mozilla Public License v2.0 is used. +See the "LICENSE.txt" file for license details. + +The file "include/armadillo_bits/fft_engine.hpp" is licensed under +both the Mozilla Public License v2.0 and a 3-clause BSD license. +See "include/armadillo_bits/fft_engine.hpp" for license details. + +