23 #define DEP(m) &(DEP[m])
24 #define A(_m, _n) (double *)plasma_geteltaddr(&A, (_m), (_n), eltsize)
36 static double zone = (double) 1.0;
37 static double dzero = (double) 0.0;
43 int N, NB, INgrsiz, INthgrsiz, BAND;
44 int myid, grsiz, shift=3, stt, st, ed, stind, edind;
45 int blklastind, colpt, PCOL, ACOL, MCOL;
46 int stepercol, mylastid, grnb, grid;
49 int thgrsiz, thgrnb, thgrid, thed;
67 memset(D, 0, N*
sizeof(
double));
68 memset(E, 0, (N-1)*
sizeof(
double));
101 memset(D, 0, N *
sizeof(
double));
102 memset(E, 0, (N-1)*
sizeof(
double));
110 absztmp = fabs(ztmp);
111 *
A((i+1),i) = absztmp;
114 ztmp = (double) (ztmp / absztmp);
117 if(i<(N-2)) *
A((i+2),(i+1)) = *
A((i+2),(i+1)) * ztmp;
127 absztmp = fabs(ztmp);
128 *
A(i,(i+1)) = absztmp;
131 ztmp = (double) (ztmp / absztmp);
134 if(i<(N-2)) *
A((i+1),(i+2)) = *
A((i+1),(i+2)) * ztmp;
141 for (i=0; i < N-1; i++) {
147 for (i=0; i < N-1; i++) {
161 int info, ldwork = N*N;
165 info = LAPACKE_dsytrd_work(LAPACK_COL_MAJOR,
lapack_const(uplo), N,
166 A(0,0), A.
lm, D, E, TTau, work, ldwork);
182 memset(MAXID,0,(N+1)*
sizeof(
int));
195 else if( NB > 100 ) {
208 if( grsiz == 0 ) grsiz = 6;
209 if( thgrsiz == 0 ) thgrsiz = N;
212 stepercol = i*grsiz == shift ? i:i+1;
215 thgrnb = i*thgrsiz == (N-2) ? i:i+1;
217 for (thgrid = 1; thgrid<=thgrnb; thgrid++){
218 stt = (thgrid-1)*thgrsiz+1;
219 thed =
min( (stt + thgrsiz -1), (N-2));
220 for (i = stt; i <= N-2; i++){
223 for (m = 1; m <=stepercol; m++){
225 for (j = st; j <=ed; j++){
229 myid = (i-j)*(stepercol*grsiz) +(m-1)*grsiz + 1;
230 mylastid = myid+grsiz-1;
231 PCOL = mylastid+shift-1;
233 PCOL =
min(PCOL,MAXID[j-1]);
235 grid = grnb*grsiz == PCOL ? grnb:grnb+1;
236 PCOL = (grid-1)*grsiz +1;
242 plasma->
quark, &task_flags,
244 &A, C, S, i, j, m, grsiz, BAND,
245 DEP(PCOL),
DEP(ACOL),
DEP(MCOL) );
248 blklastind = (mylastid/2)*NB+1+j-1;
250 colpt = ((mylastid+1)/2)*NB + 1 +j -1 ;
252 edind =
min(colpt,N);
253 if( (stind>=edind-1) && (edind==N) )
258 if(blklastind >= (N-1)) stt=stt+1;
280 memset(D, 0, N *
sizeof(
double));
281 memset(E, 0, (N-1)*
sizeof(
double));
296 for (i=0; i < N-1 ; i++)
307 E[i] = fabs( *
A(i+1, i));
311 for (i=0; i<N-1; i++)
320 E[i] = (*
A(i, (i+1)));
322 E[i] = fabs(*
A(i, (i+1)));
328 for (i=0; i < N-1; i++) {
334 for (i=0; i < N-1; i++) {