PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
time_cgetrf_incpiv_tile.c
Go to the documentation of this file.
1 
6 #define _TYPE PLASMA_Complex32_t
7 #define _PREC float
8 #define _LAMCH LAPACKE_slamch_work
9 
10 #define _NAME "PLASMA_cgetrf_incpiv_Tile"
11 /* See Lawn 41 page 120 */
12 #define _FMULS FMULS_GETRF(M, N)
13 #define _FADDS FADDS_GETRF(M, N)
14 
15 #include "./timing.c"
16 
17 static int
18 RunTest(int *iparam, float *dparam, real_Double_t *t_)
19 {
20  PLASMA_desc *descL;
21  int *piv;
22  PASTE_CODE_IPARAM_LOCALS( iparam );
23 
24  if ( M != N && check ) {
25  fprintf(stderr, "Check cannot be perfomed with M != N\n");
26  check = 0;
27  }
28 
29  /* Allocate Data */
31 
32  PLASMA_cplrnt_Tile(descA, 3456);
33 
34  /* Allocate Workspace */
36 
37  /* Save AT in lapack layout for check */
38  PASTE_TILE_TO_LAPACK( descA, A, check, PLASMA_Complex32_t, LDA, N );
39 
40  START_TIMING();
41  PLASMA_cgetrf_incpiv_Tile( descA, descL, piv );
42  STOP_TIMING();
43 
44  /* Check the solution */
45  if ( check )
46  {
48  PLASMA_cplrnt_Tile( descB, 7732 );
49  PASTE_TILE_TO_LAPACK( descB, b, check, PLASMA_Complex32_t, LDB, NRHS );
50 
51  PLASMA_cgetrs_incpiv_Tile( descA, descL, piv, descB );
52 
53  PASTE_TILE_TO_LAPACK( descB, x, check, PLASMA_Complex32_t, LDB, NRHS );
54  dparam[IPARAM_RES] = c_check_solution(M, N, NRHS, A, LDA, b, x, LDB,
55  &(dparam[IPARAM_ANORM]),
56  &(dparam[IPARAM_BNORM]),
57  &(dparam[IPARAM_XNORM]));
58 
59  PASTE_CODE_FREE_MATRIX( descB );
60  free(A); free(b); free(x);
61  }
62 
63  /* Deallocate Workspace */
65 
66  PASTE_CODE_FREE_MATRIX( descA );
67  free( piv );
68 
69  return 0;
70 }