6 projects tagged "Linear Algebra"
OpenMPF is a library for solving large, dense, multi-RHS linear systems. It is based on MPI/openMP parallelism, and relies on BLAS/LAPACK/MUMPS for the single node computations. It implements direct and iterative solvers, out-of-core matrices and vectors, and is easily accessible through a Python interface.
Elemental is a C++ framework for distributed-memory dense linear algebra that strives to be fast, portable, and programmable. It can be thought of as a generalization of PLAPACK to element-by-element distributions that also makes use of recent algorithmic advances from the FLAME project. Elemental usually outperforms both PLAPACK and ScaLAPACK, however, it heavily relies on MPI collectives so a good MPI implementation is crucial. Both pure MPI and hybrid OpenMP-MPI configurations are supported.
Topologic is a simple renderer for certain higher-dimensional geometric primitives and some regular 3D shapes. The idea is to make it easy for students of certain higher-dimensional maths and physics topics to visualize the typical primitives in those fields and get a grasp for the topic. Note: the program as such is freeware, while the part of it that deals with the Mathematics to project the geometric shapes to 3-space and 2-space has been released separately under an MIT/X style license.
librsb is a library for sparse matrix computations featuring the Recursive Sparse Blocks (RSB) matrix format. This format allows cache-efficient and multithreaded (that is, shared memory parallel) operations on large sparse matrices. The most common operations necessary to iterative solvers are available (matrix-vector multiplication, triangular solution, rows/columns scaling, diagonal extraction/setting, blocks extraction, norm computation, formats conversion). The RSB format is especially well-suited for symmetric and transposed multiplication variants. On these variants, librsb has been found to be faster than Intel MKL's implementation for CSR. Most numerical kernels code is auto-generated, and the supported numerical types can be chosen by the user at buildtime. librsb implements the Sparse BLAS standard, as specified in the BLAS Forum documents.