TRIQS/nda 2.0.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
Linear algebra

Detailed Description

Linear algebra related functionality.

nda provides low- and high-level interfaces to various linear algebra operations:

  • Low-level functions are thin wrappers around the corresponding BLAS/cuBLAS and LAPACK/cuSOLVER functions that live in the nda::blas and nda::lapack namespaces and that work directly on nda::Array types. They are supposed to have minimal additional overhead (no unnecessary copies, no unnecessary allocations, etc.) but still improve usability compared to bare BLAS and LAPACK operations.
  • High-level functions are built on top of the low-level routines and can be found in the nda::linalg namespace. They mimic the behavior of numpy.linalg as much as possible. Here, performance is sometimes sacrificed for better usability and convenience, e.g. by making copies of input arrays or by returning newly allocated arrays.

Both interfaces try to be as generic as possible in the sense that they

  • work for arrays, views or lazy expressions,
  • dispatch to the correct BLAS/cuBLAS/LAPACK/cuSOLVER function depending on the value type and address space of given input arrays,
  • take care of memory layouts, i.e. nda::C_layout vs. nda::F_layout,
  • etc.

Please check the documentation of individual functions to see the details of the behavior and the supported input types.

Topics

 BLAS/LAPACK utilities
 Utilities for the BLAS/LAPACK (and cuBLAS/cuSOLVER) interface.
 BLAS/cuBLAS interface
 Low-level interface to parts of the BLAS/cuBLAS library.
 LAPACK/cuSOLVER interface
 Low-level interface to parts of the LAPACK/cuSOLVER library.
 Linear algebra tools
 High-level interface to various linear algebra operations in the style of numpy.linalg.