18 #ifndef _PLASMA_BULGE_H_
19 #define _PLASMA_BULGE_H_
28 inline static void findVTpos(
int N,
int NB,
int Vblksiz,
int sweep,
int st,
int *Vpos,
int *TAUpos,
int *Tpos,
int *myblkid);
29 inline static void findVTsiz(
int N,
int NB,
int Vblksiz,
int *blkcnt,
int *LDV);
30 inline static int plasma_ceildiv(
int a,
int b);
33 inline static int plasma_ceildiv(
int a,
int b)
35 double r = (double)a/(
double)b;
36 r = (r-(int)r)==0? (int)r:(
int)r+1;
42 inline static void findVTpos(
int N,
int NB,
int Vblksiz,
int sweep,
int st,
int *Vpos,
int *TAUpos,
int *Tpos,
int *myblkid)
44 int prevcolblknb, prevblkcnt, prevcolblkid;
45 int curcolblknb, nbprevcolblk, mastersweep;
52 nbprevcolblk = sweep/Vblksiz;
53 for (prevcolblkid = 0; prevcolblkid < nbprevcolblk; prevcolblkid++)
55 mastersweep = prevcolblkid * Vblksiz;
56 prevcolblknb = plasma_ceildiv((N-(mastersweep+2)),NB);
57 prevblkcnt = prevblkcnt + prevcolblknb;
59 curcolblknb = plasma_ceildiv((st-sweep),NB);
60 blkid = prevblkcnt + curcolblknb -1;
62 LDV = NB + Vblksiz -1;
65 *Vpos = blkid*Vblksiz*LDV + locj*LDV + locj;
66 *TAUpos = blkid*Vblksiz + locj;
67 *Tpos = blkid*Vblksiz*Vblksiz + locj*Vblksiz + locj;
72 inline static void findVTsiz(
int N,
int NB,
int Vblksiz,
int *blkcnt,
int *LDV)
75 int curcolblknb, mastersweep;
78 nbcolblk = plasma_ceildiv((N-1),Vblksiz);
79 for (colblk = 0; colblk<nbcolblk; colblk++)
81 mastersweep = colblk * Vblksiz;
82 curcolblknb = plasma_ceildiv((N-(mastersweep+2)),NB);
83 *blkcnt = *blkcnt + curcolblknb;