18 #include <cuda_runtime_api.h>
24 #include "magma_lapack.h"
30 #if defined(PRECISION_z) || defined(PRECISION_c)
31 #define FLOPS(n) ( 6. * FMULS_GEHRD(n) + 2. * FADDS_GEHRD(n))
33 #define FLOPS(n) ( FMULS_GEHRD(n) + FADDS_GEHRD(n))
39 int main(
int argc,
char** argv)
44 double eps, flops, gpu_perf, cpu_perf;
45 double *h_A, *h_R, *h_Q, *h_work, *tau, *twork, *
dT;
47 double result[2] = {0., 0.};
50 int N=0, n2, lda, nb, lwork, ltwork, once = 0;
51 int size[10] = {1024,2048,3072,4032,5184,6016,7040,8064,9088,10112};
53 int i, info, checkres;
55 int ISEED[4] = {0,0,0,1};
58 for(i = 1; i<argc; i++){
59 if (strcmp(
"-N", argv[i])==0)
63 printf(
" testing_dgehrd -N %d\n\n", N);
66 printf(
"\nUsage: \n");
67 printf(
" testing_dgehrd -N %d\n\n", 1024);
72 printf(
"\nUsage: \n");
73 printf(
" testing_dgehrd -N %d\n\n", 1024);
77 checkres = getenv(
"MAGMA_TESTINGS_CHECK") != NULL;
101 #if defined(PRECISION_z) || defined(PRECISION_c)
107 printf(
" N CPU GFlop/s GPU GFlop/s |A-QHQ'|/N|A| |I-QQ'|/N \n");
108 printf(
"=============================================================\n");
115 flops =
FLOPS( (
double)N ) / 1e6;
125 magma_dgehrd ( N, ione, N, h_R, lda, tau, h_work, lwork, dT, &info);
128 printf(
"Argument %d of magma_dgehrd had an illegal value\n", -info);
141 for(i=j+2; i<lda; i++)
147 #if defined(PRECISION_z) || defined(PRECISION_c)
149 h_A, &lda, h_R, &lda,
150 h_Q, &lda, twork, <work, rwork, result);
153 h_A, &lda, h_R, &lda,
154 h_Q, &lda, twork, <work, result);
165 printf(
"Argument %d of lapack_dgehrd had an illegal value.\n", -info);
173 printf(
"%5d %6.2f %6.2f %e %e\n",
174 N, cpu_perf, gpu_perf,
175 result[0]*eps, result[1]*eps );
177 printf(
"%5d %6.2f %6.2f\n",
178 N, cpu_perf, gpu_perf );
195 #if defined(PRECISION_z) || defined(PRECISION_c)