FflasFfpack
Namespaces | Data Structures | Functions
FFLAS::Protected Namespace Reference

Namespaces

 Rec
 

Data Structures

class  AreEqual
 
class  AreEqual< X, X >
 
class  ftrmmLeftLowerNoTransNonUnit
 
class  ftrmmLeftLowerNoTransUnit
 
class  ftrmmLeftLowerTransNonUnit
 
class  ftrmmLeftLowerTransUnit
 
class  ftrmmLeftUpperNoTransNonUnit
 
class  ftrmmLeftUpperNoTransUnit
 
class  ftrmmLeftUpperTransNonUnit
 
class  ftrmmLeftUpperTransUnit
 
class  ftrmmRightLowerNoTransNonUnit
 
class  ftrmmRightLowerNoTransUnit
 
class  ftrmmRightLowerTransNonUnit
 
class  ftrmmRightLowerTransUnit
 
class  ftrmmRightUpperNoTransNonUnit
 
class  ftrmmRightUpperNoTransUnit
 
class  ftrmmRightUpperTransNonUnit
 
class  ftrmmRightUpperTransUnit
 
class  ftrsmLeftLowerNoTransNonUnit
 
class  ftrsmLeftLowerNoTransUnit
 
class  ftrsmLeftLowerTransNonUnit
 
class  ftrsmLeftLowerTransUnit
 
class  ftrsmLeftUpperNoTransNonUnit
 Computes the maximal size for delaying the modular reduction in a triangular system resolution. More...
 
class  ftrsmLeftUpperNoTransUnit
 
class  ftrsmLeftUpperTransNonUnit
 
class  ftrsmLeftUpperTransUnit
 
class  ftrsmRightLowerNoTransNonUnit
 
class  ftrsmRightLowerNoTransUnit
 
class  ftrsmRightLowerTransNonUnit
 
class  ftrsmRightLowerTransUnit
 
class  ftrsmRightUpperNoTransNonUnit
 
class  ftrsmRightUpperNoTransUnit
 
class  ftrsmRightUpperTransNonUnit
 
class  ftrsmRightUpperTransUnit
 

Functions

template<class Field >
double computeFactorClassic (const Field &F)
 
template<>
double computeFactorClassic (const Givaro::ModularBalanced< double > &F)
 
template<>
double computeFactorClassic (const Givaro::ModularBalanced< float > &F)
 
template<class Field >
size_t DotProdBoundClassic (const Field &F, const typename Field::Element &beta)
 
template<class Field >
size_t TRSMBound (const Field &)
 TRSMBound. More...
 
template<class Element >
size_t TRSMBound (const Givaro::Modular< Element > &F)
 Specialization for positive modular representation over double Computes nmax s.t. More...
 
template<class Element >
size_t TRSMBound (const Givaro::ModularBalanced< Element > &F)
 Specialization for balanced modular representation over double. More...
 
template<class Field >
int WinogradThreshold (const Field &F)
 Computes the number of recursive levels to perform. More...
 
template<>
int WinogradThreshold (const Givaro::Modular< float > &F)
 
template<>
int WinogradThreshold (const Givaro::ModularBalanced< double > &F)
 
template<>
int WinogradThreshold (const Givaro::ModularBalanced< float > &F)
 
template<class Field >
int WinogradSteps (const Field &F, const size_t &m)
 Computes the number of recursive levels to perform. More...
 
template<class Field , class FieldMode >
void DynamicPeeling (const Field &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const size_t mr, const size_t nr, const size_t kr, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &H, const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element Cmin, const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element Cmax)
 
template<class Field , class FieldMode >
void DynamicPeeling2 (const Field &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const size_t mr, const size_t nr, const size_t kr, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &H, const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element Cmin, const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element Cmax)
 
template<class Field , class FieldMode >
void WinogradCalc (const Field &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t mr, const size_t nr, const size_t kr, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &H)
 
