Neanderthal 0.49.0-SNAPSHOT

Released under the Eclipse Public License

Neanderthal is a Clojure library for fast matrix and linear algebra computations.

Installation

To install, add the following dependency to your project or build file:

[uncomplicate/neanderthal "0.49.0-SNAPSHOT"]

Namespaces

uncomplicate.neanderthal.auxil

Contains type-agnostic auxiliary functions roughly corresponding to the functionality usually defined in auxiliary LAPACK (sorting etc.), or useful functions that may not commonly be implemented by BLAS engines, but are helpful vectorized ruoutines. This namespace works similarly to uncomplicate.neanderthal.core; see there for more details about the intended use.

uncomplicate.neanderthal.block

Convenient functions for accessing the memory block that holds vector space’s data and inquire about its structure. This is less useful for application code, which should use linear algebra functions instead of snooping inside, but is indispensible in code that extends Neanderthal’s functionality.

uncomplicate.neanderthal.core

Contains type-agnostic linear algebraic functions roughly corresponding to functionality defined in BLAS 123, and functions that create and work with various kinds of vectors and matrices. Typically, you would want to require this namespace regardless of the actual type (real, complex, CPU, GPU, pure Java etc.) of the vectors and matrices that you use.

uncomplicate.neanderthal.cuda

Contains specialized constructors that use CUDA engine by default, and convenient macros for creating and maintaining engines in appropriate CUDA and cuBLAS context. A convenience over agnostic uncomplicate.neanderthal.core functions.

uncomplicate.neanderthal.integer

Contains type-specific primitive integer functions, equivalents of functions from the uncomplicate.neanderthal.core namespace. Typically, you would want to require this namespace if you need to compute matrices that contain longs and/or ints. Please keep in mind that most of higher-level BLAS functions are supported for integers. For example, operations such as matrix multiplication is not supported for integers, nor it makes much sense in general case for big matrices.

Public variables and functions:

uncomplicate.neanderthal.linalg

Contains type-agnostic linear algebraic functions roughly corresponding to the functionality usually defined in LAPACK (factorizations, solvers, etc.). This namespace works similarly to the uncomplicate.neanderthal.core namespace; see there for more details about the intended use.

uncomplicate.neanderthal.math

Primitive floating point mathematical functions commonly found in Math, FastMath, and the likes. Vectorized counterparts can be found in the vect-math namespace.

uncomplicate.neanderthal.native

Specialized constructors that use native CPU engine by default. A convenience over agnostic uncomplicate.neanderthal.core functions. The default engine is backed by Intel’s MKL, and the OS specific binaries are provided by JavaCPP’s mkl preset. Alternative implementations are allowed, and can be either referred explicitly (see how mkl-float is used as and example), or by binding native-float and the likes to your preferred implementation.

uncomplicate.neanderthal.opencl

Specialized constructors that use OpenCL engine by default, and convenient macros for creating and maintaining engines in appropriate OpenCL context. A convenience over agnostic uncomplicate.neanderthal.core functions.

uncomplicate.neanderthal.random

Polymorphic functions that populate Neanderthal’s data structures with random numbers drawn from common distributions.

Public variables and functions:

uncomplicate.neanderthal.real

Contains type-specific primitive floating point functions, equivalents of functions from the uncomplicate.neanderthal.core namespace. Typically, you would want to require this namespace if you need to compute real matrices containing doubles and/or floats.

Public variables and functions:

uncomplicate.neanderthal.sparse

Functions for creating sparse vectors and matrices. Sparse vectors or matrices are structures in which most elements are zeroes. Therefore, it makes sense to store only the few non-zero entries. There is a performance penalty to pay for these entries, in terms of both storage and computation, as they are stored using one of many possible compression schemes, but if there is only a small fraction of non-zero elements compared to zero elements, that penalty is offset by the fact that only a fraction of computations need to be done.

Public variables and functions:

uncomplicate.neanderthal.vect-math

Vectorized floating point mathematical functions commonly found in Math, FastMath, and the likes. Primitive scalar counterparts can be found in the math namespace.