Description
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
- 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 matrix
((DenseDComplexMatrix2D)M).fft2();// compute 2D DFT in-place
Example 2: compute 1D DFT of each column of a random complex matrix:
DComplexMatrix2D M = DComplexFactory2D.dense.random(1000, 1000); //random matrix
((DenseDComplexMatrix2D)M).fftColumns();// compute 1D DFT of each column of M
Example 3: compute 2D Discrete Cosine Transform (DCT) of a random real matrix:
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.
Features of Colt (quoted from Colt website)
- 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.
TODO - 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
Download
The source code distribution, besides Ant build file, contains also Eclipse project files.
version 0.9.4 (March 21, 2010) Changelog
binary:
doc:
source:
Donations
If you have found this library useful and would like to thank the author, you can make a donation
to show your appreciation.

|