template<typename FloatElement , class Field , class FieldMode >
Field::Element_ptr fgemm_convert (const Field &F, const FFLAS_TRANSPOSE ta, const FFLAS_TRANSPOSE tb, const size_t m, const size_t n, const size_t k, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr B, const size_t ldb, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc, MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &H)
 
template<class Field , class Element , class AlgoT , class ParSeqTrait >
bool NeedPreAddReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedPreAddReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ParSeqTrait >
bool NeedPreSubReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedPreSubReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ParSeqTrait >
bool NeedDoublePreAddReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, Element beta, MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedDoublePreAddReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, Element beta, MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &WH)
 
template<class Field , class AlgoT , class ParSeqTrait >
void ScalAndReduce (const Field &F, const size_t N, const typename Field::Element alpha, typename Field::Element_ptr X, const size_t incX, const MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &H)
 
template<class Field , class AlgoT , class ParSeqTrait >
void ScalAndReduce (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::Element_ptr A, const size_t lda, const MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &H)
 
template<class Field >
Field::Element_ptr fsquareCommon (const Field &F, const FFLAS_TRANSPOSE ta, const size_t n, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, const typename Field::Element beta, typename Field::Element_ptr C, const size_t ldc)
 
template<typename FloatElement , class Field >
Field::Element_ptr fgemv_convert (const Field &F, const FFLAS_TRANSPOSE ta, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr A, const size_t lda, typename Field::ConstElement_ptr X, const size_t incX, const typename Field::Element beta, typename Field::Element_ptr Y, const size_t incY)
 
template<class FloatElement , class Field >
void fger_convert (const Field &F, const size_t M, const size_t N, const typename Field::Element alpha, typename Field::ConstElement_ptr x, const size_t incx, typename Field::ConstElement_ptr y, const size_t incy, typename Field::Element_ptr A, const size_t lda)
 
template<class T >
bool unfit (T x)
 
template<>
bool unfit (int64_t x)
 
template<size_t K>
bool unfit (RecInt::rint< K > x)
 
template<>
bool unfit (RecInt::rint< 6 > x)
 
template<enum FFLAS_TRANSPOSE tA, enum FFLAS_TRANSPOSE tB>
void igemm_colmajor (size_t rows, size_t cols, size_t depth, const int64_t alpha, const int64_t *A, size_t lda, const int64_t *B, size_t ldb, int64_t *C, size_t ldc)
 
template<enum FFLAS_TRANSPOSE tA, enum FFLAS_TRANSPOSE tB, enum number_kind alpha_kind>
void igemm_colmajor (size_t rows, size_t cols, size_t depth, const int64_t alpha, const int64_t *A, size_t lda, const int64_t *B, size_t ldb, int64_t *C, size_t ldc)
 
void igemm (const enum FFLAS_TRANSPOSE TransA, const enum FFLAS_TRANSPOSE TransB, size_t rows, size_t cols, size_t depth, const int64_t alpha, const int64_t *A, size_t lda, const int64_t *B, size_t ldb, const int64_t beta, int64_t *C, size_t ldc)
 
template<class Field >
void MatF2MatD_Triangular (const Field &F, Givaro::DoubleDomain::Element_ptr S, const size_t lds, typename Field::ConstElement_ptr const E, const size_t lde, const size_t m, const size_t n)
 
template<class Field >
void MatF2MatFl_Triangular (const Field &F, Givaro::FloatDomain::Element_ptr S, const size_t lds, typename Field::ConstElement_ptr const E, const size_t lde, const size_t m, const size_t n)
 
template<class Field >
Field::Element * gemm_bini_p (const Field &F, const size_t m, const size_t n, const size_t k, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc, int rec, size_t algo)
 
template<class Field >
Field::Element * gemm_bini_e (const Field &F, const size_t m, const size_t n, const size_t k, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc, int rec, size_t algo)
 
template<class Field >
Field::Element * gemm_compress (const Field &F, const size_t m, const size_t n, const size_t k, const typename Field::Element *A, const size_t lda, const typename Field::Element *B, const size_t ldb, typename Field::Element *C, const size_t ldc, int rec, size_t algo)
 

Function Documentation

