MAGMA  magma-1.4.0
Matrix Algebra on GPU and Multicore Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
auxiliary.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  magma_timestr_s
 

Typedefs

typedef struct magma_timestr_s magma_timestr_t
 

Functions

int magma_get_spotrf_nb (int m)
 
int magma_get_sgeqrf_nb (int m)
 
int magma_get_sgeqlf_nb (int m)
 
int magma_get_sgetrf_nb (int m)
 
int magma_get_sgehrd_nb (int m)
 
int magma_get_ssytrd_nb (int m)
 
int magma_get_sgelqf_nb (int m)
 
int magma_get_sgebrd_nb (int m)
 
int magma_get_ssygst_nb (int m)
 
int magma_get_dpotrf_nb (int m)
 
int magma_get_dgeqrf_nb (int m)
 
int magma_get_dgeqlf_nb (int m)
 
int magma_get_dgetrf_nb (int m)
 
int magma_get_dgehrd_nb (int m)
 
int magma_get_dsytrd_nb (int m)
 
int magma_get_dgelqf_nb (int m)
 
int magma_get_dgebrd_nb (int m)
 
int magma_get_dsygst_nb (int m)
 
int magma_get_cpotrf_nb (int m)
 
int magma_get_cgetrf_nb (int m)
 
int magma_get_cgeqrf_nb (int m)
 
int magma_get_cgeqlf_nb (int m)
 
int magma_get_cgehrd_nb (int m)
 
int magma_get_chetrd_nb (int m)
 
int magma_get_cgelqf_nb (int m)
 
int magma_get_cgebrd_nb (int m)
 
int magma_get_chegst_nb (int m)
 
int magma_get_zpotrf_nb (int m)
 
int magma_get_zgetrf_nb (int m)
 
int magma_get_zgeqrf_nb (int m)
 
int magma_get_zgeqlf_nb (int m)
 
int magma_get_zgehrd_nb (int m)
 
int magma_get_zhetrd_nb (int m)
 
int magma_get_zgelqf_nb (int m)
 
int magma_get_zgebrd_nb (int m)
 
int magma_get_zhegst_nb (int m)
 
magma_timestr_t get_current_time (void)
 
double GetTimerValue (magma_timestr_t time_1, magma_timestr_t time_2)
 
void printout_devices ()
 
void spanel_to_q (char uplo, int ib, float *a, int lda, float *work)
 
void sq_to_panel (char uplo, int ib, float *a, int lda, float *work)
 
void swp2pswp (char trans, int n, int *ipiv, int *newipiv)
 
void cpanel_to_q (char uplo, int ib, cuFloatComplex *a, int lda, cuFloatComplex *work)
 
void cq_to_panel (char uplo, int ib, cuFloatComplex *a, int lda, cuFloatComplex *work)
 
void dpanel_to_q (char uplo, int ib, double *a, int lda, double *work)
 
void dq_to_panel (char uplo, int ib, double *a, int lda, double *work)
 
void zpanel_to_q (char uplo, int ib, cuDoubleComplex *a, int lda, cuDoubleComplex *work)
 
void zq_to_panel (char uplo, int ib, cuDoubleComplex *a, int lda, cuDoubleComplex *work)
 
float getv (float *da)
 

Typedef Documentation

Function Documentation

void cpanel_to_q ( char  uplo,
int  ib,
cuFloatComplex *  a,
int  lda,
cuFloatComplex *  work 
)
void cq_to_panel ( char  uplo,
int  ib,
cuFloatComplex *  a,
int  lda,
cuFloatComplex *  work 
)
void dpanel_to_q ( char  uplo,
int  ib,
double *  a,
int  lda,
double *  work 
)

Definition at line 17 of file dpanel_to_q.cpp.

