FflasFfpack
Data Structures | Namespaces | Macros | Typedefs | Functions | Variables
test-bini-p.C File Reference
#include "fflas-ffpack/utils/timer.h"
#include "fflas-ffpack/fflas/fflas.h"
#include "fflas-ffpack/fflas-ffpack-config.h"
#include "fflas-ffpack/utils/test-utils.h"
#include "assert.h"
#include "fflas-ffpack/utils/args-parser.h"
#include "fflas-ffpack/utils/flimits.h"
#include <givaro/udl.h>

Data Structures

struct  Packer< double, 2 >
 
struct  changeField< T >
 
struct  changeField< Modular< double > >
 
struct  changeField< ModularBalanced< double > >
 

Namespaces

namespace  FFLAS
 
namespace  FFLAS::Protected
 
namespace  FFLAS::Protected::Rec
 

Macros

#define NEWWINO
 
#define DIVIDE_INTO(x, y)   (((x) + (y) - 1)/(y))
 
#define TRE   (size_t)(__FFLASFFPACK_WINOTHRESHOLD)
 

Typedefs

typedef std::vector< Timer > time_v
 
typedef std::vector< int > int_v
 

Functions

template<class wide_T , class pack_T , int Nb>
void pack_word (pack_T *packed, const wide_T *words, int32_t stride, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void pack_word (double *packed, const wide_T *words, int32_t stride, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb>
void pack_word_part (pack_T *packed, int32_t nb, const wide_T *words, int32_t stride, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void pack_word_part (double *packed, int32_t nb, const wide_T *words, int32_t stride, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb>
void unpack_word (wide_T *words, int32_t stride, const pack_T *packed, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void unpack_word (wide_T *words, int32_t stride, const double *packed, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb>
void unpack_word_part (wide_T *words, int32_t stride, const pack_T *packed, int32_t nb, Packer< pack_T, Nb > &packer)
 
template<class wide_T >
void unpack_word_part (wide_T *words, int32_t stride, const double *packed, int32_t nb, Packer< double, 2 > &packer)
 
template<class wide_T , class pack_T , int Nb, bool row_packed>
void pack_matrix (pack_T *packed, int32_t row_p, int32_t col_p, int32_t ldm_p, const wide_T *elemts, int32_t row_e, int32_t col_e, int32_t ldm_e, Packer< pack_T, Nb > &packer)
 
template<class wide_T , class pack_T , int Nb, bool row_packed>
void unpack_matrix (wide_T *elemts, int32_t row_e, int32_t col_e, int32_t ldm_e, const pack_T *packed, int32_t row_p, int32_t col_p, int32_t ldm_p, Packer< pack_T, Nb > &packer)
 
template<class Field , bool left_compress>
void fgemm_compressed (const Field &F, int m, int n, int k, const typename Field::Element *A, int lda, const typename Field::Element *B, int ldb, typename Field::Element *C, int ldc)
 
template<class Field >
void finit_fuzzy (Field &F, size_t m, size_t n, double *C, size_t ldc)
 
void add (const size_t m, const size_t n, double a, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
void subadd (const size_t m, const size_t n, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
void negadd (const size_t m, const size_t n, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
void addsub (const size_t m, const size_t n, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc)
 
template<class Field >
void addscalinf (const Field &F, const size_t m, const size_t n, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void subscalinf (const Field &F, const size_t m, const size_t n, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void subscal (const Field &F, const size_t m, const size_t n, const double *D, const size_t ldd, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void addscal (const Field &F, const size_t m, const size_t n, const double *D, const size_t ldd, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
void subscalacc (const Field &F, const size_t m, const size_t n, const double *D, const size_t ldd, const double *B, const size_t ldb, double e, double *C, const size_t ldc)
 
template<class Field >
double * gemm_fflas (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, size_t lda, const double *B, size_t ldb, double *C, size_t ldc, int rec=0)
 
template<class Field >
double * gemm_bini_322_0 (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
template<class Field >
double * gemm_bini_322_mem (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
template<class Field >
double * gemm_bini_223_mem (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
template<class Field >
double * gemm_bini_322_2 (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
template<class Field >
double * gemm_bini_232_2 (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
template<class Field >
double * gemm_bini_232_3_acc (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
template<class Field >
double * gemm_bini_232_3 (const Field &F, const size_t m, const size_t n, const size_t k, const double *A, const size_t lda, const double *B, const size_t ldb, double *C, const size_t ldc, int rec, const double &epsilon)
 
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)
 
template<class Field >
void check_equal (const Field &F, int m, int n, typename Field::Element *D, int ldd, typename Field::Element *E, int lde, const char *nomalgo, const char *madescr, int &ok_p)
 
template<class Field >
void test_algos (const Field &F, int m, int n, int k, const typename Field::Element *A, int lda, const typename Field::Element *B, int ldb, int r, time_v &tim_k, time_v &tim_e, time_v &tim_p, int_v &ok_k, int_v &ok_e, int_v &ok_p, FFLAS::Timer &tim_wd, int &nb_wd, bool with_e, bool with_k)
 
double descrip (int algo, int_v &ok_e, time_v &tim_e, int iters, const char **madescr, const char *nom)
 
template<class Field >
void test (int m, int k, int n, int p, int r, bool with_e, bool with_k, int iters=4, uint64_t seed=0)
 
int main (int ac, char **av)
 

Variables

const int algos = 6
 
const int algos_k = 2
 
const int selec []
 
const int selec_k []
 
const char * descr []
 
const char * descr_k []
 

Macro Definition Documentation

◆ NEWWINO

#define NEWWINO

◆ DIVIDE_INTO

#define DIVIDE_INTO (   x,
 
)    (((x) + (y) - 1)/(y))

◆ TRE

#define TRE   (size_t)(__FFLASFFPACK_WINOTHRESHOLD)

Typedef Documentation

◆ time_v

typedef std::vector<Timer> time_v

◆ int_v

typedef std::vector<int> int_v

Function Documentation

◆ check_equal()

void check_equal ( const Field F,
int  m,
int  n,
typename Field::Element *  D,
int  ldd,
typename Field::Element *  E,
int  lde,
const char *  nomalgo,
const char *  madescr,
int &  ok_p 
)

◆ test_algos()

void test_algos ( const Field F,
int  m,
int  n,
int  k,
const typename Field::Element *  A,
int  lda,
const typename Field::Element *  B,
int  ldb,
int  r,
time_v tim_k,
time_v tim_e,
time_v tim_p,
int_v ok_k,
int_v ok_e,
int_v ok_p,
FFLAS::Timer tim_wd,
int &  nb_wd,
bool  with_e,
bool  with_k 
)

◆ descrip()

double descrip ( int  algo,
int_v ok_e,
time_v tim_e,
int  iters,
const char **  madescr,
const char *  nom 
)

◆ test()

void test ( int  m,
int  k,
int  n,
int  p,
int  r,
bool  with_e,
bool  with_k,
int  iters = 4,
uint64_t  seed = 0 
)

◆ main()

int main ( int  ac,
char **  av 
)

Variable Documentation

◆ algos

const int algos = 6

◆ algos_k

const int algos_k = 2

◆ selec

const int selec[]
Initial value:
= {
0
,1
,2
,3
,4
,5
}

◆ selec_k

const int selec_k[]
Initial value:
= {
0
,1
}

◆ descr

const char* descr[]
Initial value:
= {
"322 low mem"
, "322 first 1"
, "322 4 tmp "
, "223 low mem"
, "232 first 1"
, "232 all tmp"
, "comp left "
, "comp right "
}

◆ descr_k

const char* descr_k[]
Initial value:
= {
"comp left "
, "comp right "
}