double FFLAS::Protected::computeFactorClassic ( const Field F)
inline
double FFLAS::Protected::computeFactorClassic ( const Givaro::ModularBalanced< double > &  F)
inline
double FFLAS::Protected::computeFactorClassic ( const Givaro::ModularBalanced< float > &  F)
inline
size_t FFLAS::Protected::DotProdBoundClassic ( const Field F,
const typename Field::Element &  beta 
)
inline
size_t FFLAS::Protected::TRSMBound ( const Field )
inline

TRSMBound.

computes the maximal size for delaying the modular reduction in a triangular system resolution

This is the default version over an arbitrary field. It is currently never used (the recursive algorithm is run until n=1 in this case)

Parameters
FFinite Field/Ring of the computation
size_t FFLAS::Protected::TRSMBound ( const Givaro::Modular< Element > &  F)
inline

Specialization for positive modular representation over double Computes nmax s.t.

(p-1)/2*(p^{nmax-1} + (p-2)^{nmax-1}) < 2^53 See [Dumas Giorgi Pernet 06, arXiv:cs/0601133] Specialization for positive modular representation over float. Computes nmax s.t. (p-1)/2*(p^{nmax-1} + (p-2)^{nmax-1}) < 2^24 See [Dumas Giorgi Pernet 06, arXiv:cs/0601133]

size_t FFLAS::Protected::TRSMBound ( const Givaro::ModularBalanced< Element > &  F)
inline

Specialization for balanced modular representation over double.

Computes nmax s.t. (p-1)/2*(((p+1)/2)^{nmax-1}) < 2^53

Bibliography:
  • Dumas Giorgi Pernet 06, arXiv:cs/0601133
int FFLAS::Protected::WinogradThreshold ( const Field F)
inline

Computes the number of recursive levels to perform.

Parameters
mthe common dimension in the product AxB
int FFLAS::Protected::WinogradThreshold ( const Givaro::Modular< float > &  F)
inline
int FFLAS::Protected::WinogradThreshold ( const Givaro::ModularBalanced< double > &  F)
inline
int FFLAS::Protected::WinogradThreshold ( const Givaro::ModularBalanced< float > &  F)
inline
int WinogradSteps ( const Field F,
const size_t &  m 
)
inline

Computes the number of recursive levels to perform.