18 {
19  int i, j, k = 0;
20  double *col;
21  double c_zero = MAGMA_D_ZERO;
22  double c_one = MAGMA_D_ONE;
23 
24  if (uplo == 'U' || uplo == 'u'){
25  for(i = 0; i < ib; ++i){
26  col = A + i*lda;
27  for(j = 0; j < i; ++j){
28  work[k] = col[j];
29  col [j] = c_zero;
30  ++k;
31  }
32 
33  work[k] = col[i];
34  col [j] = c_one;
35  ++k;
36  }
37  }
38  else {
39  for(i=0; i<ib; ++i){
40  col = A + i*lda;
41  work[k] = col[i];
42  col [i] = c_one;
43  ++k;
44  for(j=i+1; j<ib; ++j){
45  work[k] = col[j];
46  col [j] = c_zero;
47  ++k;
48  }
49  }
50  }
51 }
#define MAGMA_D_ONE
Definition: magma.h:176
#define A(i, j)
Definition: cprint.cpp:16
#define MAGMA_D_ZERO
Definition: magma.h:175
void dq_to_panel ( char  uplo,
int  ib,
double *  a,
int  lda,
double *  work 
)

Definition at line 57 of file dpanel_to_q.cpp.

58 {
59  int i, j, k = 0;
60  double *col;
61 
62  if (uplo == 'U' || uplo == 'u'){
63  for(i = 0; i < ib; ++i){
64  col = A + i*lda;
65  for(j = 0; j <= i; ++j){
66  col[j] = work[k];
67  ++k;
68  }
69  }
70  }
71  else {
72  for(i = 0; i < ib; ++i){
73  col = A + i*lda;
74  for(j = i; j < ib; ++j){
75  col[j] = work[k];
76  ++k;
77  }
78  }
79  }
80 }
#define A(i, j)
Definition: cprint.cpp:16
magma_timestr_t get_current_time ( void  )

Definition at line 76 of file timer.cpp.

77 {
78  struct timeval time_val;
79  magma_timestr_t time;
80 
81  cudaDeviceSynchronize();
82  gettimeofday(&time_val, NULL);
83 
84  time.sec = time_val.tv_sec;
85  time.usec = time_val.tv_usec;
86  return (time);
87 }
double GetTimerValue ( magma_timestr_t  time_1,
magma_timestr_t  time_2 
)

Definition at line 94 of file timer.cpp.

95 {
96  int sec, usec;
97 
98  sec = end.sec - start.sec;
99  usec = end.usec - start.usec;
100 
101  return (1000.*(double)(sec) + (double)(usec) * 0.001);
102 }
float getv ( float *  da)

Definition at line 498 of file auxiliary.cpp.

498  {
499  float res[1];
500  cublasGetVector(1, sizeof(float), da, 1, res, 1);
501  return res[0];
502 }
int magma_get_cgebrd_nb ( int  m)

Definition at line 473 of file get_nb.cpp.

