News
v1.2 (released 2012-02-23)
-
Matrix Construction:
-
Switched to template based coefficient functions (
TCoeffFnand derived) and all depended classes, e.g.TDenseMBuilder, SVD and ACA low rank approximation. -
Rewrote HCA:
- Simpler interface containing all neccessary functionality in single class.
- Using template for value type.
- Added base classes for permuted indices and for BEM applications using quadrature.
- Added implementation for Laplace and Helmholtz also for linear ansatz spaces and with support for SSE2 and AVX.
- Cleaned up ACA implementation.
- Changed handling of recompression: should now be handled by default in low rank approximation algorithm and not by matrix construction class (to avoid recompression of optimal results).
-
Switched to template based coefficient functions (
-
Clustering Changes:
-
Added
TNDBSPPartStratto be used in connection with nested dissection (trying various clusterings and choosing best for ND). -
Modified
TNDBSPCTBuilderto more resemble algebraic version, e.g. average depth for interface clusters instead of maximal. - Fixed bug in PCA based clustering and added version for cardinality based clustering.
- Added various flags to modify clustering, e.g. synchronisation of interface depth, enforcing block clusters with same depth of corresponding clusters, using symmetrised weights in algebraic clustering.
-
Added
-
Input/Output and visualisation:
- Fixed bug in reading dense matrices.
- Changed order of dimension for coordinate IO using Matlab format: now ncoord × dimension (e.g. as also used by Sparse Matrix Collection).
- Added VTK visualisation for coordinates (with various options, e.g. marking clusters or index connectivity) and BEM grids.
- Added Output of Grids in HLIB format.
- Added coordinate IO in MatrixMarket format.
-
Changes in LAPACK wrapper:
- added LAPACK workspace queries for optimal workspace size instead of using predefined block size
-
using
xGESDDfor large matrices
- various bug fixes.
v1.1
v1.1.1 (released 2011-11-29)
- Deactivated default coarsening during matrix construction.
- Added special H² matrix builder with predefined cluster bases.
v1.1 (released 2011-11-28)
- changes in BEM code:
- Added support for AVX.
- Performance speedups in SSE2 implementation of Helmholtz and Maxwell kernels.
- Runtime detection of SSE2/AVX availability and automatic choice of optimal kernel.
- Added
matrix_formatfunction to matrix coefficient functions to define whether unsymmetric, symmetric or hermitian (default: unsymmetric).
Defaultbuildfunction in matrix builders now without format argument. - Added support for ILP64 BLAS/LAPACK implementations (64bit integers).
- Added support for AMD-LibM (integrated in binary Linux distributions).
- Added vector IO in MatrixMarket format.
- Cleaned up C++ examples (thereby also removing Boost link dependency).
- several bug fixes
v1.0
v1.0.1 (released 2011-09-28)
- OpenMP exception handling changed: now all threads will stop as soon as possible in case of an error
- fixed several, previously undetected, non-critical compiler warnings (MS Visual C++)
- bug fixes
v1.0 (released 2011-07-01)
HLIBpro v1.0 is a major rewrite/reorganisation of many of the 𝓗-matrix algorithms.
The following list of changes only covers the main topics and is by far not complete.
- added distributed computing via MPI for matrix construction and factorisation
- added 𝓗²-matrices
- added internal multi-level graph partitioning for blackbox clustering
- added support for piecewise linear basis functions and Maxwell EFIE/MFIE
- rewrote interface to BLAS/LAPACK
- rewrote C interface with better mapping of internal C++ and C types
- increased robustness of matrix factorisation in case of bad-conditioned matrices
- increased speedup of matrix factorisation in multi-threaded computations
- many performance improvements and bug fixes
v0.13
v0.13.6 (released 2009-01-30)
- added optional diagonal scaling of 𝓗-matrices during LU factorisation
- added blockwise accuracy, e.g. accuracy depending on current matrix block
- rewrote accuracy handling in C bindings
- simplified BSP partitioning methods and added regular cardinality based and principle component based clustering
- added optional balancing of tree depth in cluster tree construction with predefined partitioning
- implemented optional double precision computation of matrix inversion and low-rank truncation in single precision mode
- fixed bug in calling single precision norm functions of LAPACK
- fixed bug in PostScript output and modified 𝓗-matrix output in PostScript format
- added support for Jacobi based SVD (
sgejsvanddgejsv) in LAPACK v3.2
v0.13.5 (released 2008-09-23)
- removed ID based cluster tree computations in matrices
- always computing SCC in algebraic clustering, also in nested dissection clustering
- reordering clusters depending on size ratio (large first)
- fixed bug with filenames without directories
- fixed non-exception safe OpenMP usage
- added matrix reduction to nearfield part
- added dense low-rank multiplication if result is large dense matrix
v0.13.4 (released 2008-04-24)
- fixed solve functions in
TLU,TLDL(checking forNULLblocks) - fixed OpenMP call with zero threads in
TLUTLDLandTMatrixInv - fixed
operator =inautoptr(wrong const) - removed unnecessary checks in
TArray::copy - fixed recursive call in
restrict_blockdiag - replaced fixed constants by type dependent constants in
lapack.cc - fixed
TMatrixInv::multiply_diagwhen only D is dense
v0.13.3 (released 2008-03-27)
- fixed several warnings from Visual C++ and Intel C++ compilers
- moved all global variables and functions into
HLIBnamespace (exceptxerblaoverride) - enabled user defined prefix for functions and types in C interface and added override for namespace name
- reactivated cardinality check when using
HLIB_BSP_AUTO
v0.13.2 (released 2008-02-29)
- replaced threads and mutices by OpenMP (thread start only, no scheduling)
- included log file support in addition to stdout
- added parallel LDLT factorisation (DD and blockdiag only)
- added parallel blockdiag LU factorisation
- added zero approximation during matrix construction (for nearfield only)
- fixed bug in algebraic nested dissection clustering (wrong path length in interface)
v0.13.1 (released 2008-02-04)
- reduced memory consumption/fragmentation in ACA generated matrices with large rank
- added Fiduccia/Mattheyses bisection optimisation for BFS clustering
- added FFT for vectors by implementing support for FFTW3 (optional)
- fixed bug in TBSPPartCTBuilder when using more than two partitions
- fixed potential issues in sorting algorithms
- fixed type issues with
*_bytesizefunctions in C interface - fixed bug in PostScript visualisation of matrices if matrix norm is zero
- fixed issues with GCC-4.3
- fixed bug in command line parsing of configuration system
- minor modifications to SCons system to increase userfriendliness
v0.13(.0) (released 2007-12-19)
- general Algorithmic Changes
- support for single precision arithmetic; has to be decided before compiling HLIBpro
- made complete C++ functions and classes visible from outside instead of just C interface functions
- rewrote complex arithmetic to distinguish between symmetric and hermitian matrices; added LDLH and LLH factorisations
- inversion now based on LU, thereby reducing memory consumption (roughly halved)
- added computation of the diagonal of the inverse without computing the inverse
- added evaluation of LU, LDLT factorisations (instead of just solving)
- removed point-wise LU and LDLT factorisation (only blocked) to improve robustness with zeroes on diagonal
- added (optional) check and fix for singular sub matrices during inversion and factorisation
- added complex valued HCA
- new version of ACA+
- multiplication C = ADB with diagonal D implemented
- implemented bilinear forms for Helmholtz single and double layer potential
- implemented bilinear form for acoustic scattering
- rewrote algebraic clustering for sparse matrices; added support for Scotch and CHACO
- added support for periodic coordinates in clustering
- added clustering with user defined index partition on first level in cluster tree
- added standard admissibility for algebraic clustering
- added maximal level in clustering to prevent infinite recursion
- modified solvers to handle complex valued data
- added permutation of dense matrices without temporary storage (needed in IO)
- parallel Arithmetic
- added thread parallel algorithms for matrix construction, matrix multiplication, inversion and LU factorisation
- redesigned thread pool, thereby fixing race conditions
- added support for Windows threads
- fixed several issues with thread safety
- Input and Output
- added general I/O functions with autodetection of file format
- added output of matrices in Harwell/Boeing format
- added MatrixMarket format
- added support for Ply and surface mesh format (NetGen) for Grid I/O
- fixed format errors in SAMG output
- conversion of arbitrary matrices to sparse format when writing in SAMG or Harwell/Boeing format
- fixed support for symmetric matrices in Harwell/Boeing format
- C interface
- prefixed all functions, types and constants with
hlib_(orHLIB_) to prevent collisions with other definitions (OS or libraries) - added support for C99 complex types (if available)
- added
hlib_set_coarseningto activate/deactivate coarsening during matrix construction (default: on) and matrix arithmetic (default: off) - added
hlib_matrix_inv_diagto return diagonal of inverse - added
hlib_matrix_is_complexto test for real or complex valued matrices - added
hlib_set_nthreadsto set number of threads - added
hlib_coord_tas special type for coordinates - separated stop criterion and solver in solver interface
- prefixed all functions, types and constants with
- Miscellaneous
- updated CPUflags and Rmalloc
- fixed optimisation issues (leading to infinite loops) in enclosed CLAPACK
v0.12 (released 2006-11-01)
- Algorithmic Changes
- added (blocked) LDLT factorisation (now default for symmetric matrices)
- no longer need extra matrix in matrix inversion
- using ACAFull in HCA (instead of SVD)
- adaptively choosing quadrature and interpolation order in ACA and HCA
- rewrote matrix addition to support general cases, e.g. low-rank to blocked
- rewrote low-rank truncation handling
- support for METIS in algebraic clustering routines
- added basic support for "dense" sparse matrices, e.g. with highly coupled indices
- added SSE2 based HCA algorithm
- added infinity norm for vectors
- using norm of preconditioned residual for all solvers if preconditioner is present
- added MINRES iteration
- using
ADM_AUTOas default admissibility - finally removed all asserts and replaced by internal error checking
- Input and Output
- VRML97 support
- added Matlab compression (Matlab v7) and structs support
- support for Harwell-Boeing matrix format (read-only)
- modified PostScript output of block-wise SVD; now scaled w.r.t. 2-norm of matrix
- OS and Library support
- MS Windows support
- shared libraries for Linux and Windows
- changed configure system to better handle MS Windows environment
- added internal
xerblato handle LAPACK errors directly
- C interface
- automatic choice of matrix building in
hlib_matrix_build_bem_grid - introduced
vector_tas type to vectors (no more C arrays) - added Gauss and Sauter triangle quadrature rules
- added functions to access matrix and vector entries
- added
copytoandcopyto_epsfunctions - added
hlib_matrix_build_denseto build 𝓗-matrix from dense matrix - changed solver management
- automatic choice of matrix building in
- Miscellaneous
- several improvements and bug fixes
- cleaned up error codes
- updated CPUflags and Rmalloc
v0.11 (released 2006-05-29)
- Arithmetic
- added ACA-Full
- added HCA (hybrid cross approximation)
- complex valued ACA and SVD
- added copy with coarsening for 𝓗-matrices
- added computation of spectral norm for the inverse of a matrix
- support for permutations in matrix-vector multiplication of sparse matrices
- added support for Laplace SLP/DLP and 3D triangle surface grids
- fixed issues with degenerated bounding boxes in geometrical clustering
- Input/Output
- support for PLTMG matrix format
- Miscellaneous
- replaced error handling with exceptions
- added modified CLAPACK as default implementation of LAPACK to HLIBpro
- integrated CPUFlags into configure system
- added function for fast reciprocal square root
v0.10 (released 2006-04-05)
- Arithmetic
- initial support for complex arithmetic
- support for symmetric matrices in arithmetic
- implemented block LU factorisation
- implemented LDLT factorisation
- added Frobenius norm for sparse matrices
- support for CRS format in sparse matrices
- added Jacobi and SOR matrix types (for matrix-vector multiplication)
- implemented hierarchical domain decomposition with parallel arithmetics
- Parallel Algorithms
- thread-parallel Cholesky factorisation
- thread-parallel coarsening of 𝓗-matrices
- fixed thread-parallel LU and inversion
- fixed dead-locks in thread-pool
- added direct communication in BSP mode
- parallel addition of matrices and vectors via streams
- Input/Output
- support for Matlab and SAMG format
- Miscellaneous
- introduced C interface functions and types
- added configure system for Makefiles
- added progress meter support for arithmetic
- added internal RTTI system
- support for memory consumption query on HP-UX
- rewrote error handling
v0.9 (released 2004-11-30)
- first public version as PHI (Parallel H-matrix Implementation)
- merged BSP-parallel and thread-parallel versions of 𝓗-matrix library