Parameters
mthe common dimension in the product AxB
void FFLAS::Protected::DynamicPeeling ( const Field F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const size_t  mr,
const size_t  nr,
const size_t  kr,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &  H,
const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element  Cmin,
const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element  Cmax 
)
inline
void FFLAS::Protected::DynamicPeeling2 ( const Field F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const size_t  mr,
const size_t  nr,
const size_t  kr,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &  H,
const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element  Cmin,
const typename MMHelper< Field, MMHelperAlgo::Winograd, FieldMode >::DelayedField::Element  Cmax 
)
inline
void FFLAS::Protected::WinogradCalc ( const Field F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  mr,
const size_t  nr,
const size_t  kr,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &  H 
)
inline
Field::Element_ptr FFLAS::Protected::fgemm_convert ( const Field F,
const FFLAS_TRANSPOSE  ta,
const FFLAS_TRANSPOSE  tb,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  B,
const size_t  ldb,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc,
MMHelper< Field, MMHelperAlgo::Winograd, FieldMode > &  H 
)
inline
bool FFLAS::Protected::NeedPreAddReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  WH 
)
inline
bool FFLAS::Protected::NeedPreAddReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &  WH 
)
inline
bool FFLAS::Protected::NeedPreSubReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  WH 
)
inline
bool FFLAS::Protected::NeedPreSubReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &  WH 
)
inline
bool FFLAS::Protected::NeedDoublePreAddReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
Element  beta,
MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  WH 
)
inline
bool FFLAS::Protected::NeedDoublePreAddReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
Element  beta,
MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &  WH 
)
inline
void FFLAS::Protected::ScalAndReduce ( const Field F,
const size_t  N,
const typename Field::Element  alpha,
typename Field::Element_ptr  X,
const size_t  incX,
const MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  H 
)
inline
void FFLAS::Protected::ScalAndReduce ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::Element_ptr  A,
const size_t  lda,
const MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  H 
)
inline
Field::Element_ptr FFLAS::Protected::fsquareCommon ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  n,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
const typename Field::Element  beta,
typename Field::Element_ptr  C,
const size_t  ldc 
)
inline
Field::Element_ptr FFLAS::Protected::fgemv_convert ( const Field F,
const FFLAS_TRANSPOSE  ta,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  A,
const size_t  lda,
typename Field::ConstElement_ptr  X,
const size_t  incX,
const typename Field::Element  beta,
typename Field::Element_ptr  Y,
const size_t  incY 
)
inline
void FFLAS::Protected::fger_convert ( const Field F,
const size_t  M,
const size_t  N,
const typename Field::Element  alpha,
typename Field::ConstElement_ptr  x,
const size_t  incx,
typename Field::ConstElement_ptr  y,
const size_t  incy,
typename Field::Element_ptr  A,
const size_t  lda 
)
inline
bool FFLAS::Protected::unfit ( x)
inline
bool FFLAS::Protected::unfit ( int64_t  x)
inline
bool FFLAS::Protected::unfit ( RecInt::rint< K >  x)
inline
bool FFLAS::Protected::unfit ( RecInt::rint< 6 >  x)
inline
void igemm_colmajor ( size_t  rows,
size_t  cols,
size_t  depth,
const int64_t  alpha,
const int64_t *  A,
size_t  lda,
const int64_t *  B,
size_t  ldb,
int64_t *  C,
size_t  ldc 
)
void igemm_colmajor ( size_t  rows,
size_t  cols,
size_t  depth,
const int64_t  alpha,
const int64_t *  A,
size_t  lda,
const int64_t *  B,
size_t  ldb,
int64_t *  C,
size_t  ldc 
)
void igemm ( const enum FFLAS_TRANSPOSE  TransA,
const enum FFLAS_TRANSPOSE  TransB,
size_t  rows,
size_t  cols,
size_t  depth,
const int64_t  alpha,
const int64_t *  A,
size_t  lda,
const int64_t *  B,
size_t  ldb,
const int64_t  beta,
int64_t *  C,
size_t  ldc 
)
inline
Todo:
use primitive (no Field()) and specialise for int64.
Todo:
use primitive (no Field()) and specialise for int64.
void FFLAS::Protected::MatF2MatD_Triangular ( const Field F,
Givaro::DoubleDomain::Element_ptr  S,
const size_t  lds,
typename Field::ConstElement_ptr const  E,
const size_t  lde,
const size_t  m,
const size_t  n 
)
void FFLAS::Protected::MatF2MatFl_Triangular ( const Field F,
Givaro::FloatDomain::Element_ptr  S,
const size_t  lds,
typename Field::ConstElement_ptr const  E,
const size_t  lde,
const size_t  m,
const size_t  n 
)
Todo:

do finit(...,FFLAS_TRANS,FFLAS_DIAG)

do fconvert(...,FFLAS_TRANS,FFLAS_DIAG)

Field::Element* FFLAS::Protected::gemm_bini_p ( const Field F,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element *  A,
const size_t  lda,
const typename Field::Element *  B,
const size_t  ldb,
typename Field::Element *  C,
const size_t  ldc,
int  rec,
size_t  algo 
)
Field::Element* FFLAS::Protected::gemm_bini_e ( const Field F,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element *  A,
const size_t  lda,
const typename Field::Element *  B,
const size_t  ldb,
typename Field::Element *  C,
const size_t  ldc,
int  rec,
size_t  algo 
)
Field::Element* FFLAS::Protected::gemm_compress ( const Field F,
const size_t  m,
const size_t  n,
const size_t  k,
const typename Field::Element *  A,
const size_t  lda,
const typename Field::Element *  B,
const size_t  ldb,
typename Field::Element *  C,
const size_t  ldc,
int  rec,
size_t  algo 
)