FflasFfpack
|
#include "fflas-ffpack/fflas-ffpack-config.h"
#include "fflas-ffpack/config.h"
#include "fflas-ffpack/config-blas.h"
#include "fflas-ffpack/paladin/parallel.h"
#include <recint/recint.h>
#include <givaro/udl.h>
#include "fflas-ffpack/fflas/fflas.h"
#include "fflas-ffpack/field/field-traits.h"
#include "fflas-ffpack/fflas/fflas_bounds.inl"
#include "fflas-ffpack/utils/fflas_memory.h"
#include <type_traits>
#include <vector>
#include <iostream>
#include "fflas-ffpack/fflas/fflas_sparse/sparse_matrix_traits.h"
#include "fflas-ffpack/fflas/fflas_sparse/utils.h"
#include "fflas-ffpack/fflas/fflas_sparse/csr.h"
#include "fflas-ffpack/fflas/fflas_sparse/coo.h"
#include "fflas-ffpack/fflas/fflas_sparse/ell.h"
#include "fflas-ffpack/fflas/fflas_sparse/csr_hyb.h"
#include "fflas-ffpack/fflas/fflas_sparse/ell_simd.h"
#include "fflas-ffpack/fflas/fflas_sparse/hyb_zo.h"
#include "fflas-ffpack/fflas/fflas_sparse.inl"
#include "fflas-ffpack/fflas/fflas_sparse/read_sparse.h"
Data Structures | |
struct | Sparse< Field, SparseMatrix_t, IdxT, PtrT > |
struct | HelperFlag |
struct | CsrMat< Field > |
struct | CooMat< Field > |
struct | EllMat< Field > |
struct | SpMat< Field, flag > |
Namespaces | |
MKL_CONFIG | |
FFLAS | |
FFLAS::sparse_details | |
Macros | |
#define | index_t uint32_t |
#define | ROUND_DOWN(x, s) ((x) & ~((s)-1)) |
#define | __FFLASFFPACK_CACHE_LINE_SIZE 64 |
#define | assume_aligned(pout, pin, v) decltype(pin) pout = pin; |
#define | DENSE_THRESHOLD 0.5 |
Enumerations | |
enum | SparseMatrix_t { CSR, CSR_ZO, CSC, CSC_ZO, COO, COO_ZO, ELL, ELL_ZO, SELL, SELL_ZO, ELL_simd, ELL_simd_ZO, CSR_HYB, HYB_ZO } |
Functions | |
template<class Field > | |
void | init_y (const Field &F, const size_t m, const typename Field::Element b, typename Field::Element_ptr y) |
template<class Field > | |
void | init_y (const Field &F, const size_t m, const size_t n, const typename Field::Element b, typename Field::Element_ptr y, const int ldy) |
template<class Field , class SM , class FC , class MZO > | |
std::enable_if< !(std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineFloatTag > ::value||std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineIntTag > ::value)>::type | fspmv_dispatch (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FC fc, MZO mzo) |
template<class Field , class SM , class FC , class MZO > | |
std::enable_if< std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineFloatTag > ::value||std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineIntTag > ::value >::type | fspmv_dispatch (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FC fc, MZO mzo) |
template<class Field , class SM > | |
void | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::GenericTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if <!isSparseMatrixSimdFormat < Field, SM >::value >::type | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if < isSparseMatrixSimdFormat < Field, SM >::value >::type | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if <!isSparseMatrixSimdFormat < Field, SM >::value >::type | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if < isSparseMatrixSimdFormat < Field, SM >::value >::type | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
void | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::GenericTag, ZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if <!isSparseMatrixSimdFormat < Field, SM >::value >::type | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag, ZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if < isSparseMatrixSimdFormat < Field, SM >::value >::type | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag, ZOSparseMatrix) |
template<class Field , class SM > | |
void | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag, std::true_type) |
template<class Field , class SM , class FCat , class MZO > | |
std::enable_if< !(std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineFloatTag > ::value||std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineIntTag > ::value)>::type | fspmm_dispatch (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FCat, MZO) |
template<class Field , class SM , class FCat , class MZO > | |
std::enable_if< std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineFloatTag > ::value||std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineIntTag > ::value >::type | fspmm_dispatch (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FCat, MZO) |
template<class Field , class SM > | |
void | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::GenericTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if< support_simd < typename Field::Element > ::value >::type | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if<!support_simd < typename Field::Element > ::value >::type | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if< support_simd < typename Field::Element > ::value >::type | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::ModularTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if<!support_simd < typename Field::Element > ::value >::type | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::ModularTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
void | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::GenericTag, ZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if< support_simd < typename Field::Element > ::value >::type | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, ZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if<!support_simd < typename Field::Element > ::value >::type | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, ZOSparseMatrix) |
template<class Field , class SM > | |
void | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::ModularTag, ZOSparseMatrix) |
template<class Field , class SM , class FCat , class MZO > | |
std::enable_if< !(std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineFloatTag > ::value||std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineIntTag > ::value)>::type | pfspmm_dispatch (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FCat, MZO) |
template<class Field , class SM , class FCat , class MZO > | |
std::enable_if< std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineFloatTag > ::value||std::is_same < typename ElementTraits < typename Field::Element > ::value, ElementCategories::MachineIntTag > ::value >::type | pfspmm_dispatch (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FCat, MZO) |
template<class Field , class SM > | |
void | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::GenericTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if< support_simd < typename Field::Element > ::value >::type | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if<!support_simd < typename Field::Element > ::value >::type | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if< support_simd < typename Field::Element > ::value >::type | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::ModularTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if<!support_simd < typename Field::Element > ::value >::type | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::ModularTag, NotZOSparseMatrix) |
template<class Field , class SM > | |
void | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::GenericTag, ZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if< support_simd < typename Field::Element > ::value >::type | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, ZOSparseMatrix) |
template<class Field , class SM > | |
std::enable_if<!support_simd < typename Field::Element > ::value >::type | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::UnparametricTag, ZOSparseMatrix) |
template<class Field , class SM > | |
void | pfspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, typename Field::Element_ptr y, int ldy, FieldCategories::ModularTag, ZOSparseMatrix) |
template<class Field , class SM > | |
void | pfspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::GenericTag, std::false_type) |
template<class Field , class SM > | |
void | pfspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag, std::false_type) |
template<class Field , class SM > | |
void | pfspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag, std::false_type) |
template<class Field , class SM > | |
void | pfspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::GenericTag, std::true_type) |
template<class Field , class SM > | |
void | pfspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::UnparametricTag, std::true_type) |
template<class Field , class SM > | |
void | pfspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, typename Field::Element_ptr y, FieldCategories::ModularTag, std::true_type) |
template<class Field , class SM > | |
void | fspmv (const Field &F, const SM &A, typename Field::ConstElement_ptr x, const typename Field::Element &beta, typename Field::Element_ptr y) |
template<class Field , class SM > | |
void | fspmm (const Field &F, const SM &A, size_t blockSize, typename Field::ConstElement_ptr x, int ldx, const typename Field::Element &beta, typename Field::Element_ptr y, int ldy) |
#define index_t uint32_t |
#define ROUND_DOWN | ( | x, | |
s | |||
) | ((x) & ~((s)-1)) |
#define __FFLASFFPACK_CACHE_LINE_SIZE 64 |
#define assume_aligned | ( | pout, | |
pin, | |||
v | |||
) | decltype(pin) pout = pin; |
#define DENSE_THRESHOLD 0.5 |