FflasFfpack
Data Structures | Functions
FFLAS::Protected Namespace Reference

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.
 
template<class Element >
size_t TRSMBound (const Givaro::Modular< Element > &F)
 Specialization for positive modular representation over float.
 
template<class Element >
size_t TRSMBound (const Givaro::ModularBalanced< Element > &F)
 Specialization for balanced modular representation over double.
 
template<class NewField , 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<class Field >
int WinogradThreshold (const Field &F)
 Computes the number of recursive levels to perform.
 
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.
 
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 >
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 NewField , class Field , class FieldMode >
Field::Element_ptr fsyrk_convert (const Field &F, const FFLAS_UPLO UpLo, const FFLAS_TRANSPOSE trans, const size_t N, const size_t K, 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, MMHelper< Field, MMHelperAlgo::Classic, FieldMode > &H)
 
template<class Field , class AlgoT , class ParSeqTrait >
void ScalAndReduce (const Field &F, const FFLAS_UPLO UpLo, 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 , class Element , class AlgoT , class ParSeqTrait >
bool NeedPreScalReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, const Element &x, MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedPreScalReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, const Element &x, MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ParSeqTrait >
bool NeedPreAxpyReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, const Element &x, MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &WH)
 
template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedPreAxpyReduction (Element &Outmin, Element &Outmax, Element &Op1min, Element &Op1max, Element &Op2min, Element &Op2max, const Element &x, MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &WH)
 
template<class DFE >
size_t min_types (const DFE &k)
 
template<>
size_t min_types (const RecInt::rint< 6 > &k)
 
template<>
size_t min_types (const RecInt::rint< 7 > &k)
 
template<>
size_t min_types (const RecInt::rint< 8 > &k)
 
template<>
size_t min_types (const RecInt::rint< 9 > &k)
 
template<>
size_t min_types (const RecInt::rint< 10 > &k)
 
template<>
size_t min_types (const Givaro::Integer &k)
 
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)
 

Function Documentation

◆ computeFactorClassic() [1/3]

template<class Field >
double computeFactorClassic ( const Field F)
inline

◆ computeFactorClassic() [2/3]

template<>
double computeFactorClassic ( const Givaro::ModularBalanced< double > &  F)
inline

◆ computeFactorClassic() [3/3]

template<>
double computeFactorClassic ( const Givaro::ModularBalanced< float > &  F)
inline

◆ DotProdBoundClassic()

template<class Field >
size_t DotProdBoundClassic ( const Field F,
const typename Field::Element beta 
)
inline

◆ TRSMBound() [1/3]

template<class Field >
size_t 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

◆ TRSMBound() [2/3]

template<class Element >
size_t TRSMBound ( const Givaro::Modular< Element > &  F)
inline

Specialization for positive modular representation over float.

Computes nmax s.t. (p-1)/2*(p^{nmax-1} + (p-2)^{nmax-1}) < 2^24 @pbi See [Dumas Giorgi Pernet 06, arXiv:cs/0601133]

◆ TRSMBound() [3/3]

template<class Element >
size_t 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

◆ fgemm_convert()

◆ NeedPreAddReduction() [1/2]

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 
)
inline

◆ NeedPreAddReduction() [2/2]

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 
)
inline

◆ NeedPreSubReduction() [1/2]

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 
)
inline

◆ NeedPreSubReduction() [2/2]

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 
)
inline

◆ NeedDoublePreAddReduction() [1/2]

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 
)
inline

◆ NeedDoublePreAddReduction() [2/2]

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 
)
inline

◆ ScalAndReduce() [1/3]

◆ ScalAndReduce() [2/3]

◆ fsquareCommon()

◆ WinogradThreshold() [1/4]

template<class Field >
int WinogradThreshold ( const Field F)
inline

Computes the number of recursive levels to perform.

Parameters
mthe common dimension in the product AxB

◆ WinogradThreshold() [2/4]

template<>
int WinogradThreshold ( const Givaro::Modular< float > &  F)
inline

◆ WinogradThreshold() [3/4]

template<>
int WinogradThreshold ( const Givaro::ModularBalanced< double > &  F)
inline

◆ WinogradThreshold() [4/4]

template<>
int WinogradThreshold ( const Givaro::ModularBalanced< float > &  F)
inline

◆ WinogradSteps()

template<class Field >
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

◆ DynamicPeeling()

◆ DynamicPeeling2()

◆ WinogradCalc()

◆ fgemv_convert()

◆ fger_convert()

◆ fsyrk_convert()

◆ ScalAndReduce() [3/3]

◆ NeedPreScalReduction() [1/2]

template<class Field , class Element , class AlgoT , class ParSeqTrait >
bool NeedPreScalReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
const Element &  x,
MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  WH 
)
inline

◆ NeedPreScalReduction() [2/2]

template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedPreScalReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
const Element &  x,
MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &  WH 
)
inline

◆ NeedPreAxpyReduction() [1/2]

template<class Field , class Element , class AlgoT , class ParSeqTrait >
bool NeedPreAxpyReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
const Element &  x,
MMHelper< Field, AlgoT, ModeCategories::LazyTag, ParSeqTrait > &  WH 
)
inline

◆ NeedPreAxpyReduction() [2/2]

template<class Field , class Element , class AlgoT , class ModeT , class ParSeqTrait >
bool NeedPreAxpyReduction ( Element &  Outmin,
Element &  Outmax,
Element &  Op1min,
Element &  Op1max,
Element &  Op2min,
Element &  Op2max,
const Element &  x,
MMHelper< Field, AlgoT, ModeT, ParSeqTrait > &  WH 
)
inline

◆ min_types() [1/7]

template<class DFE >
size_t min_types ( const DFE k)
inline

◆ min_types() [2/7]

template<>
size_t min_types ( const RecInt::rint< 6 > &  k)
inline

◆ min_types() [3/7]

template<>
size_t min_types ( const RecInt::rint< 7 > &  k)
inline

◆ min_types() [4/7]

template<>
size_t min_types ( const RecInt::rint< 8 > &  k)
inline

◆ min_types() [5/7]

template<>
size_t min_types ( const RecInt::rint< 9 > &  k)
inline

◆ min_types() [6/7]

template<>
size_t min_types ( const RecInt::rint< 10 > &  k)
inline

◆ min_types() [7/7]

template<>
size_t min_types ( const Givaro::Integer &  k)
inline

◆ unfit() [1/4]

template<class T >
bool unfit ( x)
inline

◆ unfit() [2/4]

template<>
bool unfit ( int64_t  x)
inline

◆ unfit() [3/4]

template<size_t K>
bool unfit ( RecInt::rint< K >  x)
inline

◆ unfit() [4/4]

template<>
bool unfit ( RecInt::rint< 6 >  x)
inline

◆ igemm_colmajor() [1/2]

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 
)

◆ igemm_colmajor() [2/2]

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 
)

◆ igemm()

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.

◆ MatF2MatD_Triangular()

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 
)

◆ MatF2MatFl_Triangular()

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 
)
Todo:

do finit(...,FFLAS_TRANS,FFLAS_DIAG)

do fconvert(...,FFLAS_TRANS,FFLAS_DIAG)