gkkleader.h 1.58 KB
Newer Older
1
/**
2 3
 *
 * @file gkkleader.h
4
 *
Mathieu Faverge's avatar
Mathieu Faverge committed
5 6
 * @copyright 2009-2014 The University of Tennessee and The University of
 *                      Tennessee Research Foundation. All rights reserved.
PRUVOST Florent's avatar
PRUVOST Florent committed
7
 * @copyright 2012-2019 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria,
8
 *                      Univ. Bordeaux. All rights reserved.
9
 *
10
 ***
11
 *
12
 * @brief Chameleon InPlaceTransformation main module header
PRUVOST Florent's avatar
PRUVOST Florent committed
13
 * @version 0.9.2
14
 * @author Mathieu Faverge
PRUVOST Florent's avatar
PRUVOST Florent committed
15
 * @date 2014-11-16
16
 *
17 18 19 20
 * This work is the implementation of an inplace transformation
 * based on the GKK algorithm by Gustavson, Karlsson, Kagstrom
 * and its fortran implementation.
 *
21
 */
Mathieu Faverge's avatar
Mathieu Faverge committed
22 23
#ifndef _gkkleader_h_
#define _gkkleader_h_
24 25 26 27 28

int  GKK_doublingtable(int x, int m, int emax, int *dt);
int  GKK_modpow(int *dt, int e, int m);
int  GKK_primroot(int p, int e, primedec_t *pr_p1, int t_p1);
int  GKK_multorder(int n, int p, int e, int pe, primedec_t *pr_p1, int t_p1);
29 30
void GKK_prepare(int q, int n, primedec_t *pr_q, int *t,
                 primedec_t **pr_pi1, int *t_pi1, int *gi,
31
                 int *Nif, int *Kif, int *dif);
32
void GKK_L(int t, primedec_t *pr_q, int *fi, int *Kif, int *dif,
33
           int *Li, int *diLi, int *cl, int *nl);
34
void GKK_precompute_terms(int q, primedec_t *pr_q, int t, int *gi,
35 36
                          int *diLi, int *rp, int *Mg, int nMg);
void GKK_BalanceLoad(int thrdnbr, int *Tp, int *leaders, int nleaders, int L);
37
void GKK_output_tables(int m, int n, int q, primedec_t *pr_q, int t,
38 39
                       int *gi, int *Nif, int *Kif, int *dif);

40 41
int  GKK_getLeaderNbr(int me, int ne, int *nleaders, int **leaders);

Mathieu Faverge's avatar
Mathieu Faverge committed
42
#endif /* _gkkleader_h_ */