474 {
476  if ( arch >= 200 ) { // 2.x Fermi
477  return 32;
478  //if (m < 1024)
479  // return 64;
480  //else
481  // return 64;
482  }
483  else { // 1.x
484  return 32;
485  }
486 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_cgehrd_nb ( int  m)

Definition at line 361 of file get_nb.cpp.

362 {
363  if (m < 1024) return 32;
364  else return 64;
365 }
int magma_get_cgelqf_nb ( int  m)

Definition at line 250 of file get_nb.cpp.

251 {
252  if (m < 2048) return 32;
253  else if (m < 4032) return 64;
254  else return 128;
255 }
int magma_get_cgeqlf_nb ( int  m)

Definition at line 216 of file get_nb.cpp.

217 {
218  if (m < 2048) return 32;
219  else if (m < 4032) return 64;
220  else return 128;
221 }
int magma_get_cgeqrf_nb ( int  m)

Definition at line 155 of file get_nb.cpp.

156 {
158  if ( arch >= 300 ) { // 3.x Kepler
159  if (m < 4096) return 64;
160  else return 128;
161  }
162  else { // 1.x and 2.x Fermi
163  if (m < 2048) return 32;
164  else if (m < 4096) return 64;
165  else return 128;
166  }
167 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_cgetrf_nb ( int  m)

Definition at line 304 of file get_nb.cpp.

305 {
307  if ( arch >= 300 ) { // 3.x Kepler
308  if (m < 4096) return 64;
309  else if (m < 8192) return 256;
310  else return 512;
311  }
312  else if ( arch >= 200 ) { // 2.x Fermi
313  if (m < 2048) return 64;
314  else return 128;
315  }
316  else { // 1.x
317  if (m < 2048) return 64;
318  else return 128;
319  }
320 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_chegst_nb ( int  m)

Definition at line 537 of file get_nb.cpp.

538 {
540  if ( arch >= 300 ) { // 3.x Kepler
541  if (m < 2048) return 384;
542  else return 768;
543  }
544  else if ( arch >= 200 ) { // 2.x Fermi
545  return 512;
546  }
547  else { // 1.x
548  return 64;
549  }
550 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_chetrd_nb ( int  m)

Definition at line 408 of file get_nb.cpp.

409 {
411  if ( arch >= 200 ) { // 2.x Fermi
412  return 32;
413  //if (m < 1024)
414  // return 64;
415  //else
416  // return 64;
417  }
418  else { // 1.x
419  return 32;
420  }
421 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_cpotrf_nb ( int  m)

Definition at line 64 of file get_nb.cpp.

65 {
67  if ( arch >= 300 ) { // 3.x Kepler
68  return 256;
69  }
70  else if ( arch >= 200 ) { // 2.x Fermi
71  if (m < 1500) return 192;
72  else return 256;
73  }
74  else { // 1.x
75  return 64;
76  }
77 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_dgebrd_nb ( int  m)

Definition at line 458 of file get_nb.cpp.

459 {
461  if ( arch >= 200 ) { // 2.x Fermi
462  return 32;
463  //if (m < 1024)
464  // return 64;
465  //else
466  // return 64;
467  }
468  else { // 1.x
469  return 32;
470  }
471 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_dgehrd_nb ( int  m)

Definition at line 355 of file get_nb.cpp.

356 {
357  if (m < 2048) return 32;
358  else return 64;
359 }
int magma_get_dgelqf_nb ( int  m)

Definition at line 237 of file get_nb.cpp.

238 {
240  if ( arch >= 200 ) { // 2.x Fermi
241  return magma_get_dgeqrf_nb( m );
242  }
243  else { // 1.x
244  if (m < 2048) return 32;
245  else if (m < 4032) return 64;
246  else return 128;
247  }
248 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_get_dgeqrf_nb(magma_int_t m)
Definition: get_nb.cpp:141
magma_int_t magma_getdevice_arch()
int magma_get_dgeqlf_nb ( int  m)

Definition at line 203 of file get_nb.cpp.

204 {
206  if ( arch >= 200 ) { // 2.x Fermi
207  return magma_get_dgeqrf_nb( m );
208  }
209  else { // 1.x
210  if (m < 1024) return 32;
211  else if (m < 4032) return 64;
212  else return 128;
213  }
214 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_get_dgeqrf_nb(magma_int_t m)
Definition: get_nb.cpp:141
magma_int_t magma_getdevice_arch()
int magma_get_dgeqrf_nb ( int  m)

Definition at line 141 of file get_nb.cpp.

142 {
144  if ( arch >= 300 ) { // 3.x Kepler
145  if (m < 3072) return 64;
146  else if (m < 10240) return 128;
147  else return 256;
148  }
149  else { // 1.x and 2.x Fermi
150  if (m < 4096) return 64;
151  else return 128;
152  }
153 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_dgetrf_nb ( int  m)

Definition at line 285 of file get_nb.cpp.

286 {
288  if ( arch >= 300 ) { // 3.x Kepler
289  if (m < 3072) return 128;
290  else if (m < 8192) return 256;
291  else return 512;
292  }
293  else if ( arch >= 200 ) { // 2.x Fermi
294  if (m < 3072) return 128;
295  else if (m < 10240) return 256;
296  else return 512;
297  }
298  else { // 1.x
299  if (m < 2048) return 64;
300  else return 128;
301  }
302 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_dpotrf_nb ( int  m)

Definition at line 47 of file get_nb.cpp.

48 {
50  if ( arch >= 300 ) { // 3.x Kepler
51  if (m < 3072) return 256;
52  else return 512;
53  }
54  else if ( arch >= 200 ) { // 2.x Fermi
55  return 256;
56  }
57  else { // 1.x
58  if (m < 3328) return 128;
59  else if (m < 4256) return 128;
60  else return 256;
61  }
62 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_dsygst_nb ( int  m)

Definition at line 522 of file get_nb.cpp.

523 {
525  if ( arch >= 300 ) { // 3.x Kepler
526  if (m < 2048) return 384;
527  else return 768;
528  }
529  else if ( arch >= 200 ) { // 2.x Fermi
530  return 512;
531  }
532  else { // 1.x
533  return 64;
534  }
535 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_dsytrd_nb ( int  m)

Definition at line 391 of file get_nb.cpp.

392 {
394  if ( arch >= 200 ) { // 2.x Fermi
395  return 32;
396  //return 64;
397  //if (m < 1024)
398  // return 64;
399  //else
400  // return 64;
401  }
402  else { // 1.x
403  return 32;
404  //return 64;
405  }
406 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_sgebrd_nb ( int  m)

Definition at line 443 of file get_nb.cpp.

444 {
446  if ( arch >= 200 ) { // 2.x Fermi
447  return 32;
448  //if (m < 1024)
449  // return 64;
450  //else
451  // return 64;
452  }
453  else { // 1.x
454  return 32;
455  }
456 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_sgehrd_nb ( int  m)

Definition at line 342 of file get_nb.cpp.

343 {
345  if ( arch >= 200 ) { // 2.x Fermi
346  if (m < 1024) return 32;
347  else return 96;
348  }
349  else { // 1.x
350  if (m < 1024) return 32;
351  else return 64;
352  }
353 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_sgelqf_nb ( int  m)

Definition at line 232 of file get_nb.cpp.

233 {
234  return magma_get_sgeqrf_nb( m );
235 }
magma_int_t magma_get_sgeqrf_nb(magma_int_t m)
Definition: get_nb.cpp:120
int magma_get_sgeqlf_nb ( int  m)

Definition at line 190 of file get_nb.cpp.

191 {
193  if ( arch >= 200 ) { // 2.x Fermi
194  return magma_get_sgeqrf_nb( m );
195  }
196  else { // 1.x
197  if (m < 1024) return 32;
198  else if (m < 4032) return 64;
199  else return 128;
200  }
201 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_get_sgeqrf_nb(magma_int_t m)
Definition: get_nb.cpp:120
magma_int_t magma_getdevice_arch()
int magma_get_sgeqrf_nb ( int  m)

Definition at line 120 of file get_nb.cpp.

121 {
123  if ( arch >= 300 ) { // 3.x Kepler
124  if (m < 4096) return 96;
125  else if (m < 7168) return 128;
126  else if (m < 18432) return 256;
127  else return 512;
128  }
129  else if ( arch >= 200 ) { // 2.x Fermi
130  if (m < 3072) return 64;
131  else if (m < 8192) return 128;
132  else return 256;
133  }
134  else { // 1.x
135  if (m < 2048) return 32;
136  else if (m < 4096) return 64;
137  else return 128;
138  }
139 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_sgetrf_nb ( int  m)

Definition at line 266 of file get_nb.cpp.

267 {
269  if ( arch >= 300 ) { // 3.x Kepler
270  if (m < 4096) return 256;
271  else if (m < 18432) return 512;
272  else return 1024;
273  }
274  else if ( arch >= 200 ) { // 2.x Fermi
275  if (m < 3072) return 128;
276  else if (m < 10240) return 256;
277  else return 512;
278  }
279  else { // 1.x
280  if (m < 2048) return 64;
281  else return 128;
282  }
283 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_spotrf_nb ( int  m)

Definition at line 29 of file get_nb.cpp.

30 {
32  if ( arch >= 300 ) { // 3.x Kepler
33  if (m < 1500) return 256;
34  else return 512;
35  }
36  else if ( arch >= 200 ) { // 2.x Fermi
37  if (m < 2048) return 256;
38  else return 512;
39  }
40  else { // 1.x
41  if (m < 3328) return 128;
42  else if (m < 4256) return 224;
43  else return 288;
44  }
45 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_ssygst_nb ( int  m)

Definition at line 506 of file get_nb.cpp.

507 {
509  if ( arch >= 300 ) { // 3.x Kepler
510  if (m < 4096) return 768;
511  else return 1536;
512  }
513  else if ( arch >= 200 ) { // 2.x Fermi
514  if (m < 2048) return 512;
515  else return 1024;
516  }
517  else { // 1.x
518  return 64;
519  }
520 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_ssytrd_nb ( int  m)

Definition at line 376 of file get_nb.cpp.

377 {
379  if ( arch >= 200 ) { // 2.x Fermi
380  return 32;
381  //if (m < 1024)
382  // return 64;
383  //else
384  // return 64;
385  }
386  else { // 1.x
387  return 32;
388  }
389 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_zgebrd_nb ( int  m)

Definition at line 488 of file get_nb.cpp.

489 {
491  if ( arch >= 200 ) { // 2.x Fermi
492  return 32;
493  //if (m < 1024)
494  // return 64;
495  //else
496  // return 64;
497  }
498  else { // 1.x
499  return 32;
500  }
501 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_zgehrd_nb ( int  m)

Definition at line 367 of file get_nb.cpp.

368 {
369  if (m < 2048) return 32;
370  else return 64;
371 }
int magma_get_zgelqf_nb ( int  m)

Definition at line 257 of file get_nb.cpp.

258 {
259  if (m < 1024) return 64;
260  else return 128;
261 }
int magma_get_zgeqlf_nb ( int  m)

Definition at line 223 of file get_nb.cpp.

224 {
225  if (m < 1024) return 64;
226  else return 128;
227 }
int magma_get_zgeqrf_nb ( int  m)

Definition at line 169 of file get_nb.cpp.

170 {
172  if ( arch >= 300 ) { // 3.x Kepler
173  if (m < 4096) return 64;
174  else return 128;
175  }
176  else if ( arch >= 200 ) { // 2.x Fermi
177  if (m < 2048) return 32;
178  else if (m < 4096) return 64;
179  else return 128;
180  }
181  else { // 1.x
182  if (m < 1024) return 64;
183  else return 128;
184  }
185 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_zgetrf_nb ( int  m)

Definition at line 322 of file get_nb.cpp.

323 {
325  if ( arch >= 300 ) { // 3.x Kepler
326  if (m < 4096) return 64;
327  else if (m < 8192) return 256;
328  else return 512;
329  }
330  else if ( arch >= 200 ) { // 2.x Fermi
331  if (m < 4096) return 64;
332  else return 128;
333  }
334  else { // 1.x
335  return 128;
336  }
337 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_zhegst_nb ( int  m)

Definition at line 552 of file get_nb.cpp.

553 {
555  if ( arch >= 300 ) { // 3.x Kepler
556  return 384;
557  }
558  else if ( arch >= 200 ) { // 2.x Fermi
559  return 256;
560  }
561  else { // 1.x
562  return 64;
563  }
564 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_zhetrd_nb ( int  m)

Definition at line 423 of file get_nb.cpp.

424 {
426  if ( arch >= 200 ) { // 2.x Fermi
427  return 32;
428  //return 64;
429  //if (m < 1024)
430  // return 64;
431  //else
432  // return 64;
433  }
434  else { // 1.x
435  return 32;
436  //return 64;
437  }
438 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
int magma_get_zpotrf_nb ( int  m)

Definition at line 79 of file get_nb.cpp.

80 {
82  if ( arch >= 300 ) { // 3.x Kepler
83  return 256;
84  }
85  else if ( arch >= 200 ) { // 2.x Fermi
86  if (m < 1500) return 192;
87  else return 256;
88  }
89  else { // 1.x
90  return 64;
91  }
92 }
int magma_int_t
Definition: magmablas.h:12
magma_int_t magma_getdevice_arch()
void printout_devices ( )

Definition at line 128 of file auxiliary.cpp.

References lapack_testing::f, and lapack_testing::name.

129 {
130  int ndevices;
131  cuDeviceGetCount( &ndevices );
132  for( int idevice = 0; idevice < ndevices; idevice++ )
133  {
134  char name[200];
135 #if CUDA_VERSION > 3010
136  size_t totalMem;
137 #else
138  unsigned int totalMem;
139 #endif
140 
141  int clock;
142  CUdevice dev;
143 
144  cuDeviceGet( &dev, idevice );
145  cuDeviceGetName( name, sizeof(name), dev );
146  cuDeviceTotalMem( &totalMem, dev );
147  cuDeviceGetAttribute( &clock,
148  CU_DEVICE_ATTRIBUTE_CLOCK_RATE, dev );
149  printf( "device %d: %s, %.1f MHz clock, %.1f MB memory\n",
150  idevice, name, clock/1000.f, totalMem/1024.f/1024.f );
151  }
152 }

Here is the caller graph for this function:

void spanel_to_q ( char  uplo,
int  ib,
float *  a,
int  lda,
float *  work 
)

Definition at line 17 of file spanel_to_q.cpp.

18 {
19  int i, j, k = 0;
20  float *col;
21  float c_zero = MAGMA_S_ZERO;
22  float c_one = MAGMA_S_ONE;
23 
24  if (uplo == 'U' || uplo == 'u'){
25  for(i = 0; i < ib; ++i){
26  col = A + i*lda;
27  for(j = 0; j < i; ++j){
28  work[k] = col[j];
29  col [j] = c_zero;
30  ++k;
31  }
32 
33  work[k] = col[i];
34  col [j] = c_one;
35  ++k;
36  }
37  }
38  else {
39  for(i=0; i<ib; ++i){
40  col = A + i*lda;
41  work[k] = col[i];
42  col [i] = c_one;
43  ++k;
44  for(j=i+1; j<ib; ++j){
45  work[k] = col[j];
46  col [j] = c_zero;
47  ++k;
48  }
49  }
50  }
51 }
#define MAGMA_S_ONE
Definition: magma.h:198
#define MAGMA_S_ZERO
Definition: magma.h:197
#define A(i, j)
Definition: cprint.cpp:16
void sq_to_panel ( char  uplo,
int  ib,
float *  a,
int  lda,
float *  work 
)

Definition at line 57 of file spanel_to_q.cpp.

58 {
59  int i, j, k = 0;
60  float *col;
61 
62  if (uplo == 'U' || uplo == 'u'){
63  for(i = 0; i < ib; ++i){
64  col = A + i*lda;
65  for(j = 0; j <= i; ++j){
66  col[j] = work[k];
67  ++k;
68  }
69  }
70  }
71  else {
72  for(i = 0; i < ib; ++i){
73  col = A + i*lda;
74  for(j = i; j < ib; ++j){
75  col[j] = work[k];
76  ++k;
77  }
78  }
79  }
80 }
#define A(i, j)
Definition: cprint.cpp:16
void swp2pswp ( char  trans,
int  n,
int *  ipiv,
int *  newipiv 
)

Definition at line 117 of file auxiliary.cpp.

118 {
119  magma_int_t i, newind, ind;
120  magma_int_t notran = (trans == 'N' || trans == 'n');
121 
122  for(i=0; i<n; i++)
123  newipiv[i] = -1;
124 
125  if (notran){
126  for(i=0; i<n; i++){
127  newind = ipiv[i] - 1;
128  if (newipiv[newind] == -1) {
129  if (newipiv[i]==-1){
130  newipiv[i] = newind;
131  if (newind>i)
132  newipiv[newind]= i;
133  }
134  else
135  {
136  ind = newipiv[i];
137  newipiv[i] = newind;
138  if (newind>i)
139  newipiv[newind]= ind;
140  }
141  }
142  else {
143  if (newipiv[i]==-1){
144  if (newind>i){
145  ind = newipiv[newind];
146  newipiv[newind] = i;
147  newipiv[i] = ind;
148  }
149  else
150  newipiv[i] = newipiv[newind];
151  }
152  else{
153  ind = newipiv[i];
154  newipiv[i] = newipiv[newind];
155  if (newind > i)
156  newipiv[newind] = ind;
157  }
158  }
159  }
160  } else {
161  for(i=n-1; i>=0; i--){
162  newind = ipiv[i] - 1;
163  if (newipiv[newind] == -1) {
164  if (newipiv[i]==-1){
165  newipiv[i] = newind;
166  if (newind>i)
167  newipiv[newind]= i;
168  }
169  else
170  {
171  ind = newipiv[i];
172  newipiv[i] = newind;
173  if (newind>i)
174  newipiv[newind]= ind;
175  }
176  }
177  else {
178  if (newipiv[i]==-1){
179  if (newind>i){
180  ind = newipiv[newind];
181  newipiv[newind] = i;
182  newipiv[i] = ind;
183  }
184  else
185  newipiv[i] = newipiv[newind];
186  }
187  else{
188  ind = newipiv[i];
189  newipiv[i] = newipiv[newind];
190  if (newind > i)
191  newipiv[newind] = ind;
192  }
193  }
194  }
195  }
196 }
int magma_int_t
Definition: magmablas.h:12
void zpanel_to_q ( char  uplo,
int  ib,
cuDoubleComplex *  a,
int  lda,
cuDoubleComplex *  work 
)

Definition at line 341 of file auxiliary.cpp.

341  {
342  int i, j, k = 0;
343  cuDoubleComplex *col;
344 
345  if (uplo == 'U' || uplo == 'u'){
346  for(i=0; i<ib; i++){
347  col = a + i*lda;
348  for(j=0; j<i; j++){
349  work[k ].x = col[j].x;
350  work[k++].y = col[j].y;
351  col[j].x = col[j].y = 0.;
352  }
353  work[k ].x = col[i].x;
354  work[k++].y = col[i].y;
355  col[j].x = 1.;
356  col[j].y = 0.;
357  }
358  }
359  else {
360  for(i=0; i<ib; i++){
361  col = a + i*lda;
362  work[k ].x = col[i].x;
363  work[k++].y = col[i].y;
364  col[i].x = 1.;
365  col[i].y = 0.;
366  for(j=i+1; j<ib; j++){
367  work[k ].x = col[j].x;
368  work[k++].y = col[j].y;
369  col[j].x = col[j].y = 0.;
370  }
371  }
372  }
373 }
void zq_to_panel ( char  uplo,
int  ib,
cuDoubleComplex *  a,
int  lda,
cuDoubleComplex *  work 
)

Definition at line 379 of file auxiliary.cpp.

379  {
380  int i, j, k = 0;
381  cuDoubleComplex *col;
382 
383  if (uplo == 'U' || uplo == 'u'){
384  for(i=0; i<ib; i++){
385  col = a + i*lda;
386  for(j=0; j<=i; j++){
387  col[j].x = work[k ].x;
388  col[j].y = work[k++].y;
389  }
390  }
391  }
392  else {
393  for(i=0; i<ib; i++){
394  col = a + i*lda;
395  for(j=i; j<ib; j++){
396  col[j].x = work[k ].x;
397  col[j].y = work[k++].y;
398  }
399  }
400  }
401 }