Parallel Colt is a multithreaded version of Colt. Current features, not available in Colt 1.2, include: **Multithreading**To fully utilize modern, multicore CPUs, one needs to use a multithreaded library. In Parallel Colt threads are used automatically when computations are done on a machine with multiple CPUs. Literally zero configuration is needed. For low-level concurrency CachedThreadPool is used.
**Additional, useful methods for matrices**getMaxLocation, getMinLocation, getNegativeValues, getPositiveValues, normalize, vectorize, reshape.
**Data structures**
- Dense
and sparse 1, 2 and 3-dimensional complex matrices.
- Dense and sparse 1, 2 and 3-dimensional matrices holding int and long elements.
- Dense 2 and 3-dimensional matrices that can store more than 2^31 elements (2D and 3D Java arrays are used internally)
- Dense 2D matrices with internal cells addressed in column-major.
- Diagonal 2D matrices.
- Sparse 2D matrices in column-compressed form.
- Sparse hashed 2D matrices where each row is represented by 1D sparse matrix.
- Sparse hashed 2D matrices where each column is represented by 1D sparse matrix.
- Hash maps holding (key,value) associations of type (long -> double), (double -> long), (long -> float), (float -> long), (long -> long), (int -> long) and (long -> int).
- Streaming buffers holding boolean, byte, char, long and short elements
- Dense
and sparse 1, 2 and 3-dimensional complex matrices.
**JTransforms** JTransforms is the first, open source, multithreaded FFT library written in pure Java. Example 1: compute 2D Discrete Fourier Transform (DFT) of a random complex matrix: DComplexMatrix2D M = DComplexFactory2D.dense.random(1000, 1000); //random matrixExample 2: compute 1D DFT of each column of a random complex matrix: ((DenseDComplexMatrix2D)M).fft2();// compute 2D DFT in-place DComplexMatrix2D M = DComplexFactory2D.dense.random(1000, 1000); //random matrixExample 3: compute 2D Discrete Cosine Transform (DCT) of a random real matrix: ((DenseDComplexMatrix2D)M).fftColumns();// compute 1D DFT of each column of M
DoubleMatrix2D M = DoubleFactory2D.dense.random(1000, 1000); //random matrix ((DenseDoubleMatrix2D)M).dct2();// compute 2D DCT in-place**JPlasma** JPlasma is a Java port of PLASMA (Parallel Linear Algebra for Scalable Multi-core Architectures). Currently, the following functionalities are available: QR factorization, solving the system of linear equations using QR factorization, LU factorization, solving the system of linear equations using LU factorization, Cholesky factorization, solving the system of linear equations using Cholesky factorization.**CSparseJ** CSparseJ is a Java port of CSparse (a Concise Sparse matrix package).**Netlib-java** Netlib is a collection of mission-critical software components for linear algebra systems (i.e. working with vectors or matrices). Netlib libraries are written in C, Fortran or optimized assembly code. A Java translation has been provided by the F2J project but it does not take advantage of optimized system libraries. Netlib-java provides a wrapper layer that gives Java programmers access to a common API which can be configured to use either the pure Java or natively optimized implementations of BLAS, LAPACK and ARPACK such as Intel's Math Kernel Library, AMD's Core Math Libary, Apple's vecLib Framework or the popular open source ATLAS. This ensures perfect portability, while allowing for improved performance in a production environment.**Iterative Solvers**The following solvers and preconditioners (mostly adapted from Matrix Toolkits for Java) are available in Parallel Colt.
Krylov subspace solvers:- BiCG - BiConjugate Gradients.
- BiCGstab - BiConjugate Gradients stabilized.
- CG - Conjugate Gradients.
- CGS - Conjugate Gradients squared.
- Chebyshev - The Chebyshev iteration for symmetrical, positive definite matrices.
- GMRES - Generalized Minimal Residual using restart.
- IR - Iterative Refinement (Richardson's method).
- QMR - Quasi-Minimal Residual.
Solvers for ill-posed inverse problems:Iterative methods for solving
large-scale, ill-posed inverse problems of the form b = A*x + noise.
- HyBR - Hybrid Bidiagonalization Regularization. The method combines an iterative Lanczos Bidiagonalization (LBD) with an SVD-based regularization to stabilize the semiconvergence behavior that is characteristic of many ill-posed problems.
- MRNSD - Modified Residual Norm Steepest Descent. This algorithm is nonnegatively constrained.
- CGLS - Conjugate Gradient for Least Squares.
Preconditioners:- Diagonal - uses the inverse of the diagonal as preconditioner.
- ICC - Incomplete Cholesky without fill-in.
- ILU - Incomplete LU without fill-in.
- ILUT - ILU with fill-in; uses the dual threshold approach of Saad.
- SSOR - Symmetrical Sucessive Overrelaxation.
- AMG - Algebraic Multigrid.
**Nonlinear Optimization**Nonlinear Optimization contains Java translations of the 1-dimensional minimization routine, fmin, the multi-dimensional minimization routine Uncmin, the MINPACK nonlinear least squares routines (lmder1, lmder, lmdif1, and lmdif), and the SLATEC 1-dimensional zero-finding routine, dfzero.
**Matrix reader/writer**Matrix reader and writer (adapted from Matrix Toolkits for Java) that supports Matrix Market Exchange Formats.
**Single and double precision**All classes that use floating point arithmetic are implemented in single and double precision.
**Parallel quicksort algorithm****JUnit tests**
**Benchmarks**BenchmarkDenseDoubleMatrix1D.txt
BenchmarkDenseDoubleMatrix2D.txt BenchmarkDenseDoubleMatrix3D.txt
**Templated Lists and Maps** Dynamically resizing lists holding objects or primitive data types such as`int` ,`double` , etc. Operations on primitive arrays and algorithms on Colt lists can freely be mixed at zero copy overhead. Automatically growing and shrinking maps holding objects or primitive data types such as`int` ,`double` , etc. Space efficient high performance BitVectors and BitMatrices.**Templated Multi-dimensional matrices** Dense and sparse fixed sized (non-resizable) 1, 2, and 3-dimensional matrices holding objects or primitive data types such as`int` ,`double` , etc; Also known as*multi-dimensional arrays*or*Data Cubes*.**Linear Algebra** Standard matrix operations and decompositions. LU, QR, Cholesky, Eigenvalue, Singular value.**Histogramming** Compact, extensible, modular and performant histogramming functionality. It offers the histogramming features of HTL and HBOOK.**Mathematics** Tools for basic and advanced mathematics: Arithmetics and Algebra, Polynomials and Chebyshev series, Bessel and Airy functions, Constants and Units, Trigonometric functions, etc.**Statistics** Tools for basic and advanced statistics: Estimators, Gamma functions, Beta functions, Probabilities, Special integrals, etc.**Random Numbers and Random Sampling** Strong yet quick. Partly a port of CLHEP.
- Port PLASMA and implement all the wrappers (include complex arithmetic in single and double precision).
- Add multithreaded lists and hashmaps (Highly Scalable Java).
- Extend matrix reader/writer to support all Matrix Market Exchange Formats.
- Add parallel mergesort algorithm.
- Parallelize histogramming and statistics functionalities.
- Add dynamically extendable and out-of-core matrices (Dcolt).
- Implement all missing unit tests.
- Implement more benchmarks.
- Cleanup the javadoc.
License
**Packages cern.colt.* , cern.jet.*, cern.clhep**
Copyright © 1999 CERN - European Organization for Nuclear Research Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. CERN makes no representations about the suitability of this software for any purpose. It is provided "as is" without expressed or implied warranty.
**Packages hep.aida.***
Written by Pavel Binko, Dino Ferrero Merlino, Wolfgang Hoschek, Tony Johnson, Andreas Pfeiffer, and others. Check the FreeHEP home page for more info. Permission to use and/or redistribute this work is granted under the terms of the LGPL License, with the exception that any usage related to military applications is expressly forbidden. The software and documentation made available under the terms of this license are provided with no warranty.**jtransforms.jar and csparsej.jar**
GNU Lesser General Public License Version 2.1**optimization.jar**
THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE AUTHOR/TRANSLATOR DOES NOT WARRANT, GUARANTEE OR MAKE ANY REPRESENTATIONS REGARDING THE SOFTWARE OR DOCUMENTATION IN TERMS OF THEIR CORRECTNESS, RELIABILITY, CURRENTNESS, OR OTHERWISE. THE ENTIRE RISK AS TO THE RESULTS AND PERFORMANCE OF THE SOFTWARE IS ASSUMED BY YOU. IN NO CASE WILL ANY PARTY INVOLVED WITH THE CREATION OR DISTRIBUTION OF THE SOFTWARE BE LIABLE FOR ANY DAMAGE THAT MAY RESULT FROM THE USE OF THIS SOFTWARE.**jplasma.jar**
-- Innovative Computing Laboratory -- Electrical Engineering and Computer Science Department -- University of Tennessee -- (C) Copyright 2008
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the University of Tennessee, Knoxville nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**netlib-java.jar and arpack-combo.jar**
Copyright 2003-2007 Keith Seymour. Copyright 1992-2007 The University of Tennessee. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer listed in this license in the documentation and/or other materials provided with the distribution
- Neither the name of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **junit.jar**Common Public License Version 1.0
The source code distribution, besides Ant build file, contains also Eclipse project files.
- parallelcolt-0.9.4-bin.zip [4,934,590 bytes]
- parallelcolt-0.9.4-bin.tar.bz2 [4,934,590 bytes]
- parallelcolt-0.9.4-doc.zip [6,042,223 bytes]
- parallelcolt-0.9.4-doc.tar.bz2 [1,489,204 bytes]
- parallelcolt-0.9.4-src.zip [4,923,804 bytes]
- parallelcolt-0.9.4-src.tar.bz2 [3,120,689 bytes]
- svn checkout http://svn.code.sf.net/p/parallelcolt/code/trunk parallelcolt-code
If you have found this library useful and would like to thank the author, you can make a donation
to show your appreciation. |